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"); compileAndCompare("tetris-npe");
} }
//@Test
//public void testUnrollCall() throws IOException, URISyntaxException {
// compileAndCompare("unroll-call");
//}
*/ */
@Test @Test
public void testFastMultiply8() throws IOException, URISyntaxException { public void testFastMultiply8() throws IOException, URISyntaxException {
@ -106,11 +113,6 @@ public class TestPrograms {
compileAndCompare("bitwise-not"); compileAndCompare("bitwise-not");
} }
//@Test
//public void testUnrollCall() throws IOException, URISyntaxException {
// compileAndCompare("unroll-call");
//}
@Test @Test
public void testUnrollInfinite() throws IOException, URISyntaxException { public void testUnrollInfinite() throws IOException, URISyntaxException {
assertError("unroll-infinite", "Loop cannot be unrolled."); 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 "c64"
import "memory" import "memory"
import "keyboard" import "keyboard"
import "sid"
byte* SCREEN = $400; import "pieces"
// The size of the playfield // The size of the playfield
const byte PLAYFIELD_LINES = 22; 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, // 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; 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 // Pointers to the playfield address for each playfield line
byte*[PLAYFIELD_LINES] playfield_lines; 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 curent piece orientation - each piece have 4 orientations (00/$10/$20/$30).
// The orientation chooses one of the 4 sub-graphics of the piece. // 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; byte* current_piece_gfx = 0;
// The color of the current piece // The color of the current piece
@ -37,15 +34,22 @@ byte current_xpos = 3;
byte current_ypos = 0; byte current_ypos = 0;
// The rate of moving down the current piece (number of frames between moves if movedown is not not forced) // 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) // 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 // Counts down til next movedown of current piece
byte current_movedown_counter = 0; 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() { void main() {
sid_rnd_init();
asm { sei } asm { sei }
init(); init();
spawn_current(); spawn_current();
@ -85,17 +89,17 @@ byte play_move_down(byte key_event) {
} }
// While space is held down move down faster // While space is held down move down faster
if(keyboard_event_pressed(KEY_SPACE)!=0) { if(keyboard_event_pressed(KEY_SPACE)!=0) {
if(current_movedown_counter>=current_movedown_rate_fast) { if(current_movedown_counter>=current_movedown_fast) {
movedown++; movedown++;
} }
} }
// Move down slowly otherwise // Move down slowly otherwise
if(current_movedown_counter>=current_movedown_rate) { if(current_movedown_counter>=current_movedown_slow) {
movedown++; movedown++;
} }
// Attempt movedown // Attempt movedown
if(movedown!=0) { 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 // Move current piece down
current_ypos++; current_ypos++;
} else { } else {
@ -115,12 +119,12 @@ byte play_move_down(byte key_event) {
byte play_move_leftright(byte key_event) { byte play_move_leftright(byte key_event) {
// Handle keyboard events // Handle keyboard events
if(key_event==KEY_COMMA) { 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--; current_xpos--;
return 1; return 1;
} }
} else if(key_event==KEY_DOT) { } 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++; current_xpos++;
return 1; return 1;
} }
@ -134,15 +138,15 @@ byte play_move_rotate(byte key_event) {
// Handle keyboard events // Handle keyboard events
byte orientation = $80; byte orientation = $80;
if(key_event==KEY_Z) { if(key_event==KEY_Z) {
orientation = (current_piece_orientation-$10)&$3f; orientation = (current_orientation-$10)&$3f;
} else if(key_event==KEY_X) { } else if(key_event==KEY_X) {
orientation = (current_piece_orientation+$10)&$3f; orientation = (current_orientation+$10)&$3f;
} else { } else {
return 0; return 0;
} }
if((collision(current_xpos, current_ypos, orientation) & (COLLISION_LEFT|COLLISION_RIGHT)) == 0) { if(collision(current_xpos, current_ypos, orientation) == 0) {
current_piece_orientation = orientation; current_orientation = orientation;
current_piece_gfx = current_piece + current_piece_orientation; current_piece_gfx = current_piece + current_orientation;
return 1; return 1;
} }
return 0; return 0;
@ -197,27 +201,35 @@ byte collision(byte xpos, byte ypos, byte orientation) {
// Lock the current piece onto the playfield // Lock the current piece onto the playfield
void lock_current() { void lock_current() {
byte i = 0; byte i = 0;
byte ypos2 = current_ypos<<1;
for(byte l:0..3) { for(byte l:0..3) {
byte line = current_ypos + l; byte* playfield_line = playfield_lines[ypos2];
byte* playfield_line = playfield_lines[line<<1]; byte col = current_xpos;
for(byte c:0..3) { for(byte c:0..3) {
byte cell = current_piece_gfx[i++]; if(current_piece_gfx[i++]!=0) {
if(cell!=0) {
byte col = current_xpos + c;
playfield_line[col] = current_piece_color; playfield_line[col] = current_piece_color;
} }
col++;
} }
ypos2 += 2;
} }
} }
// Spawn a new piece // Spawn a new piece
void spawn_current() { void spawn_current() {
current_piece = piece_t; // Pick a random piece
current_piece_orientation = 0; (*BORDERCOL)++;
current_piece_gfx = current_piece + current_piece_orientation; byte piece_idx = 7;
current_piece_color = GREEN; 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_xpos = 3;
current_ypos = 0; current_ypos = 0;
current_piece_color = PIECES_COLORS[piece_idx];
} }
// Initialize the screen and data tables // Initialize the screen and data tables
@ -279,171 +291,4 @@ void render_current() {
} }
ypos2 += 2; 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_A = $dc00
.label CIA1_PORT_B = $dc01 .label CIA1_PORT_B = $dc01
.const BLACK = 0 .const BLACK = 0
.const WHITE = 1
.const GREEN = 5 .const GREEN = 5
.const DARK_GREY = $b .const DARK_GREY = $b
.const LIGHT_GREY = $f
.const KEY_Z = $c .const KEY_Z = $c
.const KEY_LSHIFT = $f .const KEY_LSHIFT = $f
.const KEY_X = $17 .const KEY_X = $17
@ -18,11 +20,15 @@
.const KEY_CTRL = $3a .const KEY_CTRL = $3a
.const KEY_SPACE = $3c .const KEY_SPACE = $3c
.const KEY_COMMODORE = $3d .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_LINES = $16
.const PLAYFIELD_COLS = $a .const PLAYFIELD_COLS = $a
.const current_movedown_rate = $32 .const current_movedown_slow = $32
.const current_movedown_rate_fast = 5 .const current_movedown_fast = 5
.label SCREEN = $400
.const COLLISION_NONE = 0 .const COLLISION_NONE = 0
.const COLLISION_PLAYFIELD = 1 .const COLLISION_PLAYFIELD = 1
.const COLLISION_BOTTOM = 2 .const COLLISION_BOTTOM = 2
@ -30,59 +36,57 @@
.const COLLISION_RIGHT = 8 .const COLLISION_RIGHT = 8
.label keyboard_events_size = $13 .label keyboard_events_size = $13
.label current_ypos = 2 .label current_ypos = 2
.label current_xpos = $12 .label current_xpos = $11
.label current_piece_orientation = $e .label current_orientation = $e
.label current_piece_gfx = $f .label current_piece_gfx = $f
.label current_piece = $c .label current_piece = $c
.label current_piece_color = $11 .label current_piece_color = $12
.label current_movedown_counter = 3 .label current_movedown_counter = 3
.label current_piece_15 = 5 .label current_piece_15 = 5
.label current_xpos_62 = 4 .label current_xpos_62 = 4
.label current_piece_gfx_61 = 5 .label current_piece_gfx_62 = 5
.label current_piece_color_63 = 7 .label current_piece_color_64 = 7
.label current_xpos_92 = 4 .label current_xpos_93 = 4
.label current_piece_gfx_82 = 5 .label current_piece_gfx_84 = 5
.label current_piece_color_70 = 7 .label current_piece_gfx_85 = 5
.label current_piece_67 = 5 .label current_piece_color_72 = 7
.label current_piece_68 = 5 .label current_piece_color_73 = 7
.label current_piece_69 = 5 .label current_piece_69 = 5
.label current_piece_70 = 5 .label current_piece_70 = 5
.label current_piece_71 = 5
.label current_piece_72 = 5
jsr main jsr main
main: { main: {
.label key_event = $14 .label key_event = $14
.label render = $15 .label render = $15
jsr sid_rnd_init
sei sei
jsr init jsr init
jsr spawn_current jsr spawn_current
jsr render_playfield jsr render_playfield
lda #GREEN lda current_piece_gfx
sta current_piece_color_63 sta current_piece_gfx_84
lda #<piece_t lda current_piece_gfx+1
sta current_piece_gfx_61 sta current_piece_gfx_84+1
lda #>piece_t lda current_piece_color
sta current_piece_gfx_61+1 sta current_piece_color_72
lda #3 lda #3
sta current_xpos_62 sta current_xpos_62
ldx #0 ldx #0
jsr render_current jsr render_current
ldy spawn_current._3
lda PIECES,y
sta current_piece
lda PIECES+1,y
sta current_piece+1
lda #0 lda #0
sta current_movedown_counter sta current_movedown_counter
sta keyboard_events_size sta keyboard_events_size
sta current_ypos sta current_ypos
lda #3 lda #3
sta current_xpos 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 lda #0
sta current_piece_orientation sta current_orientation
lda #<piece_t
sta current_piece
lda #>piece_t
sta current_piece+1
b4: b4:
lda RASTER lda RASTER
cmp #$ff cmp #$ff
@ -115,13 +119,13 @@ main: {
jsr render_playfield jsr render_playfield
ldx current_ypos ldx current_ypos
lda current_xpos lda current_xpos
sta current_xpos_92 sta current_xpos_93
lda current_piece_gfx lda current_piece_gfx
sta current_piece_gfx_82 sta current_piece_gfx_85
lda current_piece_gfx+1 lda current_piece_gfx+1
sta current_piece_gfx_82+1 sta current_piece_gfx_85+1
lda current_piece_color lda current_piece_color
sta current_piece_color_70 sta current_piece_color_73
jsr render_current jsr render_current
dec BORDERCOL dec BORDERCOL
b10: b10:
@ -154,14 +158,14 @@ render_current: {
ldx #0 ldx #0
b3: b3:
ldy i ldy i
lda (current_piece_gfx_61),y lda (current_piece_gfx_62),y
inc i inc i
cmp #0 cmp #0
beq b4 beq b4
lda xpos lda xpos
cmp #PLAYFIELD_COLS cmp #PLAYFIELD_COLS
bcs b4 bcs b4
lda current_piece_color_63 lda current_piece_color_64
ldy xpos ldy xpos
sta (screen_line),y sta (screen_line),y
b4: b4:
@ -228,7 +232,7 @@ play_move_rotate: {
b2: b2:
lda #$10 lda #$10
clc clc
adc current_piece_orientation adc current_orientation
and #$3f and #$3f
sta orientation sta orientation
b4: b4:
@ -237,15 +241,14 @@ play_move_rotate: {
ldy current_ypos ldy current_ypos
ldx orientation ldx orientation
lda current_piece lda current_piece
sta current_piece_70 sta current_piece_72
lda current_piece+1 lda current_piece+1
sta current_piece_70+1 sta current_piece_72+1
jsr collision jsr collision
and #COLLISION_LEFT|COLLISION_RIGHT
cmp #0 cmp #0
bne b3 bne b3
lda orientation lda orientation
sta current_piece_orientation sta current_orientation
clc clc
adc current_piece adc current_piece
sta current_piece_gfx sta current_piece_gfx
@ -255,7 +258,7 @@ play_move_rotate: {
lda #1 lda #1
jmp breturn jmp breturn
b1: b1:
lda current_piece_orientation lda current_orientation
sec sec
sbc #$10 sbc #$10
and #$3f and #$3f
@ -363,11 +366,11 @@ play_move_leftright: {
iny iny
sty collision.xpos sty collision.xpos
ldy current_ypos ldy current_ypos
ldx current_piece_orientation ldx current_orientation
lda current_piece lda current_piece
sta current_piece_69 sta current_piece_71
lda current_piece+1 lda current_piece+1
sta current_piece_69+1 sta current_piece_71+1
jsr collision jsr collision
cmp #COLLISION_NONE cmp #COLLISION_NONE
bne b3 bne b3
@ -384,11 +387,11 @@ play_move_leftright: {
dex dex
stx collision.xpos stx collision.xpos
ldy current_ypos ldy current_ypos
ldx current_piece_orientation ldx current_orientation
lda current_piece lda current_piece
sta current_piece_68 sta current_piece_70
lda current_piece+1 lda current_piece+1
sta current_piece_68+1 sta current_piece_70+1
jsr collision jsr collision
cmp #COLLISION_NONE cmp #COLLISION_NONE
bne b3 bne b3
@ -410,12 +413,12 @@ play_move_down: {
cmp #0 cmp #0
beq b2 beq b2
lda current_movedown_counter lda current_movedown_counter
cmp #current_movedown_rate_fast cmp #current_movedown_fast
bcc b2 bcc b2
inx inx
b2: b2:
lda current_movedown_counter lda current_movedown_counter
cmp #current_movedown_rate cmp #current_movedown_slow
bcc b4 bcc b4
inx inx
b4: b4:
@ -425,31 +428,25 @@ play_move_down: {
iny iny
lda current_xpos lda current_xpos
sta collision.xpos sta collision.xpos
ldx current_piece_orientation ldx current_orientation
lda current_piece lda current_piece
sta current_piece_67 sta current_piece_69
lda current_piece+1 lda current_piece+1
sta current_piece_67+1 sta current_piece_69+1
jsr collision jsr collision
cmp #COLLISION_NONE cmp #COLLISION_NONE
beq b6 beq b6
jsr lock_current jsr lock_current
jsr spawn_current jsr spawn_current
ldy spawn_current._3
lda PIECES,y
sta current_piece
lda PIECES+1,y
sta current_piece+1
lda #3 lda #3
sta current_xpos 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 lda #0
sta current_orientation
sta current_ypos sta current_ypos
b7: b7:
lda #0 lda #0
@ -465,47 +462,90 @@ play_move_down: {
jmp b7 jmp b7
} }
spawn_current: { 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 rts
} }
lock_current: { lock_current: {
.label ypos2 = 2
.label playfield_line = 5 .label playfield_line = 5
.label i = 4 .label col = 7
.label i = 8
.label l = 3 .label l = 3
.label i_2 = 4
.label i_3 = 4
.label i_7 = 4
.label i_9 = 4
asl ypos2
lda #0 lda #0
sta i
sta l sta l
sta i_3
b1: b1:
lda current_ypos ldy ypos2
clc
adc l
asl
tay
lda playfield_lines,y lda playfield_lines,y
sta playfield_line sta playfield_line
lda playfield_lines+1,y lda playfield_lines+1,y
sta playfield_line+1 sta playfield_line+1
lda current_xpos
sta col
ldx #0 ldx #0
b2: b2:
ldy i ldy i_2
iny
sty i
ldy i_2
lda (current_piece_gfx),y lda (current_piece_gfx),y
inc i
cmp #0 cmp #0
beq b3 beq b3
txa
clc
adc current_xpos
tay
lda current_piece_color lda current_piece_color
ldy col
sta (playfield_line),y sta (playfield_line),y
b3: b3:
inc col
inx inx
cpx #4 cpx #4
bne b2 bne b8
lda ypos2
clc
adc #2
sta ypos2
inc l inc l
lda l lda l
cmp #4 cmp #4
bne b1 bne b7
rts rts
b7:
lda i
sta i_7
jmp b1
b8:
lda i
sta i_9
jmp b2
} }
keyboard_event_pressed: { keyboard_event_pressed: {
.label row_bits = 7 .label row_bits = 7
@ -745,13 +785,36 @@ fill: {
cmp end cmp end
bne b1 bne b1
rts 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_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_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80
keyboard_events: .fill 8, 0 keyboard_events: .fill 8, 0
keyboard_scan_values: .fill 8, 0 keyboard_scan_values: .fill 8, 0
.align $40 .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 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 playfield: .fill PLAYFIELD_LINES*PLAYFIELD_COLS, 0
screen_lines: .fill 2*(PLAYFIELD_LINES+3), 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) @begin
(label) @end (label) @end
(byte) BLACK (byte) BLACK
@ -47,6 +47,26 @@
(const byte) KEY_X#0 KEY_X = (byte/signed byte/word/signed word/dword/signed dword) 23 (const byte) KEY_X#0 KEY_X = (byte/signed byte/word/signed word/dword/signed dword) 23
(byte) KEY_Z (byte) KEY_Z
(const byte) KEY_Z#0 KEY_Z = (byte/signed byte/word/signed word/dword/signed dword) 12 (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 (byte) PLAYFIELD_COLS
(const byte) PLAYFIELD_COLS#0 PLAYFIELD_COLS = (byte/signed byte/word/signed word/dword/signed dword) 10 (const byte) PLAYFIELD_COLS#0 PLAYFIELD_COLS = (byte/signed byte/word/signed word/dword/signed dword) 10
(byte) PLAYFIELD_LINES (byte) PLAYFIELD_LINES
@ -55,6 +75,16 @@
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (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((byte) collision::xpos , (byte) collision::ypos , (byte) collision::orientation)
(byte~) collision::$7 reg byte a 2002.0 (byte~) collision::$7 reg byte a 2002.0
(label) collision::@1 (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#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#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_counter#15 current_movedown_counter zp ZP_BYTE:3 1.3
(byte) current_movedown_rate (byte) current_movedown_fast
(const byte) current_movedown_rate#0 current_movedown_rate = (byte/signed byte/word/signed word/dword/signed dword) 50 (const byte) current_movedown_fast#0 current_movedown_fast = (byte/signed byte/word/signed word/dword/signed dword) 5
(byte) current_movedown_rate_fast (byte) current_movedown_slow
(const byte) current_movedown_rate_fast#0 current_movedown_rate_fast = (byte/signed byte/word/signed word/dword/signed dword) 5 (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
(byte*) current_piece#11 current_piece zp ZP_WORD:12 0.5 (byte*) current_piece#11 current_piece zp ZP_WORD:12 0.5588235294117647
(byte*) current_piece#13 current_piece zp ZP_WORD:12 0.3382352941176471 (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#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#23 current_piece zp ZP_WORD:12 6.0
(byte*~) current_piece#67 current_piece#67 zp ZP_WORD:5 4.0 (byte*~) current_piece#68 current_piece zp ZP_WORD:12 4.0
(byte*~) current_piece#68 current_piece#68 zp ZP_WORD:5 4.0
(byte*~) current_piece#69 current_piece#69 zp ZP_WORD:5 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#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
(byte) current_piece_color#11 current_piece_color zp ZP_BYTE:17 20.32 (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:17 1.0 (byte) current_piece_color#13 current_piece_color zp ZP_BYTE:18 1.0
(byte) current_piece_color#23 current_piece_color zp ZP_BYTE:17 4.0 (byte) current_piece_color#15 current_piece_color zp ZP_BYTE:18 0.7272727272727273
(byte) current_piece_color#63 current_piece_color#63 zp ZP_BYTE:7 53.26315789473684 (byte) current_piece_color#23 current_piece_color zp ZP_BYTE:18 6.0
(byte~) current_piece_color#70 current_piece_color#70 zp ZP_BYTE:7 22.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
(byte*) current_piece_gfx#15 current_piece_gfx zp ZP_WORD:15 20.32 (byte*) current_piece_gfx#10 current_piece_gfx zp ZP_WORD:15 0.6666666666666666
(byte*) current_piece_gfx#17 current_piece_gfx zp ZP_WORD:15 0.2857142857142857 (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#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#29 current_piece_gfx zp ZP_WORD:15 6.0
(byte*) current_piece_gfx#61 current_piece_gfx#61 zp ZP_WORD:5 53.26315789473684 (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#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_gfx#84 current_piece_gfx#84 zp ZP_WORD:5 2.0
(byte) current_piece_orientation (byte*~) current_piece_gfx#85 current_piece_gfx#85 zp ZP_WORD:5 11.0
(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_xpos (byte) current_xpos
(byte) current_xpos#16 current_xpos zp ZP_BYTE:18 20.36 (byte) current_xpos#16 current_xpos zp ZP_BYTE:17 2.313725490196078
(byte) current_xpos#19 current_xpos zp ZP_BYTE:18 0.72 (byte) current_xpos#19 current_xpos zp ZP_BYTE:17 0.72
(byte) current_xpos#23 current_xpos zp ZP_BYTE:18 0.8292682926829271 (byte) current_xpos#23 current_xpos zp ZP_BYTE:17 0.8500000000000003
(byte) current_xpos#36 current_xpos zp ZP_BYTE:18 4.0 (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#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#7 current_xpos zp ZP_BYTE:17 4.0
(byte) current_xpos#9 current_xpos zp ZP_BYTE:18 4.0 (byte) current_xpos#9 current_xpos zp ZP_BYTE:17 4.0
(byte~) current_xpos#92 current_xpos#92 zp ZP_BYTE:4 7.333333333333333 (byte~) current_xpos#93 current_xpos#93 zp ZP_BYTE:4 7.333333333333333
(byte) current_ypos (byte) current_ypos
(byte) current_ypos#12 current_ypos zp ZP_BYTE:2 2.4081632653061225 (byte) current_ypos#12 current_ypos zp ZP_BYTE:2 0.5588235294117647
(byte) current_ypos#16 current_ypos zp ZP_BYTE:2 0.4705882352941177 (byte) current_ypos#16 current_ypos zp ZP_BYTE:2 0.47761194029850734
(byte) current_ypos#22 reg byte x 13.0 (byte) current_ypos#22 reg byte x 13.0
(byte) current_ypos#31 current_ypos zp ZP_BYTE:2 4.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#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) (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val)
(label) fill::@1 (label) fill::@1
(label) fill::@return (label) fill::@return
@ -312,34 +348,39 @@
(byte[8]) keyboard_scan_values (byte[8]) keyboard_scan_values
(const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) } (const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) }
(void()) lock_current() (void()) lock_current()
(byte~) lock_current::$1 reg byte a 202.0
(label) lock_current::@1 (label) lock_current::@1
(label) lock_current::@2 (label) lock_current::@2
(label) lock_current::@3 (label) lock_current::@3
(label) lock_current::@4 (label) lock_current::@4
(label) lock_current::@5 (label) lock_current::@5
(label) lock_current::@7
(label) lock_current::@8
(label) lock_current::@return (label) lock_current::@return
(byte) lock_current::c (byte) lock_current::c
(byte) lock_current::c#1 reg byte x 1501.5 (byte) lock_current::c#1 reg byte x 1001.0
(byte) lock_current::c#2 reg byte x 500.5 (byte) lock_current::c#2 reg byte x 400.4
(byte) lock_current::cell
(byte) lock_current::cell#0 reg byte a 1001.0
(byte) lock_current::col (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
(byte) lock_current::i#1 i zp ZP_BYTE:4 262.875 (byte) lock_current::i#1 i zp ZP_BYTE:8 233.66666666666669
(byte) lock_current::i#2 i zp ZP_BYTE:4 1552.0 (byte) lock_current::i#2 i#2 zp ZP_BYTE:4 1552.0
(byte) lock_current::i#3 i zp ZP_BYTE:4 50.5 (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
(byte) lock_current::l#1 l zp ZP_BYTE:3 151.5 (byte) lock_current::l#1 l zp ZP_BYTE:3 101.0
(byte) lock_current::l#2 l zp ZP_BYTE:3 25.25 (byte) lock_current::l#6 l zp ZP_BYTE:3 16.833333333333332
(byte) lock_current::line
(byte) lock_current::line#0 reg byte a 202.0
(byte*) lock_current::playfield_line (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() (void()) main()
(byte~) main::$10 reg byte a 22.0 (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 (byte~) main::$9 reg byte a 22.0
(label) main::@1 (label) main::@1
(label) main::@10 (label) main::@10
@ -347,13 +388,14 @@
(label) main::@21 (label) main::@21
(label) main::@22 (label) main::@22
(label) main::@23 (label) main::@23
(label) main::@25 (label) main::@24
(label) main::@26 (label) main::@26
(label) main::@27 (label) main::@27
(label) main::@28 (label) main::@28
(label) main::@29 (label) main::@29
(label) main::@30 (label) main::@30
(label) main::@31 (label) main::@31
(label) main::@32
(label) main::@4 (label) main::@4
(label) main::@7 (label) main::@7
(label) main::@9 (label) main::@9
@ -363,8 +405,6 @@
(byte) main::render#1 render zp ZP_BYTE:21 4.4 (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#2 render zp ZP_BYTE:21 4.4
(byte) main::render#3 reg byte a 22.0 (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((byte) play_move_down::key_event)
(byte~) play_move_down::$12 reg byte a 4.0 (byte~) play_move_down::$12 reg byte a 4.0
(byte~) play_move_down::$2 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::$2 reg byte a 4.0
(byte/signed word/word/dword/signed dword~) play_move_rotate::$4 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::$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::@1
(label) play_move_rotate::@11 (label) play_move_rotate::@11
(label) play_move_rotate::@14 (label) play_move_rotate::@14
@ -427,7 +466,7 @@
(byte) play_move_rotate::orientation (byte) play_move_rotate::orientation
(byte) play_move_rotate::orientation#1 orientation zp ZP_BYTE:4 4.0 (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#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
(byte) play_move_rotate::return#0 reg byte a 22.0 (byte) play_move_rotate::return#0 reg byte a 22.0
(byte) play_move_rotate::return#2 reg byte a 3.6666666666666665 (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*) render_playfield::line#2 line zp ZP_WORD:5 1552.0
(byte*[PLAYFIELD_LINES#0+3]) screen_lines (byte*[PLAYFIELD_LINES#0+3]) screen_lines
(const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 screen_lines = { fill( PLAYFIELD_LINES#0+3, 0) } (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() (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 (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: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#2 lock_current::l#1 ] 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#72 ] reg byte x [ current_ypos#22 current_ypos#68 ]
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_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#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_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#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: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 keyboard_event_scan::row_scan#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: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: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 ] 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 [ collision::return#14 ]
reg byte a [ play_move_leftright::return#2 ] 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 ] 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_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_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] 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#8 current_piece_gfx#17 ] 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_piece_color#23 current_piece_color#11 current_piece_color#13 ] 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_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 [ 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 x [ lock_current::c#2 lock_current::c#1 ]
reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#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 ] 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 ] zp ZP_BYTE:20 [ main::key_event#0 ]
reg byte a [ play_move_down::key_event#0 ] reg byte a [ play_move_down::key_event#0 ]
reg byte a [ play_move_down::return#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 ] 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::key_event#0 ]
reg byte a [ play_move_leftright::return#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::key_event#0 ]
reg byte a [ play_move_rotate::return#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 ] reg byte a [ main::render#3 ]
zp ZP_WORD:22 [ render_current::screen_line#0 collision::playfield_line#0 ] zp ZP_WORD:22 [ render_current::screen_line#0 collision::playfield_line#0 ]
reg byte a [ render_current::current_cell#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 [ play_move_rotate::$2 ]
reg byte a [ collision::return#13 ] reg byte a [ collision::return#13 ]
reg byte a [ play_move_rotate::$6 ] reg byte a [ play_move_rotate::$6 ]
reg byte a [ play_move_rotate::$8 ]
reg byte a [ play_move_rotate::$4 ] reg byte a [ play_move_rotate::$4 ]
zp ZP_BYTE:24 [ collision::i#1 ] zp ZP_BYTE:24 [ collision::i#1 ]
reg byte a [ collision::$7 ] 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 [ play_move_down::$2 ]
reg byte a [ collision::return#0 ] reg byte a [ collision::return#0 ]
reg byte a [ play_move_down::$12 ] reg byte a [ play_move_down::$12 ]
reg byte a [ lock_current::line#0 ] reg byte a [ sid_rnd::return#2 ]
reg byte a [ lock_current::$1 ] reg byte a [ spawn_current::$1 ]
reg byte a [ lock_current::cell#0 ] reg byte a [ sid_rnd::return#0 ]
reg byte a [ lock_current::col#0 ]
reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$0 ]
reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::$1 ]
reg byte a [ keyboard_event_pressed::return#11 ] reg byte a [ keyboard_event_pressed::return#11 ]