1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-10-10 20:23:47 +00:00

Saved memory and code by combining screen chars and extended colors in kasm-script.

This commit is contained in:
jespergravgaard 2018-12-29 22:53:02 +01:00
parent c3e559f8c9
commit 30ad94dda3
8 changed files with 5121 additions and 5384 deletions

View File

@ -12,8 +12,6 @@ const byte* PLAYFIELD_SPRITE_PTRS_2 = (PLAYFIELD_SCREEN_2+SPRITE_PTRS);
const byte* PLAYFIELD_SCREEN_ORIGINAL = $1800;
// Address of the original playscreen colors
const byte* PLAYFIELD_COLORS_ORIGINAL = $1c00;
// Address of the original playscreen extended colors
const byte* PLAYFIELD_EXTENDED_ORIGINAL = $1400;
// Address of the sprites covering the playfield
const byte* PLAYFIELD_SPRITES = $2000;
// Address of the charset

View File

@ -6,18 +6,21 @@ kickasm(pc PLAYFIELD_CHARSET, resource "playfield-screen.imap") {{
}}
const byte PLAYFIELD_SCREEN_ORIGINAL_WIDTH=32;
kickasm(pc PLAYFIELD_SCREEN_ORIGINAL, resource "playfield-screen.iscr") {{
.import binary "playfield-screen.iscr"
kickasm(pc PLAYFIELD_SCREEN_ORIGINAL, resource "playfield-screen.iscr", resource "playfield-extended.col" ) {{
// Load chars for the screen
.var screen = LoadBinary("playfield-screen.iscr")
// Load extended colors for the screen
.var extended = LoadBinary("playfield-extended.col")
// screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8
// extended.get(i)-1 because the extended colors are 1-based (1/2/3/4)
// <<6 to move extended colors to the upper 2 bits
.fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 )
}}
// Original Color Data
kickasm(pc PLAYFIELD_COLORS_ORIGINAL, resource "playfield-screen.col") {{
.import binary "playfield-screen.col"
}}
// Original Extended Color Data
kickasm(pc PLAYFIELD_EXTENDED_ORIGINAL, resource "playfield-extended.col") {{
.import binary "playfield-extended.col"
}}
// Pointers to the screen address for rendering each playfield line
// The lines for screen 1 is aligned with $80 and screen 2 with $40 - so XOR'ing with $40 gives screen 2 lines.
@ -77,7 +80,6 @@ void render_screen_swap() {
void render_screen_original(byte* screen) {
byte SPACE = 0;
byte* oscr = PLAYFIELD_SCREEN_ORIGINAL+32*2;
byte* oext = PLAYFIELD_EXTENDED_ORIGINAL+32*2;
byte* ocols = PLAYFIELD_COLORS_ORIGINAL+32*2;
byte* cols = COLS;
for(byte y:0..24) {
@ -87,9 +89,7 @@ void render_screen_original(byte* screen) {
*cols++ = BLACK;
} while(++x!=4);
do {
byte c = (*oscr++)+1; // +1 because the charset is loaded to PLAYFIELD_CHARSET+8
byte ext = ((*oext++)-1)<<6; // -1 because the extended colors are saved off-by-one
*screen++ = c|ext;
*screen++ = *oscr++;
*cols++ = *ocols++;
} while(++x!=36);
do {

View File

@ -96,7 +96,6 @@ CONTROL FLOW GRAPH SSA
(byte*) PLAYFIELD_SPRITE_PTRS_2#0 ← (byte*~) $1
(byte*) PLAYFIELD_SCREEN_ORIGINAL#0 ← ((byte*)) (word/signed word/dword/signed dword) 6144
(byte*) PLAYFIELD_COLORS_ORIGINAL#0 ← ((byte*)) (word/signed word/dword/signed dword) 7168
(byte*) PLAYFIELD_EXTENDED_ORIGINAL#0 ← ((byte*)) (word/signed word/dword/signed dword) 5120
(byte*) PLAYFIELD_SPRITES#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192
(byte*) PLAYFIELD_CHARSET#0 ← ((byte*)) (word/signed word/dword/signed dword) 10240
(byte) PLAYFIELD_LINES#0 ← (byte/signed byte/word/signed word/dword/signed dword) 22
@ -527,8 +526,6 @@ SYMBOL TABLE SSA
(byte*) PLAYFIELD_COLORS_ORIGINAL#0
(byte) PLAYFIELD_COLS
(byte) PLAYFIELD_COLS#0
(byte*) PLAYFIELD_EXTENDED_ORIGINAL
(byte*) PLAYFIELD_EXTENDED_ORIGINAL#0
(byte) PLAYFIELD_LINES
(byte) PLAYFIELD_LINES#0
(byte*) PLAYFIELD_SCREEN_1
@ -1046,7 +1043,6 @@ Constant (const byte*) PLAYFIELD_SCREEN_1#0 = ((byte*))1024
Constant (const byte*) PLAYFIELD_SCREEN_2#0 = ((byte*))11264
Constant (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0 = ((byte*))6144
Constant (const byte*) PLAYFIELD_COLORS_ORIGINAL#0 = ((byte*))7168
Constant (const byte*) PLAYFIELD_EXTENDED_ORIGINAL#0 = ((byte*))5120
Constant (const byte*) PLAYFIELD_SPRITES#0 = ((byte*))8192
Constant (const byte*) PLAYFIELD_CHARSET#0 = ((byte*))10240
Constant (const byte) PLAYFIELD_LINES#0 = 22
@ -1414,7 +1410,6 @@ VARIABLE REGISTER WEIGHTS
(byte*) PLAYFIELD_CHARSET
(byte*) PLAYFIELD_COLORS_ORIGINAL
(byte) PLAYFIELD_COLS
(byte*) PLAYFIELD_EXTENDED_ORIGINAL
(byte) PLAYFIELD_LINES
(byte*) PLAYFIELD_SCREEN_1
(byte*) PLAYFIELD_SCREEN_2
@ -2791,7 +2786,6 @@ FINAL SYMBOL TABLE
(byte*) PLAYFIELD_COLORS_ORIGINAL
(byte) PLAYFIELD_COLS
(const byte) PLAYFIELD_COLS#0 PLAYFIELD_COLS = (byte/signed byte/word/signed word/dword/signed dword) 10
(byte*) PLAYFIELD_EXTENDED_ORIGINAL
(byte) PLAYFIELD_LINES
(const byte) PLAYFIELD_LINES#0 PLAYFIELD_LINES = (byte/signed byte/word/signed word/dword/signed dword) 22
(byte*) PLAYFIELD_SCREEN_1

View File

@ -65,7 +65,6 @@
(byte*) PLAYFIELD_COLORS_ORIGINAL
(byte) PLAYFIELD_COLS
(const byte) PLAYFIELD_COLS#0 PLAYFIELD_COLS = (byte/signed byte/word/signed word/dword/signed dword) 10
(byte*) PLAYFIELD_EXTENDED_ORIGINAL
(byte) PLAYFIELD_LINES
(const byte) PLAYFIELD_LINES#0 PLAYFIELD_LINES = (byte/signed byte/word/signed word/dword/signed dword) 22
(byte*) PLAYFIELD_SCREEN_1

View File

@ -61,7 +61,6 @@
.label PLAYFIELD_SCREEN_2 = $2c00
.label PLAYFIELD_SCREEN_ORIGINAL = $1800
.label PLAYFIELD_COLORS_ORIGINAL = $1c00
.label PLAYFIELD_EXTENDED_ORIGINAL = $1400
.label PLAYFIELD_SPRITES = $2000
.label PLAYFIELD_CHARSET = $2800
.const PLAYFIELD_LINES = $16
@ -78,11 +77,11 @@
.label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS
.const toSpritePtr1_return = PLAYFIELD_SPRITES>>6
.label keyboard_events_size = $16
.label render_screen_showing = $1c
.label irq_raster_next = $1b
.label irq_sprite_ypos = $1d
.label irq_sprite_ptr = $1e
.label irq_cnt = $1f
.label render_screen_showing = $1a
.label irq_raster_next = $19
.label irq_sprite_ypos = $1b
.label irq_sprite_ptr = $1c
.label irq_cnt = $1d
.label current_movedown_counter = 4
.label current_ypos = $e
.label current_piece_gfx = $12
@ -119,7 +118,7 @@ bbegin:
jsr main
main: {
.label key_event = $d
.label render = $20
.label render = $1e
jsr sid_rnd_init
sei
jsr render_init
@ -367,7 +366,7 @@ play_collision: {
.label piece_gfx = 7
.label ypos2 = 9
.label playfield_line = $17
.label i = $21
.label i = $1f
.label col = $c
.label l = $a
.label i_2 = $b
@ -1011,12 +1010,10 @@ render_init: {
}
render_screen_original: {
.const SPACE = 0
.label screen = $17
.label cols = $19
.label c = 3
.label screen = $12
.label cols = $17
.label oscr = 7
.label oext = $f
.label ocols = $12
.label ocols = $f
.label y = 2
lda #0
sta y
@ -1024,10 +1021,6 @@ render_screen_original: {
sta ocols
lda #>PLAYFIELD_COLORS_ORIGINAL+$20*2
sta ocols+1
lda #<PLAYFIELD_EXTENDED_ORIGINAL+$20*2
sta oext
lda #>PLAYFIELD_EXTENDED_ORIGINAL+$20*2
sta oext+1
lda #<PLAYFIELD_SCREEN_ORIGINAL+$20*2
sta oscr
lda #>PLAYFIELD_SCREEN_ORIGINAL+$20*2
@ -1059,33 +1052,14 @@ render_screen_original: {
b3:
ldy #0
lda (oscr),y
clc
adc #1
sta c
inc oscr
bne !+
inc oscr+1
!:
ldy #0
lda (oext),y
sec
sbc #1
asl
asl
asl
asl
asl
asl
inc oext
bne !+
inc oext+1
!:
ora c
ldy #0
sta (screen),y
inc screen
bne !+
inc screen+1
!:
inc oscr
bne !+
inc oscr+1
!:
ldy #0
lda (ocols),y
@ -1122,9 +1096,7 @@ render_screen_original: {
inc y
lda y
cmp #$19
beq !b1+
jmp b1
!b1:
bne b1
rts
}
sid_rnd_init: {
@ -1248,14 +1220,18 @@ sprites_irq: {
.import binary "playfield-screen.imap"
.pc = PLAYFIELD_SCREEN_ORIGINAL "PLAYFIELD_SCREEN_ORIGINAL"
.import binary "playfield-screen.iscr"
// Load chars for the screen
.var screen = LoadBinary("playfield-screen.iscr")
// Load extended colors for the screen
.var extended = LoadBinary("playfield-extended.col")
// screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8
// extended.get(i)-1 because the extended colors are 1-based (1/2/3/4)
// <<6 to move extended colors to the upper 2 bits
.fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 )
.pc = PLAYFIELD_COLORS_ORIGINAL "PLAYFIELD_COLORS_ORIGINAL"
.import binary "playfield-screen.col"
.pc = PLAYFIELD_EXTENDED_ORIGINAL "PLAYFIELD_EXTENDED_ORIGINAL"
.import binary "playfield-extended.col"
.pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES"
.var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
.for(var sy=0;sy<10;sy++) {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -193,8 +193,6 @@
(const byte*) PLAYFIELD_COLORS_ORIGINAL#0 PLAYFIELD_COLORS_ORIGINAL = ((byte*))(word/signed word/dword/signed dword) 7168
(byte) PLAYFIELD_COLS
(const byte) PLAYFIELD_COLS#0 PLAYFIELD_COLS = (byte/signed byte/word/signed word/dword/signed dword) 10
(byte*) PLAYFIELD_EXTENDED_ORIGINAL
(const byte*) PLAYFIELD_EXTENDED_ORIGINAL#0 PLAYFIELD_EXTENDED_ORIGINAL = ((byte*))(word/signed word/dword/signed dword) 5120
(byte) PLAYFIELD_LINES
(const byte) PLAYFIELD_LINES#0 PLAYFIELD_LINES = (byte/signed byte/word/signed word/dword/signed dword) 22
(byte*) PLAYFIELD_SCREEN_1
@ -343,22 +341,22 @@
(byte~) current_ypos#85 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:31 0.2
(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:31 4.0
(byte) irq_cnt#14 irq_cnt zp ZP_BYTE:31 20.0
(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:29 0.2
(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:29 4.0
(byte) irq_cnt#14 irq_cnt zp ZP_BYTE:29 20.0
(byte) irq_raster_next
(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:27 0.18181818181818182
(byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:27 1.0
(byte) irq_raster_next#13 irq_raster_next zp ZP_BYTE:27 6.0
(byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:27 1.3333333333333333
(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:25 0.18181818181818182
(byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:25 1.0
(byte) irq_raster_next#13 irq_raster_next zp ZP_BYTE:25 6.0
(byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:25 1.3333333333333333
(byte) irq_sprite_ptr
(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:30 0.25
(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:30 20.0
(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:30 20.0
(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:28 0.25
(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:28 20.0
(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:28 20.0
(byte) irq_sprite_ypos
(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:29 0.7391304347826086
(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:29 20.0
(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:29 20.0
(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:27 0.7391304347826086
(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:27 20.0
(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:27 20.0
(byte[]) keyboard_char_keycodes
(byte()) keyboard_event_get()
(label) keyboard_event_get::@3
@ -489,8 +487,8 @@
(byte) main::key_event
(byte) main::key_event#0 key_event zp ZP_BYTE:13 36.72727272727273
(byte) main::render
(byte) main::render#1 render zp ZP_BYTE:32 40.4
(byte) main::render#2 render zp ZP_BYTE:32 40.4
(byte) main::render#1 render zp ZP_BYTE:30 40.4
(byte) main::render#2 render zp ZP_BYTE:30 40.4
(byte) main::render#3 reg byte a 202.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
@ -513,7 +511,7 @@
(byte) play_collision::col#2 col zp ZP_BYTE:12 6375.75
(byte~) play_collision::col#9 col zp ZP_BYTE:12 2002.0
(byte) play_collision::i
(byte) play_collision::i#1 i zp ZP_BYTE:33 1615.6153846153845
(byte) play_collision::i#1 i zp ZP_BYTE:31 1615.6153846153845
(byte~) play_collision::i#11 i#11 zp ZP_BYTE:11 2002.0
(byte~) play_collision::i#13 i#13 zp ZP_BYTE:11 20002.0
(byte) play_collision::i#2 i#2 zp ZP_BYTE:11 15502.0
@ -801,8 +799,6 @@
(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
(void()) render_screen_original((byte*) render_screen_original::screen)
(byte~) render_screen_original::$10 reg byte a 202.0
(byte/signed word/word/dword/signed dword~) render_screen_original::$8 reg byte a 202.0
(label) render_screen_original::@1
(label) render_screen_original::@2
(label) render_screen_original::@3
@ -811,49 +807,41 @@
(label) render_screen_original::@return
(byte) render_screen_original::SPACE
(const byte) render_screen_original::SPACE#0 SPACE = (byte/signed byte/word/signed word/dword/signed dword) 0
(byte) render_screen_original::c
(byte) render_screen_original::c#0 c zp ZP_BYTE:3 40.4
(byte*) render_screen_original::cols
(byte*) render_screen_original::cols#1 cols zp ZP_WORD:25 101.0
(byte*) render_screen_original::cols#2 cols zp ZP_WORD:25 75.75
(byte*) render_screen_original::cols#3 cols zp ZP_WORD:25 42.599999999999994
(byte*) render_screen_original::cols#4 cols zp ZP_WORD:25 78.5
(byte*) render_screen_original::cols#5 cols zp ZP_WORD:25 40.4
(byte*) render_screen_original::cols#6 cols zp ZP_WORD:25 101.0
(byte*) render_screen_original::cols#7 cols zp ZP_WORD:25 22.0
(byte) render_screen_original::ext
(byte) render_screen_original::ext#0 reg byte a 101.0
(byte*) render_screen_original::cols#1 cols zp ZP_WORD:23 101.0
(byte*) render_screen_original::cols#2 cols zp ZP_WORD:23 75.75
(byte*) render_screen_original::cols#3 cols zp ZP_WORD:23 42.599999999999994
(byte*) render_screen_original::cols#4 cols zp ZP_WORD:23 78.5
(byte*) render_screen_original::cols#5 cols zp ZP_WORD:23 80.8
(byte*) render_screen_original::cols#6 cols zp ZP_WORD:23 101.0
(byte*) render_screen_original::cols#7 cols zp ZP_WORD:23 22.0
(byte*) render_screen_original::ocols
(byte*) render_screen_original::ocols#1 ocols zp ZP_WORD:18 17.75
(byte*) render_screen_original::ocols#2 ocols zp ZP_WORD:18 36.72727272727273
(byte*) render_screen_original::ocols#4 ocols zp ZP_WORD:18 14.0
(byte*) render_screen_original::oext
(byte*) render_screen_original::oext#1 oext zp ZP_WORD:15 11.833333333333332
(byte*) render_screen_original::oext#2 oext zp ZP_WORD:15 80.8
(byte*) render_screen_original::oext#4 oext zp ZP_WORD:15 14.0
(byte*) render_screen_original::ocols#1 ocols zp ZP_WORD:15 17.75
(byte*) render_screen_original::ocols#2 ocols zp ZP_WORD:15 67.33333333333333
(byte*) render_screen_original::ocols#4 ocols zp ZP_WORD:15 14.0
(byte*) render_screen_original::oscr
(byte*) render_screen_original::oscr#1 oscr zp ZP_WORD:7 10.142857142857142
(byte*) render_screen_original::oscr#2 oscr zp ZP_WORD:7 202.0
(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::screen
(byte*) render_screen_original::screen#10 screen zp ZP_WORD:23 30.42857142857143
(byte*) render_screen_original::screen#2 screen zp ZP_WORD:23 60.599999999999994
(byte*) render_screen_original::screen#3 screen zp ZP_WORD:23 50.5
(byte*) render_screen_original::screen#5 screen zp ZP_WORD:23 157.0
(byte*) render_screen_original::screen#6 screen zp ZP_WORD:23 50.5
(byte*) render_screen_original::screen#7 screen zp ZP_WORD:23 202.0
(byte*) render_screen_original::screen#8 screen zp ZP_WORD:23 24.0
(byte*) render_screen_original::screen#9 screen zp ZP_WORD:23 2.0
(byte*) render_screen_original::screen#10 screen zp ZP_WORD:18 30.42857142857143
(byte*) render_screen_original::screen#2 screen zp ZP_WORD:18 60.599999999999994
(byte*) render_screen_original::screen#3 screen zp ZP_WORD:18 43.285714285714285
(byte*) render_screen_original::screen#5 screen zp ZP_WORD:18 157.0
(byte*) render_screen_original::screen#6 screen zp ZP_WORD:18 202.0
(byte*) render_screen_original::screen#7 screen zp ZP_WORD:18 202.0
(byte*) render_screen_original::screen#8 screen zp ZP_WORD:18 24.0
(byte*) render_screen_original::screen#9 screen zp ZP_WORD:18 2.0
(byte) render_screen_original::x
(byte) render_screen_original::x#1 reg byte x 202.0
(byte) render_screen_original::x#2 reg byte x 202.0
(byte) render_screen_original::x#3 reg byte x 151.5
(byte) render_screen_original::x#4 reg byte x 40.4
(byte) render_screen_original::x#5 reg byte x 25.25
(byte) render_screen_original::x#5 reg byte x 43.285714285714285
(byte) render_screen_original::x#6 reg byte x 60.599999999999994
(byte) render_screen_original::y
(byte) render_screen_original::y#1 y zp ZP_BYTE:2 16.5
(byte) render_screen_original::y#6 y zp ZP_BYTE:2 0.7586206896551724
(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
@ -865,8 +853,8 @@
(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_showing
(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:28 0.5714285714285714
(byte) render_screen_showing#1 render_screen_showing zp ZP_BYTE:28 20.0
(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:26 0.5714285714285714
(byte) render_screen_showing#1 render_screen_showing zp ZP_BYTE:26 20.0
(void()) render_screen_swap()
(label) render_screen_swap::@return
(void()) render_show()
@ -968,7 +956,7 @@ 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 render_screen_original::c#0 ]
zp ZP_BYTE:3 [ render_screen_render#16 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#84 current_ypos#85 ]
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::x#2 play_remove_lines::x#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 ]
@ -989,9 +977,9 @@ 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_WORD:15 [ current_piece#20 current_piece#78 current_piece#16 current_piece#71 current_piece#10 render_init::li_2#2 render_init::li_2#1 render_screen_original::oext#2 render_screen_original::oext#4 render_screen_original::oext#1 ]
zp ZP_WORD:15 [ current_piece#20 current_piece#78 current_piece#16 current_piece#71 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:17 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ]
zp ZP_WORD:18 [ 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::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ]
zp ZP_WORD:18 [ 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:20 [ current_xpos#33 current_xpos#10 current_xpos#23 current_xpos#19 current_xpos#4 current_xpos#1 current_xpos#2 ]
zp ZP_BYTE:21 [ current_piece_char#20 current_piece_char#15 current_piece_char#12 current_piece_char#1 ]
reg byte x [ play_move_down::return#2 ]
@ -1007,20 +995,19 @@ reg byte a [ render_show::d018val#3 ]
reg byte x [ play_init::j#2 play_init::j#1 ]
reg byte x [ sprites_init::s#2 sprites_init::s#1 ]
reg byte x [ render_init::i#2 render_init::i#1 ]
zp ZP_WORD:23 [ 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 render_current::screen_line#0 play_collision::playfield_line#0 ]
zp ZP_WORD:25 [ 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_WORD:23 [ 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 render_current::screen_line#0 play_collision::playfield_line#0 ]
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:27 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ]
zp ZP_BYTE:25 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ]
reg byte x [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ]
zp ZP_BYTE:28 [ render_screen_showing#0 render_screen_showing#1 ]
zp ZP_BYTE:29 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ]
zp ZP_BYTE:30 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ]
zp ZP_BYTE:31 [ irq_cnt#0 irq_cnt#1 irq_cnt#14 ]
zp ZP_BYTE:26 [ render_screen_showing#0 render_screen_showing#1 ]
zp ZP_BYTE:27 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ]
zp ZP_BYTE:28 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ]
zp ZP_BYTE:29 [ irq_cnt#0 irq_cnt#1 irq_cnt#14 ]
reg byte a [ keyboard_event_get::return#3 ]
reg byte a [ play_move_down::key_event#0 ]
reg byte a [ play_move_down::return#3 ]
reg byte a [ main::$12 ]
zp ZP_BYTE:32 [ main::render#1 main::render#2 ]
zp ZP_BYTE:30 [ main::render#1 main::render#2 ]
reg byte a [ play_move_leftright::key_event#0 ]
reg byte a [ play_move_leftright::return#4 ]
reg byte a [ main::$13 ]
@ -1036,7 +1023,7 @@ reg byte a [ play_move_rotate::$2 ]
reg byte a [ play_collision::return#13 ]
reg byte a [ play_move_rotate::$6 ]
reg byte a [ play_move_rotate::$4 ]
zp ZP_BYTE:33 [ play_collision::i#1 ]
zp ZP_BYTE:31 [ play_collision::i#1 ]
reg byte a [ play_collision::$7 ]
reg byte a [ play_collision::return#12 ]
reg byte a [ play_move_leftright::$4 ]
@ -1072,9 +1059,6 @@ reg byte a [ play_init::$1 ]
reg byte a [ sprites_init::s2#0 ]
reg byte a [ render_init::$13 ]
reg byte a [ render_init::$14 ]
reg byte a [ render_screen_original::$8 ]
reg byte a [ render_screen_original::ext#0 ]
reg byte a [ render_screen_original::$10 ]
reg byte a [ sprites_irq::ypos#0 ]
reg byte x [ sprites_irq::ptr#0 ]
reg byte x [ sprites_irq::ptr#3 ]