1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-09-08 17:54:40 +00:00

Added a score renderer - and some fragments.

This commit is contained in:
jespergravgaard 2018-12-30 01:00:45 +01:00
parent 638ef22c63
commit 25d4c89445
12 changed files with 6941 additions and 6115 deletions

View File

@ -0,0 +1,5 @@
lda {z1}+1
bne !+
dec {z1}+1
!:
dec {z1}

View File

@ -0,0 +1,7 @@
lda {z2}
sec
sbc #1
sta {z1}
lda {z2}+1
sbc #0
sta {z1}+1

View File

@ -0,0 +1,7 @@
lda {c1},x
clc
adc #{c2}
sta {z1}
lda {c1}+1,x
adc #0
sta {z1}+1

View File

@ -0,0 +1,7 @@
lda {c1},y
clc
adc #{c2}
sta {z1}
lda {c1}+1,y
adc #0
sta {z1}+1

View File

@ -54,7 +54,6 @@ public class TestPrograms {
compileAndCompare("examples/tetris/tetris");
}
@Test
public void testClobberAProblem() throws IOException, URISyntaxException {
compileAndCompare("clobber-a-problem");

View File

@ -75,6 +75,25 @@ void render_screen_swap() {
render_screen_show ^= $40;
}
// Show the current score
void render_score() {
const byte ZERO_CHAR = 51;
byte SCREEN_SCORE_ROW = $05;
byte SCREEN_SCORE_COL = $1d;
byte* screen_score_pos;
if(render_screen_render==0) {
screen_score_pos = PLAYFIELD_SCREEN_1 + 40*SCREEN_SCORE_ROW + SCREEN_SCORE_COL;
} else {
screen_score_pos = PLAYFIELD_SCREEN_2 + 40*SCREEN_SCORE_ROW + SCREEN_SCORE_COL;
}
byte* score_bytes = (byte*)(&score_bcd);
for (byte b:0..2) {
byte score_byte = score_bytes[b];
*screen_score_pos-- = ZERO_CHAR + (score_byte & $0f);
*screen_score_pos-- = ZERO_CHAR + (score_byte>>4);
}
}
// Copy the original screen data to the passed screen
// Also copies colors to $d800
void render_screen_original(byte* screen) {

View File

@ -34,6 +34,7 @@ void main() {
if(render!=0) {
render_playfield();
render_current();
render_score();
render_screen_swap();
}
//*BORDERCOL = 0;

View File

@ -84,27 +84,27 @@
.label irq_cnt = $21
.label current_movedown_counter = 4
.label current_ypos = $e
.label score_bcd = $f
.label current_piece_gfx = $16
.label current_xpos = $18
.label current_piece_char = $19
.label current_orientation = $15
.label score_bcd = $f
.label render_screen_render = 3
.label render_screen_show = 2
.label current_piece = $13
.label current_piece_12 = 7
.label render_screen_render_28 = 5
.label current_xpos_47 = 6
.label current_piece_gfx_53 = 7
.label render_screen_render_62 = 5
.label current_xpos_111 = 6
.label current_xpos_112 = 6
.label current_piece_gfx_101 = 7
.label current_piece_gfx_102 = 7
.label current_piece_75 = 7
.label current_piece_76 = 7
.label current_piece_77 = 7
.label current_piece_78 = 7
.label current_piece_12 = 5
.label render_screen_render_30 = 7
.label current_xpos_47 = 8
.label current_piece_gfx_53 = 5
.label render_screen_render_64 = 7
.label current_xpos_112 = 8
.label current_xpos_113 = 8
.label current_piece_gfx_102 = 5
.label current_piece_gfx_103 = 5
.label current_piece_76 = 5
.label current_piece_77 = 5
.label current_piece_78 = 5
.label current_piece_79 = 5
bbegin:
lda #0
sta render_screen_showing
@ -131,14 +131,14 @@ main: {
jsr render_playfield
ldy current_ypos
lda current_xpos
sta current_xpos_111
sta current_xpos_112
lda current_piece_gfx
sta current_piece_gfx_101
sta current_piece_gfx_102
lda current_piece_gfx+1
sta current_piece_gfx_101+1
sta current_piece_gfx_102+1
ldx current_piece_char
lda #$40
sta render_screen_render_28
sta render_screen_render_30
jsr render_current
ldy play_spawn_current._3
lda PIECES,y
@ -185,15 +185,16 @@ main: {
jsr render_playfield
ldy current_ypos
lda render_screen_render
sta render_screen_render_62
sta render_screen_render_64
lda current_xpos
sta current_xpos_112
sta current_xpos_113
lda current_piece_gfx
sta current_piece_gfx_102
sta current_piece_gfx_103
lda current_piece_gfx+1
sta current_piece_gfx_102+1
sta current_piece_gfx_103+1
ldx current_piece_char
jsr render_current
jsr render_score
jsr render_screen_swap
jmp b4
}
@ -206,6 +207,61 @@ render_screen_swap: {
sta render_screen_show
rts
}
render_score: {
.const ZERO_CHAR = $33
.const SCREEN_SCORE_ROW = 5
.const SCREEN_SCORE_COL = $1d
.label score_bytes = score_bcd
.label score_byte = 7
.label screen_score_pos = 5
lda render_screen_render
cmp #0
beq b1
lda #<PLAYFIELD_SCREEN_2+$28*SCREEN_SCORE_ROW+SCREEN_SCORE_COL
sta screen_score_pos
lda #>PLAYFIELD_SCREEN_2+$28*SCREEN_SCORE_ROW+SCREEN_SCORE_COL
sta screen_score_pos+1
jmp b2
b1:
lda #<PLAYFIELD_SCREEN_1+$28*SCREEN_SCORE_ROW+SCREEN_SCORE_COL
sta screen_score_pos
lda #>PLAYFIELD_SCREEN_1+$28*SCREEN_SCORE_ROW+SCREEN_SCORE_COL
sta screen_score_pos+1
b2:
ldx #0
b3:
lda score_bytes,x
sta score_byte
lda #$f
and score_byte
clc
adc #ZERO_CHAR
ldy #0
sta (screen_score_pos),y
lda screen_score_pos
bne !+
dec screen_score_pos+1
!:
dec screen_score_pos
lda score_byte
lsr
lsr
lsr
lsr
clc
adc #ZERO_CHAR
ldy #0
sta (screen_score_pos),y
lda screen_score_pos
bne !+
dec screen_score_pos+1
!:
dec screen_score_pos
inx
cpx #3
bne b3
rts
}
render_current: {
.label ypos2 = 9
.label screen_line = $1b
@ -246,7 +302,7 @@ render_current: {
bcc b2
jmp b7
b2:
lda render_screen_render_28
lda render_screen_render_30
clc
adc ypos2
tay
@ -279,10 +335,10 @@ render_current: {
jmp b3
}
render_playfield: {
.label screen_line = 7
.label i = 6
.label screen_line = 5
.label i = 8
.label c = 9
.label l = 5
.label l = 7
lda #PLAYFIELD_COLS*2
sta i
lda #2
@ -321,7 +377,7 @@ render_playfield: {
rts
}
play_move_rotate: {
.label orientation = 5
.label orientation = 7
cmp #KEY_Z
beq b1
cmp #KEY_X
@ -342,9 +398,9 @@ play_move_rotate: {
ldy current_ypos
ldx orientation
lda current_piece
sta current_piece_78
sta current_piece_79
lda current_piece+1
sta current_piece_78+1
sta current_piece_79+1
jsr play_collision
cmp #COLLISION_NONE
bne b3
@ -367,8 +423,8 @@ play_move_rotate: {
jmp b4
}
play_collision: {
.label xpos = 6
.label piece_gfx = 7
.label xpos = 8
.label piece_gfx = 5
.label ypos2 = 9
.label playfield_line = $1b
.label i = $23
@ -469,9 +525,9 @@ play_move_leftright: {
ldy current_ypos
ldx current_orientation
lda current_piece
sta current_piece_77
sta current_piece_78
lda current_piece+1
sta current_piece_77+1
sta current_piece_78+1
jsr play_collision
cmp #COLLISION_NONE
bne b3
@ -490,9 +546,9 @@ play_move_leftright: {
ldy current_ypos
ldx current_orientation
lda current_piece
sta current_piece_76
sta current_piece_77
lda current_piece+1
sta current_piece_76+1
sta current_piece_77+1
jsr play_collision
cmp #COLLISION_NONE
bne b3
@ -531,9 +587,9 @@ play_move_down: {
sta play_collision.xpos
ldx current_orientation
lda current_piece
sta current_piece_75
sta current_piece_76
lda current_piece+1
sta current_piece_75+1
sta current_piece_76+1
jsr play_collision
cmp #COLLISION_NONE
beq b6
@ -628,9 +684,9 @@ play_update_score: {
}
play_remove_lines: {
.label c = $a
.label x = 6
.label x = 8
.label y = 4
.label removed = 5
.label removed = 7
.label full = 9
lda #0
sta removed
@ -683,14 +739,14 @@ play_remove_lines: {
}
play_lock_current: {
.label ypos2 = $e
.label playfield_line = 7
.label col = 6
.label playfield_line = 5
.label col = 8
.label i = 9
.label l = 4
.label i_2 = 5
.label i_3 = 5
.label i_7 = 5
.label i_9 = 5
.label i_2 = 7
.label i_3 = 7
.label i_7 = 7
.label i_9 = 7
asl ypos2
lda #0
sta l
@ -739,8 +795,8 @@ play_lock_current: {
jmp b2
}
keyboard_event_pressed: {
.label row_bits = 6
.label keycode = 5
.label row_bits = 8
.label keycode = 7
lda keycode
lsr
lsr
@ -770,8 +826,8 @@ keyboard_event_get: {
}
keyboard_event_scan: {
.label row_scan = 9
.label keycode = 6
.label row = 5
.label keycode = 8
.label row = 7
lda #0
sta keycode
sta row
@ -889,7 +945,7 @@ render_show: {
jmp b2
}
play_init: {
.label pli = 7
.label pli = 5
.label idx = 2
lda #0
sta idx
@ -981,7 +1037,7 @@ sprites_init: {
}
render_init: {
.const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_CHARSET)>>6
.label li_1 = 7
.label li_1 = 5
.label li_2 = $13
lda #3
sta CIA2_PORT_A_DDR
@ -1055,7 +1111,7 @@ render_screen_original: {
.const SPACE = 0
.label screen = $16
.label cols = $1b
.label oscr = 7
.label oscr = 5
.label ocols = $13
.label y = 2
lda #0

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) @20
(label) @21
(label) @33
(label) @22
(label) @34
(label) @35
(label) @begin
(label) @end
(byte*) BGCOL
@ -279,7 +279,7 @@
(byte) YELLOW
(byte) current_movedown_counter
(byte) current_movedown_counter#1 current_movedown_counter zp ZP_BYTE:4 0.5333333333333333
(byte) current_movedown_counter#10 current_movedown_counter zp ZP_BYTE:4 4.222222222222222
(byte) current_movedown_counter#10 current_movedown_counter zp ZP_BYTE:4 3.931034482758621
(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:4 10.363636363636363
(byte) current_movedown_fast
(const byte) current_movedown_fast#0 current_movedown_fast = (byte/signed byte/word/signed word/dword/signed dword) 5
@ -288,57 +288,57 @@
(byte) current_orientation
(byte) current_orientation#10 current_orientation zp ZP_BYTE:21 3.371428571428571
(byte) current_orientation#14 current_orientation zp ZP_BYTE:21 0.32653061224489793
(byte) current_orientation#19 current_orientation zp ZP_BYTE:21 6.941176470588235
(byte) current_orientation#19 current_orientation zp ZP_BYTE:21 6.210526315789475
(byte) current_orientation#29 current_orientation zp ZP_BYTE:21 4.0
(byte) current_orientation#4 current_orientation zp ZP_BYTE:21 3.0
(byte*) current_piece
(byte*) current_piece#10 current_piece zp ZP_WORD:19 1.8235294117647054
(byte*) current_piece#12 current_piece#12 zp ZP_WORD:7 10.0
(byte*) current_piece#10 current_piece zp ZP_WORD:19 1.771428571428571
(byte*) current_piece#12 current_piece#12 zp ZP_WORD:5 10.0
(byte*) current_piece#16 current_piece zp ZP_WORD:19 3.428571428571428
(byte*) current_piece#20 current_piece zp ZP_WORD:19 6.0
(byte*~) current_piece#72 current_piece zp ZP_WORD:19 4.0
(byte*~) current_piece#75 current_piece#75 zp ZP_WORD:7 4.0
(byte*~) current_piece#76 current_piece#76 zp ZP_WORD:7 4.0
(byte*~) current_piece#77 current_piece#77 zp ZP_WORD:7 4.0
(byte*~) current_piece#78 current_piece#78 zp ZP_WORD:7 4.0
(byte*~) current_piece#79 current_piece zp ZP_WORD:19 4.0
(byte*~) current_piece#73 current_piece zp ZP_WORD:19 4.0
(byte*~) current_piece#76 current_piece#76 zp ZP_WORD:5 4.0
(byte*~) current_piece#77 current_piece#77 zp ZP_WORD:5 4.0
(byte*~) current_piece#78 current_piece#78 zp ZP_WORD:5 4.0
(byte*~) current_piece#79 current_piece#79 zp ZP_WORD:5 4.0
(byte*~) current_piece#80 current_piece zp ZP_WORD:19 4.0
(byte) current_piece_char
(byte) current_piece_char#1 current_piece_char zp ZP_BYTE:25 4.703703703703704
(byte) current_piece_char#1 current_piece_char zp ZP_BYTE:25 4.379310344827585
(byte) current_piece_char#12 current_piece_char zp ZP_BYTE:25 0.6153846153846154
(byte) current_piece_char#15 current_piece_char zp ZP_BYTE:25 194.59615384615384
(byte) current_piece_char#20 current_piece_char zp ZP_BYTE:25 6.0
(byte) current_piece_char#64 reg byte x 46.09090909090909
(byte~) current_piece_char#89 reg byte x 4.0
(byte~) current_piece_char#90 reg byte x 22.0
(byte~) current_piece_char#90 reg byte x 4.0
(byte~) current_piece_char#91 reg byte x 22.0
(byte*) current_piece_gfx
(byte*) current_piece_gfx#1 current_piece_gfx zp ZP_WORD:22 0.2962962962962963
(byte*~) current_piece_gfx#101 current_piece_gfx#101 zp ZP_WORD:7 2.0
(byte*~) current_piece_gfx#102 current_piece_gfx#102 zp ZP_WORD:7 11.0
(byte*) current_piece_gfx#14 current_piece_gfx zp ZP_WORD:22 7.588235294117647
(byte*~) current_piece_gfx#102 current_piece_gfx#102 zp ZP_WORD:5 2.0
(byte*~) current_piece_gfx#103 current_piece_gfx#103 zp ZP_WORD:5 11.0
(byte*) current_piece_gfx#14 current_piece_gfx zp ZP_WORD:22 6.789473684210528
(byte*) current_piece_gfx#16 current_piece_gfx zp ZP_WORD:22 0.5
(byte*) current_piece_gfx#20 current_piece_gfx zp ZP_WORD:22 194.59615384615384
(byte*) current_piece_gfx#26 current_piece_gfx zp ZP_WORD:22 6.0
(byte*) current_piece_gfx#3 current_piece_gfx zp ZP_WORD:22 4.0
(byte*) current_piece_gfx#53 current_piece_gfx#53 zp ZP_WORD:7 46.09090909090909
(byte*) current_piece_gfx#53 current_piece_gfx#53 zp ZP_WORD:5 46.09090909090909
(byte) current_xpos
(byte) current_xpos#1 current_xpos zp ZP_BYTE:24 0.72
(byte) current_xpos#10 current_xpos zp ZP_BYTE:24 21.557692307692307
(byte~) current_xpos#111 current_xpos#111 zp ZP_BYTE:6 1.3333333333333333
(byte~) current_xpos#112 current_xpos#112 zp ZP_BYTE:6 7.333333333333333
(byte) current_xpos#19 current_xpos zp ZP_BYTE:24 3.2926829268292686
(byte~) current_xpos#112 current_xpos#112 zp ZP_BYTE:8 1.3333333333333333
(byte~) current_xpos#113 current_xpos#113 zp ZP_BYTE:8 7.333333333333333
(byte) current_xpos#19 current_xpos zp ZP_BYTE:24 3.139534883720931
(byte) current_xpos#2 current_xpos zp ZP_BYTE:24 4.0
(byte) current_xpos#23 current_xpos zp ZP_BYTE:24 0.5333333333333333
(byte) current_xpos#33 current_xpos zp ZP_BYTE:24 6.0
(byte) current_xpos#4 current_xpos zp ZP_BYTE:24 4.0
(byte) current_xpos#47 current_xpos#47 zp ZP_BYTE:6 5.181818181818182
(byte) current_xpos#47 current_xpos#47 zp ZP_BYTE:8 5.181818181818182
(byte) current_ypos
(byte) current_ypos#0 current_ypos zp ZP_BYTE:14 4.0
(byte) current_ypos#13 current_ypos zp ZP_BYTE:14 1.9558823529411762
(byte) current_ypos#13 current_ypos zp ZP_BYTE:14 1.8999999999999995
(byte) current_ypos#18 current_ypos zp ZP_BYTE:14 0.5714285714285714
(byte) current_ypos#21 current_ypos zp ZP_BYTE:14 3.485714285714285
(byte) current_ypos#29 current_ypos zp ZP_BYTE:14 6.0
(byte~) current_ypos#85 reg byte y 1.0
(byte~) current_ypos#86 reg byte y 4.4
(byte~) current_ypos#86 reg byte y 1.0
(byte~) current_ypos#87 reg byte y 4.4
(byte) current_ypos#9 reg byte y 15.0
(byte) irq_cnt
(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:33 0.19047619047619047
@ -370,7 +370,7 @@
(byte~) keyboard_event_pressed::$1 reg byte a 4.0
(label) keyboard_event_pressed::@return
(byte) keyboard_event_pressed::keycode
(byte) keyboard_event_pressed::keycode#5 keycode zp ZP_BYTE:5 1.3333333333333333
(byte) keyboard_event_pressed::keycode#5 keycode zp ZP_BYTE:7 1.3333333333333333
(byte) keyboard_event_pressed::return
(byte) keyboard_event_pressed::return#0 reg byte a 4.0
(byte) keyboard_event_pressed::return#1 reg byte a 4.0
@ -379,7 +379,7 @@
(byte) keyboard_event_pressed::return#12 reg byte a 4.0
(byte) keyboard_event_pressed::return#2 reg byte a 4.0
(byte) keyboard_event_pressed::row_bits
(byte) keyboard_event_pressed::row_bits#0 row_bits zp ZP_BYTE:6 2.0
(byte) keyboard_event_pressed::row_bits#0 row_bits zp ZP_BYTE:8 2.0
(void()) keyboard_event_scan()
(byte/word/dword~) keyboard_event_scan::$11 reg byte a 20002.0
(byte~) keyboard_event_scan::$14 reg byte a 4.0
@ -418,14 +418,14 @@
(byte) keyboard_event_scan::event_type
(byte) keyboard_event_scan::event_type#0 reg byte a 20002.0
(byte) keyboard_event_scan::keycode
(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:6 2002.0
(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:6 3154.230769230769
(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:6 500.5
(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:6 1001.0
(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:6 5250.75
(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:8 2002.0
(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:8 3154.230769230769
(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:8 500.5
(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:8 1001.0
(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:8 5250.75
(byte) keyboard_event_scan::row
(byte) keyboard_event_scan::row#1 row zp ZP_BYTE:5 1501.5
(byte) keyboard_event_scan::row#2 row zp ZP_BYTE:5 600.24
(byte) keyboard_event_scan::row#1 row zp ZP_BYTE:7 1501.5
(byte) keyboard_event_scan::row#2 row zp ZP_BYTE:7 600.24
(byte) keyboard_event_scan::row_scan
(byte) keyboard_event_scan::row_scan#0 row_scan zp ZP_BYTE:9 1278.0555555555554
(byte[8]) keyboard_events
@ -434,7 +434,7 @@
(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:26 20002.0
(byte) keyboard_events_size#10 keyboard_events_size zp ZP_BYTE:26 8100.9000000000015
(byte) keyboard_events_size#13 keyboard_events_size zp ZP_BYTE:26 97.06451612903226
(byte) keyboard_events_size#16 keyboard_events_size zp ZP_BYTE:26 3.741935483870968
(byte) keyboard_events_size#16 keyboard_events_size zp ZP_BYTE:26 3.515151515151515
(byte) keyboard_events_size#19 keyboard_events_size zp ZP_BYTE:26 18.999999999999996
(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:26 20002.0
(byte) keyboard_events_size#29 keyboard_events_size zp ZP_BYTE:26 429.2857142857143
@ -482,6 +482,7 @@
(label) main::@28
(label) main::@29
(label) main::@30
(label) main::@31
(label) main::@4
(label) main::@6
(byte) main::key_event
@ -526,7 +527,7 @@
(byte) play_collision::orientation#3 reg byte x 2.0
(byte) play_collision::orientation#4 reg byte x 10.0
(byte*) play_collision::piece_gfx
(byte*) play_collision::piece_gfx#0 piece_gfx zp ZP_WORD:7 476.3333333333333
(byte*) play_collision::piece_gfx#0 piece_gfx zp ZP_WORD:5 476.3333333333333
(byte*) play_collision::playfield_line
(byte*) play_collision::playfield_line#0 playfield_line zp ZP_WORD:27 785.8571428571429
(byte) play_collision::return
@ -536,11 +537,11 @@
(byte) play_collision::return#13 reg byte a 4.0
(byte) play_collision::return#14 reg byte a 1.3333333333333333
(byte) play_collision::xpos
(byte) play_collision::xpos#0 xpos zp ZP_BYTE:6 1.3333333333333333
(byte) play_collision::xpos#1 xpos zp ZP_BYTE:6 1.0
(byte) play_collision::xpos#2 xpos zp ZP_BYTE:6 1.0
(byte) play_collision::xpos#3 xpos zp ZP_BYTE:6 1.0
(byte) play_collision::xpos#5 xpos zp ZP_BYTE:6 45.86363636363637
(byte) play_collision::xpos#0 xpos zp ZP_BYTE:8 1.3333333333333333
(byte) play_collision::xpos#1 xpos zp ZP_BYTE:8 1.0
(byte) play_collision::xpos#2 xpos zp ZP_BYTE:8 1.0
(byte) play_collision::xpos#3 xpos zp ZP_BYTE:8 1.0
(byte) play_collision::xpos#5 xpos zp ZP_BYTE:8 45.86363636363637
(byte) play_collision::ypos
(byte) play_collision::ypos#0 reg byte y 1.0
(byte) play_collision::ypos#1 reg byte y 1.3333333333333333
@ -563,8 +564,8 @@
(byte) play_init::j#1 reg byte x 16.5
(byte) play_init::j#2 reg byte x 7.333333333333333
(byte*) play_init::pli
(byte*) play_init::pli#1 pli zp ZP_WORD:7 5.5
(byte*) play_init::pli#2 pli zp ZP_WORD:7 8.25
(byte*) play_init::pli#1 pli zp ZP_WORD:5 5.5
(byte*) play_init::pli#2 pli zp ZP_WORD:5 8.25
(void()) play_lock_current()
(label) play_lock_current::@1
(label) play_lock_current::@2
@ -578,20 +579,20 @@
(byte) play_lock_current::c#1 reg byte x 10001.0
(byte) play_lock_current::c#2 reg byte x 4000.4
(byte) play_lock_current::col
(byte) play_lock_current::col#0 col zp ZP_BYTE:6 2002.0
(byte) play_lock_current::col#1 col zp ZP_BYTE:6 5000.5
(byte) play_lock_current::col#2 col zp ZP_BYTE:6 7751.0
(byte) play_lock_current::col#0 col zp ZP_BYTE:8 2002.0
(byte) play_lock_current::col#1 col zp ZP_BYTE:8 5000.5
(byte) play_lock_current::col#2 col zp ZP_BYTE:8 7751.0
(byte) play_lock_current::i
(byte) play_lock_current::i#1 i zp ZP_BYTE:9 2333.6666666666665
(byte) play_lock_current::i#2 i#2 zp ZP_BYTE:5 15502.0
(byte) play_lock_current::i#3 i#3 zp ZP_BYTE:5 667.3333333333334
(byte~) play_lock_current::i#7 i#7 zp ZP_BYTE:5 2002.0
(byte~) play_lock_current::i#9 i#9 zp ZP_BYTE:5 20002.0
(byte) play_lock_current::i#2 i#2 zp ZP_BYTE:7 15502.0
(byte) play_lock_current::i#3 i#3 zp ZP_BYTE:7 667.3333333333334
(byte~) play_lock_current::i#7 i#7 zp ZP_BYTE:7 2002.0
(byte~) play_lock_current::i#9 i#9 zp ZP_BYTE:7 20002.0
(byte) play_lock_current::l
(byte) play_lock_current::l#1 l zp ZP_BYTE:4 1001.0
(byte) play_lock_current::l#6 l zp ZP_BYTE:4 166.83333333333334
(byte*) play_lock_current::playfield_line
(byte*) play_lock_current::playfield_line#0 playfield_line zp ZP_WORD:7 1100.2
(byte*) play_lock_current::playfield_line#0 playfield_line zp ZP_WORD:5 1100.2
(byte) play_lock_current::ypos2
(byte) play_lock_current::ypos2#0 ypos2 zp ZP_BYTE:14 4.0
(byte) play_lock_current::ypos2#1 ypos2 zp ZP_BYTE:14 500.5
@ -659,9 +660,9 @@
(byte) play_move_rotate::key_event
(byte) play_move_rotate::key_event#0 reg byte a 52.5
(byte) play_move_rotate::orientation
(byte) play_move_rotate::orientation#1 orientation zp ZP_BYTE:5 4.0
(byte) play_move_rotate::orientation#2 orientation zp ZP_BYTE:5 4.0
(byte) play_move_rotate::orientation#3 orientation zp ZP_BYTE:5 0.8888888888888888
(byte) play_move_rotate::orientation#1 orientation zp ZP_BYTE:7 4.0
(byte) play_move_rotate::orientation#2 orientation zp ZP_BYTE:7 4.0
(byte) play_move_rotate::orientation#3 orientation zp ZP_BYTE:7 0.8888888888888888
(byte) play_move_rotate::return
(byte) play_move_rotate::return#1 reg byte a 33.666666666666664
(byte) play_move_rotate::return#4 reg byte a 202.0
@ -686,9 +687,9 @@
(byte) play_remove_lines::r#2 reg byte y 15502.0
(byte) play_remove_lines::r#3 reg byte y 2002.0
(byte) play_remove_lines::removed
(byte) play_remove_lines::removed#1 removed zp ZP_BYTE:5 2002.0
(byte) play_remove_lines::removed#11 removed zp ZP_BYTE:5 231.0
(byte) play_remove_lines::removed#7 removed zp ZP_BYTE:5 333.8888888888889
(byte) play_remove_lines::removed#1 removed zp ZP_BYTE:7 2002.0
(byte) play_remove_lines::removed#11 removed zp ZP_BYTE:7 231.0
(byte) play_remove_lines::removed#7 removed zp ZP_BYTE:7 333.8888888888889
(byte) play_remove_lines::return
(byte) play_remove_lines::return#0 reg byte a 4.0
(byte) play_remove_lines::w
@ -700,8 +701,8 @@
(byte) play_remove_lines::w#4 reg byte x 4429.142857142857
(byte) play_remove_lines::w#6 reg byte x 1668.3333333333335
(byte) play_remove_lines::x
(byte) play_remove_lines::x#1 x zp ZP_BYTE:6 15001.5
(byte) play_remove_lines::x#2 x zp ZP_BYTE:6 2500.25
(byte) play_remove_lines::x#1 x zp ZP_BYTE:8 15001.5
(byte) play_remove_lines::x#2 x zp ZP_BYTE:8 2500.25
(byte) play_remove_lines::y
(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
@ -777,8 +778,8 @@
(byte) render_init::i#1 reg byte x 16.5
(byte) render_init::i#2 reg byte x 6.285714285714286
(byte*) render_init::li_1
(byte*) render_init::li_1#1 li_1 zp ZP_WORD:7 5.5
(byte*) render_init::li_1#2 li_1 zp ZP_WORD:7 6.6000000000000005
(byte*) render_init::li_1#1 li_1 zp ZP_WORD:5 5.5
(byte*) render_init::li_1#2 li_1 zp ZP_WORD:5 6.6000000000000005
(byte*) render_init::li_2
(byte*) render_init::li_2#1 li_2 zp ZP_WORD:19 7.333333333333333
(byte*) render_init::li_2#2 li_2 zp ZP_WORD:19 5.5
@ -805,16 +806,43 @@
(byte) render_playfield::c#1 c zp ZP_BYTE:9 1501.5
(byte) render_playfield::c#2 c zp ZP_BYTE:9 500.5
(byte) render_playfield::i
(byte) render_playfield::i#1 i zp ZP_BYTE:6 420.59999999999997
(byte) render_playfield::i#2 i zp ZP_BYTE:6 1034.6666666666667
(byte) render_playfield::i#3 i zp ZP_BYTE:6 50.5
(byte) render_playfield::i#1 i zp ZP_BYTE:8 420.59999999999997
(byte) render_playfield::i#2 i zp ZP_BYTE:8 1034.6666666666667
(byte) render_playfield::i#3 i zp ZP_BYTE:8 50.5
(byte) render_playfield::l
(byte) render_playfield::l#1 l zp ZP_BYTE:5 151.5
(byte) render_playfield::l#2 l zp ZP_BYTE:5 30.299999999999997
(byte) render_playfield::l#1 l zp ZP_BYTE:7 151.5
(byte) render_playfield::l#2 l zp ZP_BYTE:7 30.299999999999997
(byte*) render_playfield::screen_line
(byte*) render_playfield::screen_line#0 screen_line zp ZP_WORD:7 202.0
(byte*) render_playfield::screen_line#1 screen_line zp ZP_WORD:7 500.5
(byte*) render_playfield::screen_line#2 screen_line zp ZP_WORD:7 1552.0
(byte*) render_playfield::screen_line#0 screen_line zp ZP_WORD:5 202.0
(byte*) render_playfield::screen_line#1 screen_line zp ZP_WORD:5 500.5
(byte*) render_playfield::screen_line#2 screen_line zp ZP_WORD:5 1552.0
(void()) render_score()
(byte~) render_score::$10 reg byte a 202.0
(byte~) render_score::$11 reg byte a 202.0
(byte~) render_score::$12 reg byte a 202.0
(byte~) render_score::$9 reg byte a 202.0
(label) render_score::@2
(label) render_score::@3
(label) render_score::@4
(label) render_score::@return
(byte) render_score::SCREEN_SCORE_COL
(const byte) render_score::SCREEN_SCORE_COL#0 SCREEN_SCORE_COL = (byte/signed byte/word/signed word/dword/signed dword) 29
(byte) render_score::SCREEN_SCORE_ROW
(const byte) render_score::SCREEN_SCORE_ROW#0 SCREEN_SCORE_ROW = (byte/signed byte/word/signed word/dword/signed dword) 5
(byte) render_score::ZERO_CHAR
(const byte) render_score::ZERO_CHAR#0 ZERO_CHAR = (byte/signed byte/word/signed word/dword/signed dword) 51
(byte) render_score::b
(byte) render_score::b#1 reg byte x 151.5
(byte) render_score::b#2 reg byte x 30.299999999999997
(byte) render_score::score_byte
(byte) render_score::score_byte#0 score_byte zp ZP_BYTE:7 60.599999999999994
(byte*) render_score::score_bytes
(const byte*) render_score::score_bytes#0 score_bytes = ((byte*))&(dword) score_bcd#10
(byte*) render_score::screen_score_pos
(byte*) render_score::screen_score_pos#2 screen_score_pos zp ZP_WORD:5 75.75
(byte*) render_score::screen_score_pos#3 screen_score_pos zp ZP_WORD:5 67.33333333333333
(byte*) render_score::screen_score_pos#4 screen_score_pos zp ZP_WORD:5 61.0
(byte*) render_score::screen_score_pos#5 screen_score_pos zp ZP_WORD:5 2.0
(void()) render_screen_original((byte*) render_screen_original::screen)
(label) render_screen_original::@1
(label) render_screen_original::@2
@ -837,9 +865,9 @@
(byte*) render_screen_original::ocols#2 ocols zp ZP_WORD:19 67.33333333333333
(byte*) render_screen_original::ocols#4 ocols zp ZP_WORD:19 14.0
(byte*) render_screen_original::oscr
(byte*) render_screen_original::oscr#1 oscr zp ZP_WORD:7 14.2
(byte*) render_screen_original::oscr#2 oscr zp ZP_WORD:7 134.66666666666666
(byte*) render_screen_original::oscr#4 oscr zp ZP_WORD:7 14.0
(byte*) render_screen_original::oscr#1 oscr zp ZP_WORD:5 14.2
(byte*) render_screen_original::oscr#2 oscr zp ZP_WORD:5 134.66666666666666
(byte*) render_screen_original::oscr#4 oscr zp ZP_WORD:5 14.0
(byte*) render_screen_original::screen
(byte*) render_screen_original::screen#10 screen zp ZP_WORD:22 30.42857142857143
(byte*) render_screen_original::screen#2 screen zp ZP_WORD:22 60.599999999999994
@ -861,14 +889,14 @@
(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#16 render_screen_render zp ZP_BYTE:3 1.0
(byte) render_screen_render#19 reg byte x 8.615384615384615
(byte) render_screen_render#28 render_screen_render#28 zp ZP_BYTE:5 5.090909090909091
(byte~) render_screen_render#62 render_screen_render#62 zp ZP_BYTE:5 5.5
(byte~) render_screen_render#63 reg byte x 22.0
(byte) render_screen_render#17 render_screen_render zp ZP_BYTE:3 0.6981132075471699
(byte) render_screen_render#21 reg byte x 8.615384615384615
(byte) render_screen_render#30 render_screen_render#30 zp ZP_BYTE:7 5.090909090909091
(byte~) render_screen_render#64 render_screen_render#64 zp ZP_BYTE:7 5.5
(byte~) render_screen_render#65 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.39534883720930225
(byte) render_screen_show#16 render_screen_show zp ZP_BYTE:2 0.37777777777777777
(byte) render_screen_showing
(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:30 0.5
(byte) render_screen_showing#1 render_screen_showing zp ZP_BYTE:30 20.0
@ -910,10 +938,10 @@
(dword[]) score_add_bcd
(const dword[]) score_add_bcd#0 score_add_bcd = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 64, (word/signed word/dword/signed dword) 256, (word/signed word/dword/signed dword) 768, (word/signed word/dword/signed dword) 4608 }
(dword) score_bcd
(dword) score_bcd#11 score_bcd zp ZP_DWORD:15 1.0
(dword) score_bcd#13 score_bcd zp ZP_DWORD:15 2.608695652173914
(dword) score_bcd#17 score_bcd zp ZP_DWORD:15 6.0
(dword) score_bcd#2 score_bcd zp ZP_DWORD:15 4.296296296296297
(dword) score_bcd#10 score_bcd zp ZP_DWORD:15 4.0
(dword) score_bcd#12 score_bcd zp ZP_DWORD:15 1.0
(dword) score_bcd#14 score_bcd zp ZP_DWORD:15 2.608695652173914
(dword) score_bcd#20 score_bcd zp ZP_DWORD:15 6.0
(dword) score_bcd#3 score_bcd zp ZP_DWORD:15 2.0
(byte*[PLAYFIELD_LINES#0]) screen_lines_1
(const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 screen_lines_1 = { fill( PLAYFIELD_LINES#0, 0) }
@ -981,19 +1009,20 @@ 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#16 render_screen_render#11 ]
zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#11 ]
zp ZP_BYTE:4 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$3 ]
reg byte y [ current_ypos#9 current_ypos#85 current_ypos#86 ]
zp ZP_BYTE:5 [ render_screen_render#28 render_screen_render#62 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#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:6 [ current_xpos#47 current_xpos#111 current_xpos#112 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 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 ]
zp ZP_WORD:7 [ current_piece_gfx#53 current_piece_gfx#101 current_piece_gfx#102 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#75 current_piece#76 current_piece#77 current_piece#78 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 ]
reg byte x [ current_piece_char#64 current_piece_char#89 current_piece_char#90 ]
reg byte x [ render_score::b#2 render_score::b#1 ]
zp ZP_WORD:5 [ render_score::screen_score_pos#4 render_score::screen_score_pos#5 render_score::screen_score_pos#3 render_score::screen_score_pos#2 current_piece_gfx#53 current_piece_gfx#102 current_piece_gfx#103 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#76 current_piece#77 current_piece#78 current_piece#79 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 ]
reg byte y [ current_ypos#9 current_ypos#86 current_ypos#87 ]
zp ZP_BYTE:7 [ render_screen_render#30 render_screen_render#64 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#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 render_score::score_byte#0 ]
zp ZP_BYTE:8 [ current_xpos#47 current_xpos#112 current_xpos#113 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 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#90 current_piece_char#91 ]
zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 render_playfield::c#2 render_playfield::c#1 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:10 [ render_current::l#4 render_current::l#1 play_collision::l#6 play_collision::l#1 play_remove_lines::c#0 ]
zp ZP_BYTE:11 [ render_current::i#4 render_current::i#3 render_current::i#8 render_current::i#10 render_current::i#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ]
zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#0 render_current::xpos#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ]
zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 main::key_event#0 ]
reg byte x [ render_screen_render#19 render_screen_render#63 ]
reg byte x [ render_screen_render#21 render_screen_render#65 ]
reg byte a [ play_move_rotate::return#1 ]
reg byte x [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ]
reg byte y [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ]
@ -1002,8 +1031,8 @@ reg byte a [ play_collision::return#14 ]
reg byte a [ play_move_leftright::return#1 ]
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:14 [ current_ypos#29 current_ypos#21 current_ypos#18 current_ypos#13 current_ypos#0 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ]
zp ZP_DWORD:15 [ score_bcd#17 score_bcd#11 score_bcd#13 score_bcd#2 score_bcd#3 ]
zp ZP_WORD:19 [ current_piece#20 current_piece#79 current_piece#16 current_piece#72 current_piece#10 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 ]
zp ZP_DWORD:15 [ score_bcd#20 score_bcd#12 score_bcd#14 score_bcd#10 score_bcd#3 ]
zp ZP_WORD:19 [ current_piece#20 current_piece#80 current_piece#16 current_piece#73 current_piece#10 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 ]
zp ZP_BYTE:21 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ]
zp ZP_WORD:22 [ current_piece_gfx#26 current_piece_gfx#20 current_piece_gfx#16 current_piece_gfx#14 current_piece_gfx#3 current_piece_gfx#1 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_BYTE:24 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ]
@ -1041,6 +1070,10 @@ reg byte a [ play_move_rotate::key_event#0 ]
reg byte a [ play_move_rotate::return#4 ]
reg byte a [ main::$14 ]
reg byte a [ main::render#3 ]
reg byte a [ render_score::$9 ]
reg byte a [ render_score::$10 ]
reg byte a [ render_score::$11 ]
reg byte a [ render_score::$12 ]
reg byte a [ render_current::$5 ]
reg byte a [ render_current::current_cell#0 ]
reg byte a [ render_playfield::$2 ]