1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-04-18 06:40:18 +00:00

Added needed parts of font and proper colors.

This commit is contained in:
jespergravgaard 2018-12-29 22:31:55 +01:00
parent 76b13d6b55
commit c3e559f8c9
33 changed files with 5986 additions and 6299 deletions

View File

@ -0,0 +1,6 @@
asl
asl
asl
asl
asl
asl

Binary file not shown.

Before

Width:  |  Height:  |  Size: 333 B

View File

@ -0,0 +1,4 @@
xХOЛNУ@мHQ*+J<>ё &$рТ<D180>РGр$g)т<>YљЖЋЖВ\ІB<D086><42>2ЂB.ЌГg$Јi2ђ=fwfі<$Ђ!жIЎДZф<>еУrЧ*Ыщъ<D189>Cск+ЅuО<75>в<EFBFBD>$:ЩђЭ<D192>ЂЭРуd[Ќ7yЊЃ=иc<D0B8>Ко97рЩ<D180>Ъb<D0AA><;kiUЪнВО<D092>4Є, ѕћ<02>ѕ<EFBFBD><02> <EFBFBD>Џ2(цамКDpЅЖn<D096>Jw<4A>с<1E>эыG<D18B>З<>e 4ГeІ<65>Y>
ccLR[3sн<73>5І3ЦЪйЂC<15><>Й"v6Ів<17>uI№|ТС<12>ьQtќёeп<1A>_PЩ<ю\<5C>аБ№І}mЈЌM5BпК\<5C>јG<D198>эT9<>і<EFBFBD><А
g]зђВодПЧМр<0E>u@г`
<1C>?ђќwKoJюEЈkыyд<79>n$џгIОeO ђ<><D192>]<5D>в?7џР_џ7ц"в

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 334 B

View File

@ -0,0 +1 @@


Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 753 B

After

Width:  |  Height:  |  Size: 753 B

View File

@ -10,6 +10,10 @@ const byte* PLAYFIELD_SPRITE_PTRS_1 = (PLAYFIELD_SCREEN_1+SPRITE_PTRS);
const byte* PLAYFIELD_SPRITE_PTRS_2 = (PLAYFIELD_SCREEN_2+SPRITE_PTRS);
// Address of the original playscreen chars
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

@ -171,7 +171,7 @@ align($40) byte[4*4*4] PIECE_I = {
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 = { $58, $59, $99, $59, $58, $58, $99 };
byte[] PIECES_CHARS = { $64, $65, $a5, $65, $64, $64, $a5 };
// The initial X/Y for each piece
byte[] PIECES_START_X = { 4, 4, 4, 4, 4, 3, 4};
byte[] PIECES_START_Y = { 2, 1, 1, 1, 2, 0, 1};

View File

@ -1,14 +1,22 @@
import "tetris-data"
kickasm(pc PLAYFIELD_CHARSET, resource "nes-screen.imap") {{
kickasm(pc PLAYFIELD_CHARSET, resource "playfield-screen.imap") {{
.fill 8,$00 // Place a filled char at the start of the charset
.import binary "nes-screen.imap"
.import binary "playfield-screen.imap"
}}
const byte PLAYFIELD_SCREEN_ORIGINAL_WIDTH=32;
// Address of the screen data original
kickasm(pc PLAYFIELD_SCREEN_ORIGINAL, resource "nes-screen.iscr") {{
.import binary "nes-screen.iscr"
kickasm(pc PLAYFIELD_SCREEN_ORIGINAL, resource "playfield-screen.iscr") {{
.import binary "playfield-screen.iscr"
}}
// 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
@ -30,16 +38,6 @@ void render_init() {
// Setup chars on the screens
render_screen_original(PLAYFIELD_SCREEN_1);
render_screen_original(PLAYFIELD_SCREEN_2);
fill(COLS,1000,DARK_GREY);
// Fill the playfield frame with the white background color
byte* line = COLS + 4*40 + 16;
for(byte l:2..PLAYFIELD_LINES-1) {
for(byte c:0..PLAYFIELD_COLS-1) {
*(line+c) = WHITE;
}
line +=40;
}
// Initialize the screen line pointers;
byte* li_1 = PLAYFIELD_SCREEN_1 + 2*40 + 16;
@ -75,24 +73,28 @@ void render_screen_swap() {
}
// Copy the original screen data to the passed screen
// Also copies colors to $d800
void render_screen_original(byte* screen) {
byte SPACE = 0;
byte* orig = PLAYFIELD_SCREEN_ORIGINAL+32*2;
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) {
byte x=0;
do {
*screen++ = SPACE;
*cols++ = BLACK;
} while(++x!=4);
do {
byte c = (*orig++)+1;
if((x>$e)&&(x<$1b)) {
// Fill the frame around the playfield - char|=$c0 (bgcol 4)
c |= $c0;
}
*screen++ = c; // +1 because the charset is loaded to PLAYFIELD_CHARSET+8
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;
*cols++ = *ocols++;
} while(++x!=36);
do {
*screen++ = SPACE;
*cols++ = BLACK;
} while(++x!=40);
}
}

View File

@ -2,8 +2,8 @@
import "c64"
import "tetris-data"
kickasm(pc PLAYFIELD_SPRITES, resource "nes-playfield.png") {{
.var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000))
kickasm(pc PLAYFIELD_SPRITES, resource "playfield-sprites.png") {{
.var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
.for(var sy=0;sy<10;sy++) {
.for(var sx=0;sx<3;sx++) {
.for (var y=0;y<21; y++) {

View File

@ -199,7 +199,7 @@ sprites_irq: {
jmp b3
}
.pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES"
.var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000))
.var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
.for(var sy=0;sy<10;sy++) {
.for(var sx=0;sx<3;sx++) {
.for (var y=0;y<21; y++) {

View File

@ -3,7 +3,7 @@
to:@4
@4: scope:[] from @begin
[1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000))
kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
.for(var sy=0;sy<10;sy++) {
.for(var sx=0;sx<3;sx++) {
.for (var y=0;y<21; y++) {

View File

@ -95,6 +95,8 @@ CONTROL FLOW GRAPH SSA
(byte*~) $1 ← (byte*) PLAYFIELD_SCREEN_2#0 + (word) SPRITE_PTRS#0
(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
@ -104,7 +106,7 @@ CONTROL FLOW GRAPH SSA
(byte) render_screen_render#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64
(byte) render_screen_show#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
(byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
kickasm(location (byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000))
kickasm(location (byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
.for(var sy=0;sy<10;sy++) {
.for(var sx=0;sx<3;sx++) {
.for (var y=0;y<21; y++) {
@ -521,8 +523,12 @@ SYMBOL TABLE SSA
(byte) PINK#0
(byte*) PLAYFIELD_CHARSET
(byte*) PLAYFIELD_CHARSET#0
(byte*) PLAYFIELD_COLORS_ORIGINAL
(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
@ -1039,6 +1045,8 @@ Constant (const byte) LIGHT_GREY#0 = 15
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
@ -1197,7 +1205,7 @@ FINAL CONTROL FLOW GRAPH
to:@4
@4: scope:[] from @begin
[1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000))
kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
.for(var sy=0;sy<10;sy++) {
.for(var sx=0;sx<3;sx++) {
.for (var y=0;y<21; y++) {
@ -1404,7 +1412,9 @@ VARIABLE REGISTER WEIGHTS
(byte) ORANGE
(byte) PINK
(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
@ -1663,7 +1673,7 @@ b4:
//SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1
lda #0
sta render_screen_showing
//SEG5 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }}
//SEG5 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }}
jmp b5
//SEG6 @5
b5:
@ -2046,7 +2056,7 @@ sprites_irq: {
jmp b3
}
.pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES"
.var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000))
.var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
.for(var sy=0;sy<10;sy++) {
.for(var sx=0;sx<3;sx++) {
.for (var y=0;y<21; y++) {
@ -2284,7 +2294,7 @@ b4:
//SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1
lda #0
sta render_screen_showing
//SEG5 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }}
//SEG5 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }}
jmp b5
//SEG6 @5
b5:
@ -2625,7 +2635,7 @@ sprites_irq: {
jmp b3
}
.pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES"
.var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000))
.var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
.for(var sy=0;sy<10;sy++) {
.for(var sx=0;sx<3;sx++) {
.for (var y=0;y<21; y++) {
@ -2778,8 +2788,10 @@ FINAL SYMBOL TABLE
(byte) PINK
(byte*) PLAYFIELD_CHARSET
(const byte*) PLAYFIELD_CHARSET#0 PLAYFIELD_CHARSET = ((byte*))(word/signed word/dword/signed dword) 10240
(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
@ -3023,7 +3035,7 @@ bbegin:
//SEG4 [1] (byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1
lda #0
sta render_screen_showing
//SEG5 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }}
//SEG5 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }}
//SEG6 @5
//SEG7 [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1
lda #IRQ_RASTER_FIRST
@ -3301,7 +3313,7 @@ sprites_irq: {
jmp b3
}
.pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES"
.var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000))
.var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
.for(var sy=0;sy<10;sy++) {
.for(var sx=0;sx<3;sx++) {
.for (var y=0;y<21; y++) {

View File

@ -62,8 +62,10 @@
(byte) PINK
(byte*) PLAYFIELD_CHARSET
(const byte*) PLAYFIELD_CHARSET#0 PLAYFIELD_CHARSET = ((byte*))(word/signed word/dword/signed dword) 10240
(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

@ -37,10 +37,8 @@
.label CIA2_PORT_A_DDR = $dd02
.label HARDWARE_IRQ = $fffe
.const BLACK = 0
.const WHITE = 1
.const CYAN = 3
.const BLUE = 6
.const DARK_GREY = $b
.const GREY = $c
.const KEY_Z = $c
.const KEY_LSHIFT = $f
@ -62,6 +60,8 @@
.label PLAYFIELD_SCREEN_1 = $400
.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 +78,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 = $18
.label irq_raster_next = $17
.label irq_sprite_ypos = $19
.label irq_sprite_ptr = $1a
.label irq_cnt = $1b
.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 current_movedown_counter = 4
.label current_ypos = $e
.label current_piece_gfx = $12
@ -119,7 +119,7 @@ bbegin:
jsr main
main: {
.label key_event = $d
.label render = $1c
.label render = $20
jsr sid_rnd_init
sei
jsr render_init
@ -204,7 +204,7 @@ render_screen_swap: {
}
render_current: {
.label ypos2 = 9
.label screen_line = $1d
.label screen_line = $17
.label xpos = $c
.label i = $b
.label l = $a
@ -366,8 +366,8 @@ play_collision: {
.label xpos = 6
.label piece_gfx = 7
.label ypos2 = 9
.label playfield_line = $1d
.label i = $1f
.label playfield_line = $17
.label i = $21
.label col = $c
.label l = $a
.label i_2 = $b
@ -939,9 +939,6 @@ sprites_init: {
}
render_init: {
.const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_CHARSET)>>6
.label _12 = $f
.label line = 7
.label l = 2
.label li_1 = 7
.label li_2 = $f
lda #3
@ -969,40 +966,6 @@ render_init: {
lda #>PLAYFIELD_SCREEN_2
sta render_screen_original.screen+1
jsr render_screen_original
jsr fill
lda #2
sta l
lda #<COLS+4*$28+$10
sta line
lda #>COLS+4*$28+$10
sta line+1
b1:
ldx #0
b2:
txa
clc
adc line
sta _12
lda #0
adc line+1
sta _12+1
lda #WHITE
ldy #0
sta (_12),y
inx
cpx #PLAYFIELD_COLS-1+1
bne b2
lda line
clc
adc #$28
sta line
bcc !+
inc line+1
!:
inc l
lda l
cmp #PLAYFIELD_LINES-1+1
bne b1
lda #<PLAYFIELD_SCREEN_2+2*$28+$10
sta li_2
lda #>PLAYFIELD_SCREEN_2+2*$28+$10
@ -1012,7 +975,7 @@ render_init: {
lda #>PLAYFIELD_SCREEN_1+2*$28+$10
sta li_1+1
ldx #0
b3:
b1:
txa
asl
tay
@ -1043,44 +1006,36 @@ render_init: {
!:
inx
cpx #PLAYFIELD_LINES-1+1
bne b3
rts
}
fill: {
.const size = $3e8
.label end = COLS+size
.label addr = 7
lda #<COLS
sta addr
lda #>COLS
sta addr+1
b1:
lda #DARK_GREY
ldy #0
sta (addr),y
inc addr
bne !+
inc addr+1
!:
lda addr+1
cmp #>end
bne b1
lda addr
cmp #<end
bne b1
rts
}
render_screen_original: {
.const SPACE = 0
.label screen = $f
.label orig = 7
.label screen = $17
.label cols = $19
.label c = 3
.label oscr = 7
.label oext = $f
.label ocols = $12
.label y = 2
lda #0
sta y
lda #<PLAYFIELD_COLORS_ORIGINAL+$20*2
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 orig
sta oscr
lda #>PLAYFIELD_SCREEN_ORIGINAL+$20*2
sta orig+1
sta oscr+1
lda #<COLS
sta cols
lda #>COLS
sta cols+1
b1:
ldx #0
b2:
@ -1090,60 +1045,87 @@ render_screen_original: {
inc screen
bne !+
inc screen+1
!:
lda #BLACK
ldy #0
sta (cols),y
inc cols
bne !+
inc cols+1
!:
inx
cpx #4
bne b2
b3:
ldy #0
lda (orig),y
tay
iny
inc orig
lda (oscr),y
clc
adc #1
sta c
inc oscr
bne !+
inc orig+1
inc oscr+1
!:
txa
cmp #$e
beq !+
bcs b11
ldy #0
lda (oext),y
sec
sbc #1
asl
asl
asl
asl
asl
asl
inc oext
bne !+
inc oext+1
!:
b4:
tya
ora c
ldy #0
sta (screen),y
inc screen
bne !+
inc screen+1
!:
ldy #0
lda (ocols),y
sta (cols),y
inc cols
bne !+
inc cols+1
!:
inc ocols
bne !+
inc ocols+1
!:
inx
cpx #$24
bne b3
b5:
b4:
lda #SPACE
ldy #0
sta (screen),y
inc screen
bne !+
inc screen+1
!:
lda #BLACK
ldy #0
sta (cols),y
inc cols
bne !+
inc cols+1
!:
inx
cpx #$28
bne b5
bne b4
inc y
lda y
cmp #$19
bne b1
beq !b1+
jmp b1
!b1:
rts
b11:
cpx #$1b
bcc b7
jmp b4
b7:
tya
ora #$c0
tay
jmp b4
}
sid_rnd_init: {
lda #<$ffff
@ -1250,7 +1232,7 @@ sprites_irq: {
PIECE_O: .byte 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, 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 $58, $59, $99, $59, $58, $58, $99
PIECES_CHARS: .byte $64, $65, $a5, $65, $64, $64, $a5
PIECES_START_X: .byte 4, 4, 4, 4, 4, 3, 4
PIECES_START_Y: .byte 2, 1, 1, 1, 2, 0, 1
.align $80
@ -1263,13 +1245,19 @@ sprites_irq: {
playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0
.pc = PLAYFIELD_CHARSET "PLAYFIELD_CHARSET"
.fill 8,$00 // Place a filled char at the start of the charset
.import binary "nes-screen.imap"
.import binary "playfield-screen.imap"
.pc = PLAYFIELD_SCREEN_ORIGINAL "PLAYFIELD_SCREEN_ORIGINAL"
.import binary "nes-screen.iscr"
.import binary "playfield-screen.iscr"
.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("nes-playfield.png", List().add($010101, $000000))
.var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
.for(var sy=0;sy<10;sy++) {
.for(var sx=0;sx<3;sx++) {
.for (var y=0;y<21; y++) {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -59,7 +59,6 @@
(byte*) D018
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272
(byte) DARK_GREY
(const byte) DARK_GREY#0 DARK_GREY = (byte/signed byte/word/signed word/dword/signed dword) 11
(byte) GREEN
(byte) GREY
(const byte) GREY#0 GREY = (byte/signed byte/word/signed word/dword/signed dword) 12
@ -168,7 +167,7 @@
(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) 88, (byte/signed byte/word/signed word/dword/signed dword) 89, (byte/word/signed word/dword/signed dword) 153, (byte/signed byte/word/signed word/dword/signed dword) 89, (byte/signed byte/word/signed word/dword/signed dword) 88, (byte/signed byte/word/signed word/dword/signed dword) 88, (byte/word/signed word/dword/signed dword) 153 }
(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 }
(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) 3, (byte/signed byte/word/signed word/dword/signed dword) 4 }
(byte[]) PIECES_START_Y
@ -190,8 +189,12 @@
(byte) PINK
(byte*) PLAYFIELD_CHARSET
(const byte*) PLAYFIELD_CHARSET#0 PLAYFIELD_CHARSET = ((byte*))(word/signed word/dword/signed dword) 10240
(byte*) PLAYFIELD_COLORS_ORIGINAL
(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
@ -275,7 +278,6 @@
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
(byte) VIC_RST8
(byte) WHITE
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) YELLOW
(byte) current_movedown_counter
(byte) current_movedown_counter#1 current_movedown_counter zp ZP_BYTE:4 0.5333333333333333
@ -340,35 +342,23 @@
(byte~) current_ypos#84 reg byte y 1.0
(byte~) current_ypos#85 reg byte y 4.4
(byte) current_ypos#9 reg byte y 15.0
(void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val)
(label) fill::@1
(label) fill::@return
(byte*) fill::addr
(byte*) fill::addr#1 addr zp ZP_WORD:7 16.5
(byte*) fill::addr#2 addr zp ZP_WORD:7 16.5
(byte*) fill::end
(const byte*) fill::end#0 end = (const byte*) COLS#0+(const word) fill::size#0
(word) fill::size
(const word) fill::size#0 size = (word/signed word/dword/signed dword) 1000
(byte*) fill::start
(byte) fill::val
(byte) irq_cnt
(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:27 0.2
(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:27 4.0
(byte) irq_cnt#14 irq_cnt zp ZP_BYTE:27 20.0
(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_raster_next
(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:23 0.18181818181818182
(byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:23 1.0
(byte) irq_raster_next#13 irq_raster_next zp ZP_BYTE:23 6.0
(byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:23 1.3333333333333333
(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_sprite_ptr
(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:26 0.25
(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:26 20.0
(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:26 20.0
(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_ypos
(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:25 0.7391304347826086
(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:25 20.0
(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:25 20.0
(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[]) keyboard_char_keycodes
(byte()) keyboard_event_get()
(label) keyboard_event_get::@3
@ -499,8 +489,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:28 40.4
(byte) main::render#2 render zp ZP_BYTE:28 40.4
(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#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
@ -523,7 +513,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:31 1615.6153846153845
(byte) play_collision::i#1 i zp ZP_BYTE:33 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
@ -540,7 +530,7 @@
(byte*) play_collision::piece_gfx
(byte*) play_collision::piece_gfx#0 piece_gfx zp ZP_WORD:7 476.3333333333333
(byte*) play_collision::playfield_line
(byte*) play_collision::playfield_line#0 playfield_line zp ZP_WORD:29 785.8571428571429
(byte*) play_collision::playfield_line#0 playfield_line zp ZP_WORD:23 785.8571428571429
(byte) play_collision::return
(byte) play_collision::return#0 reg byte a 4.0
(byte) play_collision::return#1 reg byte a 4.0
@ -752,7 +742,7 @@
(byte) render_current::l#1 l zp ZP_BYTE:10 151.5
(byte) render_current::l#4 l zp ZP_BYTE:10 11.222222222222221
(byte*) render_current::screen_line
(byte*) render_current::screen_line#0 screen_line zp ZP_WORD:29 100.18181818181819
(byte*) render_current::screen_line#0 screen_line zp ZP_WORD:23 100.18181818181819
(byte) render_current::xpos
(byte) render_current::xpos#0 xpos zp ZP_BYTE:12 202.0
(byte) render_current::xpos#1 xpos zp ZP_BYTE:12 667.3333333333334
@ -762,35 +752,21 @@
(byte) render_current::ypos2#1 ypos2 zp ZP_BYTE:9 67.33333333333333
(byte) render_current::ypos2#2 ypos2 zp ZP_BYTE:9 29.823529411764707
(void()) render_init()
(byte*~) render_init::$12 $12 zp ZP_WORD:15 202.0
(byte~) render_init::$22 reg byte a 22.0
(byte~) render_init::$23 reg byte a 22.0
(byte~) render_init::$13 reg byte a 22.0
(byte~) render_init::$14 reg byte a 22.0
(label) render_init::@1
(label) render_init::@2
(label) render_init::@3
(label) render_init::@4
(label) render_init::@7
(label) render_init::@8
(label) render_init::@9
(label) render_init::@return
(byte) render_init::c
(byte) render_init::c#1 reg byte x 151.5
(byte) render_init::c#2 reg byte x 101.0
(byte) render_init::i
(byte) render_init::i#1 reg byte x 16.5
(byte) render_init::i#2 reg byte x 6.285714285714286
(byte) render_init::l
(byte) render_init::l#1 l zp ZP_BYTE:2 16.5
(byte) render_init::l#4 l zp ZP_BYTE:2 3.142857142857143
(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_2
(byte*) render_init::li_2#1 li_2 zp ZP_WORD:15 7.333333333333333
(byte*) render_init::li_2#2 li_2 zp ZP_WORD:15 5.5
(byte*) render_init::line
(byte*) render_init::line#1 line zp ZP_WORD:7 7.333333333333333
(byte*) render_init::line#4 line zp ZP_WORD:7 20.499999999999996
(label) render_init::vicSelectGfxBank1
(byte~) render_init::vicSelectGfxBank1_$0
(label) render_init::vicSelectGfxBank1_@1
@ -825,44 +801,59 @@
(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::@11
(label) render_screen_original::@2
(label) render_screen_original::@3
(label) render_screen_original::@4
(label) render_screen_original::@5
(label) render_screen_original::@7
(label) render_screen_original::@9
(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 reg byte y 75.75
(byte) render_screen_original::c#1 reg byte y 202.0
(byte) render_screen_original::c#2 reg byte y 303.0
(byte*) render_screen_original::orig
(byte*) render_screen_original::orig#1 orig zp ZP_WORD:7 13.3125
(byte*) render_screen_original::orig#2 orig zp ZP_WORD:7 202.0
(byte*) render_screen_original::orig#5 orig zp ZP_WORD:7 18.666666666666664
(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::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::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#4 oscr zp ZP_WORD:7 14.0
(byte*) render_screen_original::screen
(byte*) render_screen_original::screen#10 screen zp ZP_WORD:15 50.5
(byte*) render_screen_original::screen#11 screen zp ZP_WORD:15 2.0
(byte*) render_screen_original::screen#12 screen zp ZP_WORD:15 42.599999999999994
(byte*) render_screen_original::screen#2 screen zp ZP_WORD:15 101.0
(byte*) render_screen_original::screen#3 screen zp ZP_WORD:15 101.0
(byte*) render_screen_original::screen#5 screen zp ZP_WORD:15 157.0
(byte*) render_screen_original::screen#7 screen zp ZP_WORD:15 202.0
(byte*) render_screen_original::screen#8 screen zp ZP_WORD:15 24.0
(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::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 67.33333333333333
(byte) render_screen_original::x#5 reg byte x 56.11111111111111
(byte) render_screen_original::x#7 reg byte x 101.0
(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#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#8 y zp ZP_BYTE:2 1.0
(byte) render_screen_original::y#6 y zp ZP_BYTE:2 0.7586206896551724
(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
@ -874,8 +865,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:24 0.5714285714285714
(byte) render_screen_showing#1 render_screen_showing zp ZP_BYTE:24 20.0
(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
(void()) render_screen_swap()
(label) render_screen_swap::@return
(void()) render_show()
@ -976,13 +967,13 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq()
(const byte) toSpritePtr1_return#0 toSpritePtr1_return = ((byte))((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6
(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_init::l#4 render_init::l#1 render_screen_original::y#8 render_screen_original::y#1 ]
zp ZP_BYTE:3 [ render_screen_render#16 render_screen_render#11 ]
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: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 ]
zp ZP_BYTE:6 [ current_xpos#47 current_xpos#110 current_xpos#111 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::full#4 play_remove_lines::full#2 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#100 current_piece_gfx#101 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::line#4 render_init::line#1 render_init::li_1#2 render_init::li_1#1 fill::addr#2 fill::addr#1 render_screen_original::orig#2 render_screen_original::orig#5 render_screen_original::orig#1 play_lock_current::playfield_line#0 ]
zp ZP_WORD:7 [ current_piece_gfx#53 current_piece_gfx#100 current_piece_gfx#101 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#12 current_piece#74 current_piece#75 current_piece#76 current_piece#77 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#63 current_piece_char#88 current_piece_char#89 ]
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::c#0 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 ]
@ -998,9 +989,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::screen#7 render_screen_original::screen#10 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#11 render_screen_original::screen#12 render_screen_original::screen#2 render_screen_original::screen#3 render_init::$12 ]
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_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 ]
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_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 ]
@ -1015,21 +1006,21 @@ zp ZP_BYTE:22 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_
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::c#2 render_init::c#1 ]
reg byte x [ render_init::i#2 render_init::i#1 ]
reg byte y [ render_screen_original::c#2 render_screen_original::c#0 render_screen_original::c#1 ]
reg byte x [ render_screen_original::x#7 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:23 [ irq_raster_next#13 irq_raster_next#2 irq_raster_next#1 irq_raster_next#0 ]
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 ]
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 ]
reg byte x [ sprites_irq::raster_next#2 sprites_irq::raster_next#1 sprites_irq::raster_next#0 ]
zp ZP_BYTE:24 [ render_screen_showing#0 render_screen_showing#1 ]
zp ZP_BYTE:25 [ irq_sprite_ypos#0 irq_sprite_ypos#2 irq_sprite_ypos#1 ]
zp ZP_BYTE:26 [ irq_sprite_ptr#0 irq_sprite_ptr#2 irq_sprite_ptr#1 ]
zp ZP_BYTE:27 [ irq_cnt#0 irq_cnt#1 irq_cnt#14 ]
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 ]
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:28 [ main::render#1 main::render#2 ]
zp ZP_BYTE:32 [ 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 ]
@ -1038,7 +1029,6 @@ reg byte a [ play_move_rotate::return#4 ]
reg byte a [ main::$14 ]
reg byte a [ main::render#3 ]
reg byte a [ render_current::$5 ]
zp ZP_WORD:29 [ render_current::screen_line#0 play_collision::playfield_line#0 ]
reg byte a [ render_current::current_cell#0 ]
reg byte a [ render_playfield::$2 ]
reg byte a [ render_playfield::$3 ]
@ -1046,7 +1036,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:31 [ play_collision::i#1 ]
zp ZP_BYTE:33 [ play_collision::i#1 ]
reg byte a [ play_collision::$7 ]
reg byte a [ play_collision::return#12 ]
reg byte a [ play_move_leftright::$4 ]
@ -1080,8 +1070,11 @@ reg byte a [ keyboard_event_scan::$11 ]
reg byte a [ keyboard_matrix_read::return#0 ]
reg byte a [ play_init::$1 ]
reg byte a [ sprites_init::s2#0 ]
reg byte a [ render_init::$22 ]
reg byte a [ render_init::$23 ]
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 ]