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

Working on Tetris. Added colors and random piece selection (from SID voice 3 noice). Moved some code to separate files.

This commit is contained in:
jespergravgaard 2018-12-03 00:37:54 +01:00
parent eaa8d0c3fc
commit 4724d7707c
10 changed files with 6275 additions and 5320 deletions

View File

@ -0,0 +1,4 @@
lda {c1},x
sta {z1}
lda {c1}+1,x
sta {z1}+1

View File

@ -0,0 +1,4 @@
lda {c1},y
sta {z1}
lda {c1}+1,y
sta {z1}+1

View File

@ -65,6 +65,13 @@ public class TestPrograms {
compileAndCompare("tetris-npe");
}
//@Test
//public void testUnrollCall() throws IOException, URISyntaxException {
// compileAndCompare("unroll-call");
//}
*/
@Test
public void testFastMultiply8() throws IOException, URISyntaxException {
@ -106,11 +113,6 @@ public class TestPrograms {
compileAndCompare("bitwise-not");
}
//@Test
//public void testUnrollCall() throws IOException, URISyntaxException {
// compileAndCompare("unroll-call");
//}
@Test
public void testUnrollInfinite() throws IOException, URISyntaxException {
assertError("unroll-infinite", "Loop cannot be unrolled.");

View File

@ -0,0 +1,174 @@
// The tetris pieces
// The T-piece
align($40) byte[4*4*4] PIECE_T = {
1, 1, 1, 0,
0, 1, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 1, 0,
0, 1, 1, 0,
0, 0, 1, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 0, 0,
1, 1, 1, 0,
0, 0, 0, 0,
1, 0, 0, 0,
1, 1, 0, 0,
1, 0, 0, 0,
0, 0, 0, 0
};
// The S-piece
align($40) byte[4*4*4] PIECE_S = {
0, 0, 0, 0,
0, 1, 1, 0,
1, 1, 0, 0,
0, 0, 0, 0,
1, 0, 0, 0,
1, 1, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 1, 0,
1, 1, 0, 0,
0, 0, 0, 0,
1, 0, 0, 0,
1, 1, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0
};
// The Z-piece
align($40) byte[4*4*4] PIECE_Z = {
0, 0, 0, 0,
1, 1, 0, 0,
0, 1, 1, 0,
0, 0, 0, 0,
0, 1, 0, 0,
1, 1, 0, 0,
1, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
1, 1, 0, 0,
0, 1, 1, 0,
0, 0, 0, 0,
0, 1, 0, 0,
1, 1, 0, 0,
1, 0, 0, 0,
0, 0, 0, 0
};
// The L-piece
align($40) byte[4*4*4] PIECE_L = {
0, 0, 0, 0,
1, 1, 1, 0,
1, 0, 0, 0,
0, 0, 0, 0,
1, 1, 0, 0,
0, 1, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0,
0, 0, 1, 0,
1, 1, 1, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 0, 0,
0, 1, 0, 0,
0, 1, 1, 0,
0, 0, 0, 0
};
// The J-piece
align($40) byte[4*4*4] PIECE_J = {
1, 0, 0, 0,
1, 1, 1, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 1, 0,
0, 1, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
1, 1, 1, 0,
0, 0, 1, 0,
0, 0, 0, 0,
0, 1, 0, 0,
0, 1, 0, 0,
1, 1, 0, 0,
0, 0, 0, 0
};
// The O-piece
align($40) byte[4*4*4] PIECE_O = {
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
};
// The I-piece
align($40) byte[4*4*4] PIECE_I = {
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
};
// The different pieces
word[] PIECES = { (word)PIECE_T, (word)PIECE_S, (word)PIECE_Z, (word)PIECE_J, (word)PIECE_O, (word)PIECE_I, (word)PIECE_L };
// The colors to use for the pieces
byte[] PIECES_COLORS = { WHITE, LIGHT_GREY, GREEN, LIGHT_GREY, WHITE, WHITE, GREEN };

View File

@ -0,0 +1,27 @@
// SID registers for random number generation
const word* SID_VOICE3_FREQ = $d40e;
const byte* SID_VOICE3_FREQ_LOW = $d40e;
const byte* SID_VOICE3_FREQ_HIGH = $d40f;
const byte* SID_VOICE3_CONTROL = $d412;
const byte SID_CONTROL_NOISE = $80;
const byte SID_CONTROL_PULSE = $40;
const byte SID_CONTROL_SAWTOOTH = $20;
const byte SID_CONTROL_TRIANGLE = $10;
const byte SID_CONTROL_TEST = $08;
const byte SID_CONTROL_RING = $04;
const byte SID_CONTROL_SYNC = $02;
const byte SID_CONTROL_GATE = $01;
const byte* SID_VOICE3_OSC = $d41b;
// Initialize SID voice 3 for random number generation
void sid_rnd_init() {
*SID_VOICE3_FREQ = $ffff;
*SID_VOICE3_CONTROL = SID_CONTROL_NOISE;
}
// Get a random number from the SID voice 3,
// Must be initialized with sid_rnd_init()
byte sid_rnd() {
return *SID_VOICE3_OSC;
}

View File

@ -2,8 +2,8 @@
import "c64"
import "memory"
import "keyboard"
byte* SCREEN = $400;
import "sid"
import "pieces"
// The size of the playfield
const byte PLAYFIELD_LINES = 22;
@ -13,9 +13,6 @@ const byte PLAYFIELD_COLS = 10;
// The playfield is layed out line by line, meaning the first 10 bytes are line 1, the next 10 line 2 and so forth,
byte[PLAYFIELD_LINES*PLAYFIELD_COLS] playfield;
// Pointers to the screen address for rendering each playfield line
byte*[PLAYFIELD_LINES+3] screen_lines;
// Pointers to the playfield address for each playfield line
byte*[PLAYFIELD_LINES] playfield_lines;
@ -24,9 +21,9 @@ byte* current_piece = 0;
// The curent piece orientation - each piece have 4 orientations (00/$10/$20/$30).
// The orientation chooses one of the 4 sub-graphics of the piece.
byte current_piece_orientation = 0;
byte current_orientation = 0;
// Pointer to the current piece in the current orientation. Updated each time current_piece_orientation is updated.
// Pointer to the current piece in the current orientation. Updated each time current_orientation is updated.
byte* current_piece_gfx = 0;
// The color of the current piece
@ -37,15 +34,22 @@ byte current_xpos = 3;
byte current_ypos = 0;
// The rate of moving down the current piece (number of frames between moves if movedown is not not forced)
const byte current_movedown_rate = 50;
const byte current_movedown_slow = 50;
// The rate of moving down the current piece fast (number of frames between moves if movedown is not not forced)
const byte current_movedown_rate_fast = 5;
const byte current_movedown_fast = 5;
// Counts down til next movedown of current piece
byte current_movedown_counter = 0;
// The screen
byte* SCREEN = $400;
// Pointers to the screen address for rendering each playfield line
byte*[PLAYFIELD_LINES+3] screen_lines;
void main() {
sid_rnd_init();
asm { sei }
init();
spawn_current();
@ -85,17 +89,17 @@ byte play_move_down(byte key_event) {
}
// While space is held down move down faster
if(keyboard_event_pressed(KEY_SPACE)!=0) {
if(current_movedown_counter>=current_movedown_rate_fast) {
if(current_movedown_counter>=current_movedown_fast) {
movedown++;
}
}
// Move down slowly otherwise
if(current_movedown_counter>=current_movedown_rate) {
if(current_movedown_counter>=current_movedown_slow) {
movedown++;
}
// Attempt movedown
if(movedown!=0) {
if(collision(current_xpos,current_ypos+1,current_piece_orientation)==COLLISION_NONE) {
if(collision(current_xpos,current_ypos+1,current_orientation)==COLLISION_NONE) {
// Move current piece down
current_ypos++;
} else {
@ -115,12 +119,12 @@ byte play_move_down(byte key_event) {
byte play_move_leftright(byte key_event) {
// Handle keyboard events
if(key_event==KEY_COMMA) {
if(collision(current_xpos-1,current_ypos,current_piece_orientation)==COLLISION_NONE) {
if(collision(current_xpos-1,current_ypos,current_orientation)==COLLISION_NONE) {
current_xpos--;
return 1;
}
} else if(key_event==KEY_DOT) {
if(collision(current_xpos+1,current_ypos,current_piece_orientation)==COLLISION_NONE) {
if(collision(current_xpos+1,current_ypos,current_orientation)==COLLISION_NONE) {
current_xpos++;
return 1;
}
@ -134,15 +138,15 @@ byte play_move_rotate(byte key_event) {
// Handle keyboard events
byte orientation = $80;
if(key_event==KEY_Z) {
orientation = (current_piece_orientation-$10)&$3f;
orientation = (current_orientation-$10)&$3f;
} else if(key_event==KEY_X) {
orientation = (current_piece_orientation+$10)&$3f;
orientation = (current_orientation+$10)&$3f;
} else {
return 0;
}
if((collision(current_xpos, current_ypos, orientation) & (COLLISION_LEFT|COLLISION_RIGHT)) == 0) {
current_piece_orientation = orientation;
current_piece_gfx = current_piece + current_piece_orientation;
if(collision(current_xpos, current_ypos, orientation) == 0) {
current_orientation = orientation;
current_piece_gfx = current_piece + current_orientation;
return 1;
}
return 0;
@ -197,27 +201,35 @@ byte collision(byte xpos, byte ypos, byte orientation) {
// Lock the current piece onto the playfield
void lock_current() {
byte i = 0;
byte ypos2 = current_ypos<<1;
for(byte l:0..3) {
byte line = current_ypos + l;
byte* playfield_line = playfield_lines[line<<1];
byte* playfield_line = playfield_lines[ypos2];
byte col = current_xpos;
for(byte c:0..3) {
byte cell = current_piece_gfx[i++];
if(cell!=0) {
byte col = current_xpos + c;
if(current_piece_gfx[i++]!=0) {
playfield_line[col] = current_piece_color;
}
col++;
}
ypos2 += 2;
}
}
// Spawn a new piece
void spawn_current() {
current_piece = piece_t;
current_piece_orientation = 0;
current_piece_gfx = current_piece + current_piece_orientation;
current_piece_color = GREEN;
// Pick a random piece
(*BORDERCOL)++;
byte piece_idx = 7;
while(piece_idx==7) {
piece_idx = sid_rnd()&7;
}
(*BORDERCOL)--;
current_piece = PIECES[piece_idx<<1];
current_orientation = 0;
current_piece_gfx = current_piece + current_orientation;
current_xpos = 3;
current_ypos = 0;
current_piece_color = PIECES_COLORS[piece_idx];
}
// Initialize the screen and data tables
@ -279,171 +291,4 @@ void render_current() {
}
ypos2 += 2;
}
}
// The T-piece
align($40) byte[4*4*4] piece_t = {
1, 1, 1, 0,
0, 1, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 1, 0,
0, 1, 1, 0,
0, 0, 1, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 0, 0,
1, 1, 1, 0,
0, 0, 0, 0,
1, 0, 0, 0,
1, 1, 0, 0,
1, 0, 0, 0,
0, 0, 0, 0
};
// The S-piece
align($40) byte[4*4*4] piece_s = {
0, 0, 0, 0,
0, 1, 1, 0,
1, 1, 0, 0,
0, 0, 0, 0,
1, 0, 0, 0,
1, 1, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 1, 0,
1, 1, 0, 0,
0, 0, 0, 0,
1, 0, 0, 0,
1, 1, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0
};
// The Z-piece
align($40) byte[4*4*4] piece_z = {
0, 0, 0, 0,
1, 1, 0, 0,
0, 1, 1, 0,
0, 0, 0, 0,
0, 1, 0, 0,
1, 1, 0, 0,
1, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
1, 1, 0, 0,
0, 1, 1, 0,
0, 0, 0, 0,
0, 1, 0, 0,
1, 1, 0, 0,
1, 0, 0, 0,
0, 0, 0, 0
};
// The L-piece
align($40) byte[4*4*4] piece_l = {
0, 0, 0, 0,
1, 1, 1, 0,
1, 0, 0, 0,
0, 0, 0, 0,
1, 1, 0, 0,
0, 1, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0,
0, 0, 1, 0,
1, 1, 1, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 0, 0,
0, 1, 0, 0,
0, 1, 1, 0,
0, 0, 0, 0
};
// The J-piece
align($40) byte[4*4*4] piece_j = {
1, 0, 0, 0,
1, 1, 1, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 1, 1, 0,
0, 1, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
1, 1, 1, 0,
0, 0, 1, 0,
0, 0, 0, 0,
0, 1, 0, 0,
0, 1, 0, 0,
1, 1, 0, 0,
0, 0, 0, 0
};
// The O-piece
align($40) byte[4*4*4] piece_o = {
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
};
// The I-piece
align($40) byte[4*4*4] piece_i = {
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
};
}

View File

@ -7,8 +7,10 @@
.label CIA1_PORT_A = $dc00
.label CIA1_PORT_B = $dc01
.const BLACK = 0
.const WHITE = 1
.const GREEN = 5
.const DARK_GREY = $b
.const LIGHT_GREY = $f
.const KEY_Z = $c
.const KEY_LSHIFT = $f
.const KEY_X = $17
@ -18,11 +20,15 @@
.const KEY_CTRL = $3a
.const KEY_SPACE = $3c
.const KEY_COMMODORE = $3d
.label SCREEN = $400
.label SID_VOICE3_FREQ = $d40e
.label SID_VOICE3_CONTROL = $d412
.const SID_CONTROL_NOISE = $80
.label SID_VOICE3_OSC = $d41b
.const PLAYFIELD_LINES = $16
.const PLAYFIELD_COLS = $a
.const current_movedown_rate = $32
.const current_movedown_rate_fast = 5
.const current_movedown_slow = $32
.const current_movedown_fast = 5
.label SCREEN = $400
.const COLLISION_NONE = 0
.const COLLISION_PLAYFIELD = 1
.const COLLISION_BOTTOM = 2
@ -30,59 +36,57 @@
.const COLLISION_RIGHT = 8
.label keyboard_events_size = $13
.label current_ypos = 2
.label current_xpos = $12
.label current_piece_orientation = $e
.label current_xpos = $11
.label current_orientation = $e
.label current_piece_gfx = $f
.label current_piece = $c
.label current_piece_color = $11
.label current_piece_color = $12
.label current_movedown_counter = 3
.label current_piece_15 = 5
.label current_xpos_62 = 4
.label current_piece_gfx_61 = 5
.label current_piece_color_63 = 7
.label current_xpos_92 = 4
.label current_piece_gfx_82 = 5
.label current_piece_color_70 = 7
.label current_piece_67 = 5
.label current_piece_68 = 5
.label current_piece_gfx_62 = 5
.label current_piece_color_64 = 7
.label current_xpos_93 = 4
.label current_piece_gfx_84 = 5
.label current_piece_gfx_85 = 5
.label current_piece_color_72 = 7
.label current_piece_color_73 = 7
.label current_piece_69 = 5
.label current_piece_70 = 5
.label current_piece_71 = 5
.label current_piece_72 = 5
jsr main
main: {
.label key_event = $14
.label render = $15
jsr sid_rnd_init
sei
jsr init
jsr spawn_current
jsr render_playfield
lda #GREEN
sta current_piece_color_63
lda #<piece_t
sta current_piece_gfx_61
lda #>piece_t
sta current_piece_gfx_61+1
lda current_piece_gfx
sta current_piece_gfx_84
lda current_piece_gfx+1
sta current_piece_gfx_84+1
lda current_piece_color
sta current_piece_color_72
lda #3
sta current_xpos_62
ldx #0
jsr render_current
ldy spawn_current._3
lda PIECES,y
sta current_piece
lda PIECES+1,y
sta current_piece+1
lda #0
sta current_movedown_counter
sta keyboard_events_size
sta current_ypos
lda #3
sta current_xpos
lda #GREEN
sta current_piece_color
lda #<piece_t
sta current_piece_gfx
lda #>piece_t
sta current_piece_gfx+1
lda #0
sta current_piece_orientation
lda #<piece_t
sta current_piece
lda #>piece_t
sta current_piece+1
sta current_orientation
b4:
lda RASTER
cmp #$ff
@ -115,13 +119,13 @@ main: {
jsr render_playfield
ldx current_ypos
lda current_xpos
sta current_xpos_92
sta current_xpos_93
lda current_piece_gfx
sta current_piece_gfx_82
sta current_piece_gfx_85
lda current_piece_gfx+1
sta current_piece_gfx_82+1
sta current_piece_gfx_85+1
lda current_piece_color
sta current_piece_color_70
sta current_piece_color_73
jsr render_current
dec BORDERCOL
b10:
@ -154,14 +158,14 @@ render_current: {
ldx #0
b3:
ldy i
lda (current_piece_gfx_61),y
lda (current_piece_gfx_62),y
inc i
cmp #0
beq b4
lda xpos
cmp #PLAYFIELD_COLS
bcs b4
lda current_piece_color_63
lda current_piece_color_64
ldy xpos
sta (screen_line),y
b4:
@ -228,7 +232,7 @@ play_move_rotate: {
b2:
lda #$10
clc
adc current_piece_orientation
adc current_orientation
and #$3f
sta orientation
b4:
@ -237,15 +241,14 @@ play_move_rotate: {
ldy current_ypos
ldx orientation
lda current_piece
sta current_piece_70
sta current_piece_72
lda current_piece+1
sta current_piece_70+1
sta current_piece_72+1
jsr collision
and #COLLISION_LEFT|COLLISION_RIGHT
cmp #0
bne b3
lda orientation
sta current_piece_orientation
sta current_orientation
clc
adc current_piece
sta current_piece_gfx
@ -255,7 +258,7 @@ play_move_rotate: {
lda #1
jmp breturn
b1:
lda current_piece_orientation
lda current_orientation
sec
sbc #$10
and #$3f
@ -363,11 +366,11 @@ play_move_leftright: {
iny
sty collision.xpos
ldy current_ypos
ldx current_piece_orientation
ldx current_orientation
lda current_piece
sta current_piece_69
sta current_piece_71
lda current_piece+1
sta current_piece_69+1
sta current_piece_71+1
jsr collision
cmp #COLLISION_NONE
bne b3
@ -384,11 +387,11 @@ play_move_leftright: {
dex
stx collision.xpos
ldy current_ypos
ldx current_piece_orientation
ldx current_orientation
lda current_piece
sta current_piece_68
sta current_piece_70
lda current_piece+1
sta current_piece_68+1
sta current_piece_70+1
jsr collision
cmp #COLLISION_NONE
bne b3
@ -410,12 +413,12 @@ play_move_down: {
cmp #0
beq b2
lda current_movedown_counter
cmp #current_movedown_rate_fast
cmp #current_movedown_fast
bcc b2
inx
b2:
lda current_movedown_counter
cmp #current_movedown_rate
cmp #current_movedown_slow
bcc b4
inx
b4:
@ -425,31 +428,25 @@ play_move_down: {
iny
lda current_xpos
sta collision.xpos
ldx current_piece_orientation
ldx current_orientation
lda current_piece
sta current_piece_67
sta current_piece_69
lda current_piece+1
sta current_piece_67+1
sta current_piece_69+1
jsr collision
cmp #COLLISION_NONE
beq b6
jsr lock_current
jsr spawn_current
ldy spawn_current._3
lda PIECES,y
sta current_piece
lda PIECES+1,y
sta current_piece+1
lda #3
sta current_xpos
lda #GREEN
sta current_piece_color
lda #<piece_t
sta current_piece_gfx
lda #>piece_t
sta current_piece_gfx+1
lda #0
sta current_piece_orientation
lda #<piece_t
sta current_piece
lda #>piece_t
sta current_piece+1
lda #0
sta current_orientation
sta current_ypos
b7:
lda #0
@ -465,47 +462,90 @@ play_move_down: {
jmp b7
}
spawn_current: {
.label _3 = 2
inc BORDERCOL
ldx #7
b1:
cpx #7
beq b2
dec BORDERCOL
txa
asl
sta _3
tay
lda PIECES,y
sta current_piece_gfx
lda PIECES+1,y
sta current_piece_gfx+1
lda PIECES_COLORS,x
sta current_piece_color
rts
b2:
jsr sid_rnd
and #7
tax
jmp b1
}
sid_rnd: {
lda SID_VOICE3_OSC
rts
}
lock_current: {
.label ypos2 = 2
.label playfield_line = 5
.label i = 4
.label col = 7
.label i = 8
.label l = 3
.label i_2 = 4
.label i_3 = 4
.label i_7 = 4
.label i_9 = 4
asl ypos2
lda #0
sta i
sta l
sta i_3
b1:
lda current_ypos
clc
adc l
asl
tay
ldy ypos2
lda playfield_lines,y
sta playfield_line
lda playfield_lines+1,y
sta playfield_line+1
lda current_xpos
sta col
ldx #0
b2:
ldy i
ldy i_2
iny
sty i
ldy i_2
lda (current_piece_gfx),y
inc i
cmp #0
beq b3
txa
clc
adc current_xpos
tay
lda current_piece_color
ldy col
sta (playfield_line),y
b3:
inc col
inx
cpx #4
bne b2
bne b8
lda ypos2
clc
adc #2
sta ypos2
inc l
lda l
cmp #4
bne b1
bne b7
rts
b7:
lda i
sta i_7
jmp b1
b8:
lda i
sta i_9
jmp b2
}
keyboard_event_pressed: {
.label row_bits = 7
@ -745,13 +785,36 @@ fill: {
cmp end
bne b1
rts
}
sid_rnd_init: {
lda #<$ffff
sta SID_VOICE3_FREQ
lda #>$ffff
sta SID_VOICE3_FREQ+1
lda #SID_CONTROL_NOISE
sta SID_VOICE3_CONTROL
rts
}
keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f
keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80
keyboard_events: .fill 8, 0
keyboard_scan_values: .fill 8, 0
.align $40
piece_t: .byte 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0
PIECE_T: .byte 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0
.align $40
PIECE_S: .byte 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0
.align $40
PIECE_Z: .byte 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0
.align $40
PIECE_L: .byte 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0
.align $40
PIECE_J: .byte 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0
.align $40
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_COLORS: .byte WHITE, LIGHT_GREY, GREEN, LIGHT_GREY, WHITE, WHITE, GREEN
playfield_lines: .fill 2*PLAYFIELD_LINES, 0
PIECES: .word PIECE_T, PIECE_S, PIECE_Z, PIECE_J, PIECE_O, PIECE_I, PIECE_L
playfield: .fill PLAYFIELD_LINES*PLAYFIELD_COLS, 0
screen_lines: .fill 2*(PLAYFIELD_LINES+3), 0

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
(label) @21
(label) @23
(label) @begin
(label) @end
(byte) BLACK
@ -47,6 +47,26 @@
(const byte) KEY_X#0 KEY_X = (byte/signed byte/word/signed word/dword/signed dword) 23
(byte) KEY_Z
(const byte) KEY_Z#0 KEY_Z = (byte/signed byte/word/signed word/dword/signed dword) 12
(byte) LIGHT_GREY
(const byte) LIGHT_GREY#0 LIGHT_GREY = (byte/signed byte/word/signed word/dword/signed dword) 15
(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_COLORS
(const byte[]) PIECES_COLORS#0 PIECES_COLORS = { (const byte) WHITE#0, (const byte) LIGHT_GREY#0, (const byte) GREEN#0, (const byte) LIGHT_GREY#0, (const byte) WHITE#0, (const byte) WHITE#0, (const byte) GREEN#0 }
(byte[4*4*4]) PIECE_I
(const byte[4*4*4]) PIECE_I#0 PIECE_I = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 }
(byte[4*4*4]) PIECE_J
(const byte[4*4*4]) PIECE_J#0 PIECE_J = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 }
(byte[4*4*4]) PIECE_L
(const byte[4*4*4]) PIECE_L#0 PIECE_L = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 }
(byte[4*4*4]) PIECE_O
(const byte[4*4*4]) PIECE_O#0 PIECE_O = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 }
(byte[4*4*4]) PIECE_S
(const byte[4*4*4]) PIECE_S#0 PIECE_S = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 }
(byte[4*4*4]) PIECE_T
(const byte[4*4*4]) PIECE_T#0 PIECE_T = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 }
(byte[4*4*4]) PIECE_Z
(const byte[4*4*4]) PIECE_Z#0 PIECE_Z = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 }
(byte) PLAYFIELD_COLS
(const byte) PLAYFIELD_COLS#0 PLAYFIELD_COLS = (byte/signed byte/word/signed word/dword/signed dword) 10
(byte) PLAYFIELD_LINES
@ -55,6 +75,16 @@
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
(byte) SID_CONTROL_NOISE
(const byte) SID_CONTROL_NOISE#0 SID_CONTROL_NOISE = (byte/word/signed word/dword/signed dword) 128
(byte*) SID_VOICE3_CONTROL
(const byte*) SID_VOICE3_CONTROL#0 SID_VOICE3_CONTROL = ((byte*))(word/dword/signed dword) 54290
(word*) SID_VOICE3_FREQ
(const word*) SID_VOICE3_FREQ#0 SID_VOICE3_FREQ = ((word*))(word/dword/signed dword) 54286
(byte*) SID_VOICE3_OSC
(const byte*) SID_VOICE3_OSC#0 SID_VOICE3_OSC = ((byte*))(word/dword/signed dword) 54299
(byte) WHITE
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1
(byte()) collision((byte) collision::xpos , (byte) collision::ypos , (byte) collision::orientation)
(byte~) collision::$7 reg byte a 2002.0
(label) collision::@1
@ -120,55 +150,61 @@
(byte) current_movedown_counter#10 current_movedown_counter zp ZP_BYTE:3 0.5333333333333333
(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:3 0.5
(byte) current_movedown_counter#15 current_movedown_counter zp ZP_BYTE:3 1.3
(byte) current_movedown_rate
(const byte) current_movedown_rate#0 current_movedown_rate = (byte/signed byte/word/signed word/dword/signed dword) 50
(byte) current_movedown_rate_fast
(const byte) current_movedown_rate_fast#0 current_movedown_rate_fast = (byte/signed byte/word/signed word/dword/signed dword) 5
(byte) current_movedown_fast
(const byte) current_movedown_fast#0 current_movedown_fast = (byte/signed byte/word/signed word/dword/signed dword) 5
(byte) current_movedown_slow
(const byte) current_movedown_slow#0 current_movedown_slow = (byte/signed byte/word/signed word/dword/signed dword) 50
(byte) current_orientation
(byte) current_orientation#15 current_orientation zp ZP_BYTE:14 0.5
(byte) current_orientation#18 current_orientation zp ZP_BYTE:14 0.32653061224489793
(byte) current_orientation#23 current_orientation zp ZP_BYTE:14 1.0625
(byte) current_orientation#33 current_orientation zp ZP_BYTE:14 4.0
(byte) current_orientation#8 current_orientation zp ZP_BYTE:14 3.0
(byte*) current_piece
(byte*) current_piece#11 current_piece zp ZP_WORD:12 0.5
(byte*) current_piece#13 current_piece zp ZP_WORD:12 0.3382352941176471
(byte*) current_piece#11 current_piece zp ZP_WORD:12 0.5588235294117647
(byte*) current_piece#13 current_piece zp ZP_WORD:12 0.3432835820895522
(byte*) current_piece#15 current_piece#15 zp ZP_WORD:5 10.0
(byte*) current_piece#23 current_piece zp ZP_WORD:12 4.0
(byte*~) current_piece#67 current_piece#67 zp ZP_WORD:5 4.0
(byte*~) current_piece#68 current_piece#68 zp ZP_WORD:5 4.0
(byte*) current_piece#23 current_piece zp ZP_WORD:12 6.0
(byte*~) current_piece#68 current_piece zp ZP_WORD:12 4.0
(byte*~) current_piece#69 current_piece#69 zp ZP_WORD:5 4.0
(byte*~) current_piece#70 current_piece#70 zp ZP_WORD:5 4.0
(byte*~) current_piece#71 current_piece#71 zp ZP_WORD:5 4.0
(byte*~) current_piece#72 current_piece#72 zp ZP_WORD:5 4.0
(byte*~) current_piece#73 current_piece zp ZP_WORD:12 4.0
(byte) current_piece_color
(byte) current_piece_color#11 current_piece_color zp ZP_BYTE:17 20.32
(byte) current_piece_color#13 current_piece_color zp ZP_BYTE:17 1.0
(byte) current_piece_color#23 current_piece_color zp ZP_BYTE:17 4.0
(byte) current_piece_color#63 current_piece_color#63 zp ZP_BYTE:7 53.26315789473684
(byte~) current_piece_color#70 current_piece_color#70 zp ZP_BYTE:7 22.0
(byte) current_piece_color#11 current_piece_color zp ZP_BYTE:18 19.96078431372549
(byte) current_piece_color#13 current_piece_color zp ZP_BYTE:18 1.0
(byte) current_piece_color#15 current_piece_color zp ZP_BYTE:18 0.7272727272727273
(byte) current_piece_color#23 current_piece_color zp ZP_BYTE:18 6.0
(byte) current_piece_color#64 current_piece_color#64 zp ZP_BYTE:7 53.368421052631575
(byte~) current_piece_color#72 current_piece_color#72 zp ZP_BYTE:7 4.0
(byte~) current_piece_color#73 current_piece_color#73 zp ZP_BYTE:7 22.0
(byte*) current_piece_gfx
(byte*) current_piece_gfx#15 current_piece_gfx zp ZP_WORD:15 20.32
(byte*) current_piece_gfx#17 current_piece_gfx zp ZP_WORD:15 0.2857142857142857
(byte*) current_piece_gfx#10 current_piece_gfx zp ZP_WORD:15 0.6666666666666666
(byte*) current_piece_gfx#15 current_piece_gfx zp ZP_WORD:15 19.96078431372549
(byte*) current_piece_gfx#17 current_piece_gfx zp ZP_WORD:15 0.2962962962962963
(byte*) current_piece_gfx#18 current_piece_gfx zp ZP_WORD:15 1.75
(byte*) current_piece_gfx#29 current_piece_gfx zp ZP_WORD:15 4.0
(byte*) current_piece_gfx#61 current_piece_gfx#61 zp ZP_WORD:5 53.26315789473684
(byte*) current_piece_gfx#29 current_piece_gfx zp ZP_WORD:15 6.0
(byte*) current_piece_gfx#62 current_piece_gfx#62 zp ZP_WORD:5 53.368421052631575
(byte*) current_piece_gfx#8 current_piece_gfx zp ZP_WORD:15 4.0
(byte*~) current_piece_gfx#82 current_piece_gfx#82 zp ZP_WORD:5 11.0
(byte) current_piece_orientation
(byte) current_piece_orientation#15 current_piece_orientation zp ZP_BYTE:14 0.5
(byte) current_piece_orientation#18 current_piece_orientation zp ZP_BYTE:14 0.32
(byte) current_piece_orientation#23 current_piece_orientation zp ZP_BYTE:14 1.0625
(byte) current_piece_orientation#33 current_piece_orientation zp ZP_BYTE:14 4.0
(byte) current_piece_orientation#8 current_piece_orientation zp ZP_BYTE:14 3.0
(byte*~) current_piece_gfx#84 current_piece_gfx#84 zp ZP_WORD:5 2.0
(byte*~) current_piece_gfx#85 current_piece_gfx#85 zp ZP_WORD:5 11.0
(byte) current_xpos
(byte) current_xpos#16 current_xpos zp ZP_BYTE:18 20.36
(byte) current_xpos#19 current_xpos zp ZP_BYTE:18 0.72
(byte) current_xpos#23 current_xpos zp ZP_BYTE:18 0.8292682926829271
(byte) current_xpos#36 current_xpos zp ZP_BYTE:18 4.0
(byte) current_xpos#16 current_xpos zp ZP_BYTE:17 2.313725490196078
(byte) current_xpos#19 current_xpos zp ZP_BYTE:17 0.72
(byte) current_xpos#23 current_xpos zp ZP_BYTE:17 0.8500000000000003
(byte) current_xpos#36 current_xpos zp ZP_BYTE:17 4.0
(byte) current_xpos#62 current_xpos#62 zp ZP_BYTE:4 5.894736842105264
(byte) current_xpos#7 current_xpos zp ZP_BYTE:18 4.0
(byte) current_xpos#9 current_xpos zp ZP_BYTE:18 4.0
(byte~) current_xpos#92 current_xpos#92 zp ZP_BYTE:4 7.333333333333333
(byte) current_xpos#7 current_xpos zp ZP_BYTE:17 4.0
(byte) current_xpos#9 current_xpos zp ZP_BYTE:17 4.0
(byte~) current_xpos#93 current_xpos#93 zp ZP_BYTE:4 7.333333333333333
(byte) current_ypos
(byte) current_ypos#12 current_ypos zp ZP_BYTE:2 2.4081632653061225
(byte) current_ypos#16 current_ypos zp ZP_BYTE:2 0.4705882352941177
(byte) current_ypos#12 current_ypos zp ZP_BYTE:2 0.5588235294117647
(byte) current_ypos#16 current_ypos zp ZP_BYTE:2 0.47761194029850734
(byte) current_ypos#22 reg byte x 13.0
(byte) current_ypos#31 current_ypos zp ZP_BYTE:2 4.0
(byte) current_ypos#4 current_ypos zp ZP_BYTE:2 4.0
(byte~) current_ypos#72 reg byte x 5.5
(byte~) current_ypos#68 reg byte x 5.5
(void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val)
(label) fill::@1
(label) fill::@return
@ -312,34 +348,39 @@
(byte[8]) keyboard_scan_values
(const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) }
(void()) lock_current()
(byte~) lock_current::$1 reg byte a 202.0
(label) lock_current::@1
(label) lock_current::@2
(label) lock_current::@3
(label) lock_current::@4
(label) lock_current::@5
(label) lock_current::@7
(label) lock_current::@8
(label) lock_current::@return
(byte) lock_current::c
(byte) lock_current::c#1 reg byte x 1501.5
(byte) lock_current::c#2 reg byte x 500.5
(byte) lock_current::cell
(byte) lock_current::cell#0 reg byte a 1001.0
(byte) lock_current::c#1 reg byte x 1001.0
(byte) lock_current::c#2 reg byte x 400.4
(byte) lock_current::col
(byte) lock_current::col#0 reg byte a 2002.0
(byte) lock_current::col#0 col zp ZP_BYTE:7 202.0
(byte) lock_current::col#1 col zp ZP_BYTE:7 500.5
(byte) lock_current::col#2 col zp ZP_BYTE:7 776.0
(byte) lock_current::i
(byte) lock_current::i#1 i zp ZP_BYTE:4 262.875
(byte) lock_current::i#2 i zp ZP_BYTE:4 1552.0
(byte) lock_current::i#3 i zp ZP_BYTE:4 50.5
(byte) lock_current::i#1 i zp ZP_BYTE:8 233.66666666666669
(byte) lock_current::i#2 i#2 zp ZP_BYTE:4 1552.0
(byte) lock_current::i#3 i#3 zp ZP_BYTE:4 67.33333333333333
(byte~) lock_current::i#7 i#7 zp ZP_BYTE:4 202.0
(byte~) lock_current::i#9 i#9 zp ZP_BYTE:4 2002.0
(byte) lock_current::l
(byte) lock_current::l#1 l zp ZP_BYTE:3 151.5
(byte) lock_current::l#2 l zp ZP_BYTE:3 25.25
(byte) lock_current::line
(byte) lock_current::line#0 reg byte a 202.0
(byte) lock_current::l#1 l zp ZP_BYTE:3 101.0
(byte) lock_current::l#6 l zp ZP_BYTE:3 16.833333333333332
(byte*) lock_current::playfield_line
(byte*) lock_current::playfield_line#0 playfield_line zp ZP_WORD:5 122.44444444444446
(byte*) lock_current::playfield_line#0 playfield_line zp ZP_WORD:5 110.19999999999999
(byte) lock_current::ypos2
(byte) lock_current::ypos2#0 ypos2 zp ZP_BYTE:2 4.0
(byte) lock_current::ypos2#1 ypos2 zp ZP_BYTE:2 50.5
(byte) lock_current::ypos2#2 ypos2 zp ZP_BYTE:2 27.727272727272727
(void()) main()
(byte~) main::$10 reg byte a 22.0
(byte~) main::$8 reg byte a 22.0
(byte~) main::$11 reg byte a 22.0
(byte~) main::$9 reg byte a 22.0
(label) main::@1
(label) main::@10
@ -347,13 +388,14 @@
(label) main::@21
(label) main::@22
(label) main::@23
(label) main::@25
(label) main::@24
(label) main::@26
(label) main::@27
(label) main::@28
(label) main::@29
(label) main::@30
(label) main::@31
(label) main::@32
(label) main::@4
(label) main::@7
(label) main::@9
@ -363,8 +405,6 @@
(byte) main::render#1 render zp ZP_BYTE:21 4.4
(byte) main::render#2 render zp ZP_BYTE:21 4.4
(byte) main::render#3 reg byte a 22.0
(byte[4*4*4]) piece_t
(const byte[4*4*4]) piece_t#0 piece_t = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 }
(byte()) play_move_down((byte) play_move_down::key_event)
(byte~) play_move_down::$12 reg byte a 4.0
(byte~) play_move_down::$2 reg byte a 4.0
@ -414,7 +454,6 @@
(byte/signed word/word/dword/signed dword~) play_move_rotate::$2 reg byte a 4.0
(byte/signed word/word/dword/signed dword~) play_move_rotate::$4 reg byte a 4.0
(byte~) play_move_rotate::$6 reg byte a 4.0
(byte~) play_move_rotate::$8 reg byte a 4.0
(label) play_move_rotate::@1
(label) play_move_rotate::@11
(label) play_move_rotate::@14
@ -427,7 +466,7 @@
(byte) play_move_rotate::orientation
(byte) play_move_rotate::orientation#1 orientation zp ZP_BYTE:4 4.0
(byte) play_move_rotate::orientation#2 orientation zp ZP_BYTE:4 4.0
(byte) play_move_rotate::orientation#3 orientation zp ZP_BYTE:4 0.8
(byte) play_move_rotate::orientation#3 orientation zp ZP_BYTE:4 0.8888888888888888
(byte) play_move_rotate::return
(byte) play_move_rotate::return#0 reg byte a 22.0
(byte) play_move_rotate::return#2 reg byte a 3.6666666666666665
@ -489,16 +528,32 @@
(byte*) render_playfield::line#2 line zp ZP_WORD:5 1552.0
(byte*[PLAYFIELD_LINES#0+3]) screen_lines
(const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 screen_lines = { fill( PLAYFIELD_LINES#0+3, 0) }
(byte()) sid_rnd()
(label) sid_rnd::@return
(byte) sid_rnd::return
(byte) sid_rnd::return#0 reg byte a 34.33333333333333
(byte) sid_rnd::return#2 reg byte a 202.0
(void()) sid_rnd_init()
(label) sid_rnd_init::@return
(void()) spawn_current()
(byte~) spawn_current::$1 reg byte a 202.0
(byte~) spawn_current::$3 $3 zp ZP_BYTE:2 0.18181818181818182
(label) spawn_current::@1
(label) spawn_current::@2
(label) spawn_current::@3
(label) spawn_current::@7
(label) spawn_current::@return
(byte) spawn_current::piece_idx
(byte) spawn_current::piece_idx#1 reg byte x 202.0
(byte) spawn_current::piece_idx#2 reg byte x 41.199999999999996
zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 init::l#4 init::l#1 ]
zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 lock_current::l#2 lock_current::l#1 ]
reg byte x [ current_ypos#22 current_ypos#72 ]
zp ZP_BYTE:4 [ current_xpos#62 current_xpos#92 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 lock_current::i#2 lock_current::i#3 lock_current::i#1 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
zp ZP_WORD:5 [ current_piece_gfx#61 current_piece_gfx#82 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 collision::piece_gfx#0 init::li#2 init::li#1 init::pli#2 init::pli#1 init::line#4 init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 lock_current::playfield_line#0 ]
zp ZP_BYTE:7 [ current_piece_color#63 current_piece_color#70 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 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_BYTE:8 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 keyboard_event_scan::row_scan#0 ]
zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 init::l#4 init::l#1 spawn_current::$3 ]
zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 lock_current::l#6 lock_current::l#1 ]
reg byte x [ current_ypos#22 current_ypos#68 ]
zp ZP_BYTE:4 [ current_xpos#62 current_xpos#93 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
zp ZP_WORD:5 [ current_piece_gfx#62 current_piece_gfx#84 current_piece_gfx#85 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#69 current_piece#70 current_piece#71 current_piece#72 collision::piece_gfx#0 init::li#2 init::li#1 init::pli#2 init::pli#1 init::line#4 init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 lock_current::playfield_line#0 ]
zp ZP_BYTE:7 [ current_piece_color#64 current_piece_color#72 current_piece_color#73 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 lock_current::col#2 lock_current::col#0 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_BYTE:8 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 lock_current::i#1 keyboard_event_scan::row_scan#0 ]
zp ZP_BYTE:9 [ render_current::l#3 render_current::l#1 collision::l#6 collision::l#1 ]
zp ZP_BYTE:10 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 collision::i#2 collision::i#3 collision::i#11 collision::i#13 ]
zp ZP_BYTE:11 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 collision::col#2 collision::col#9 collision::col#1 ]
@ -511,12 +566,13 @@ reg byte x [ collision::c#2 collision::c#1 ]
reg byte a [ collision::return#14 ]
reg byte a [ play_move_leftright::return#2 ]
reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ]
zp ZP_WORD:12 [ current_piece#23 current_piece#11 current_piece#13 init::$13 fill::end#0 ]
zp ZP_BYTE:14 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ]
zp ZP_WORD:15 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#8 current_piece_gfx#17 ]
zp ZP_BYTE:17 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ]
zp ZP_BYTE:18 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ]
zp ZP_WORD:12 [ current_piece#23 current_piece#73 current_piece#11 current_piece#13 current_piece#68 init::$13 fill::end#0 ]
zp ZP_BYTE:14 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ]
zp ZP_WORD:15 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#8 current_piece_gfx#17 ]
zp ZP_BYTE:17 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ]
zp ZP_BYTE:18 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ]
reg byte x [ play_move_down::return#3 ]
reg byte x [ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ]
reg byte x [ lock_current::c#2 lock_current::c#1 ]
reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ]
reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
@ -529,14 +585,14 @@ reg byte a [ keyboard_event_get::return#3 ]
zp ZP_BYTE:20 [ main::key_event#0 ]
reg byte a [ play_move_down::key_event#0 ]
reg byte a [ play_move_down::return#0 ]
reg byte a [ main::$8 ]
reg byte a [ main::$9 ]
zp ZP_BYTE:21 [ main::render#1 main::render#2 ]
reg byte a [ play_move_leftright::key_event#0 ]
reg byte a [ play_move_leftright::return#0 ]
reg byte a [ main::$9 ]
reg byte a [ main::$10 ]
reg byte a [ play_move_rotate::key_event#0 ]
reg byte a [ play_move_rotate::return#0 ]
reg byte a [ main::$10 ]
reg byte a [ main::$11 ]
reg byte a [ main::render#3 ]
zp ZP_WORD:22 [ render_current::screen_line#0 collision::playfield_line#0 ]
reg byte a [ render_current::current_cell#0 ]
@ -544,7 +600,6 @@ reg byte a [ render_playfield::$1 ]
reg byte a [ play_move_rotate::$2 ]
reg byte a [ collision::return#13 ]
reg byte a [ play_move_rotate::$6 ]
reg byte a [ play_move_rotate::$8 ]
reg byte a [ play_move_rotate::$4 ]
zp ZP_BYTE:24 [ collision::i#1 ]
reg byte a [ collision::$7 ]
@ -556,10 +611,9 @@ reg byte a [ keyboard_event_pressed::return#12 ]
reg byte a [ play_move_down::$2 ]
reg byte a [ collision::return#0 ]
reg byte a [ play_move_down::$12 ]
reg byte a [ lock_current::line#0 ]
reg byte a [ lock_current::$1 ]
reg byte a [ lock_current::cell#0 ]
reg byte a [ lock_current::col#0 ]
reg byte a [ sid_rnd::return#2 ]
reg byte a [ spawn_current::$1 ]
reg byte a [ sid_rnd::return#0 ]
reg byte a [ keyboard_event_pressed::$0 ]
reg byte a [ keyboard_event_pressed::$1 ]
reg byte a [ keyboard_event_pressed::return#11 ]