From 4724d7707c1d273d0da2a000e875e1e19d8cc910 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Mon, 3 Dec 2018 00:37:54 +0100 Subject: [PATCH] Working on Tetris. Added colors and random piece selection (from SID voice 3 noice). Moved some code to separate files. --- .../pbuz1=pptc1_derefidx_vbuxx_plus_0.asm | 4 + .../pbuz1=pptc1_derefidx_vbuyy_plus_0.asm | 4 + .../dk/camelot64/kickc/test/TestPrograms.java | 12 +- src/test/kc/examples/tetris/pieces.kc | 174 + src/test/kc/examples/tetris/sid.kc | 27 + src/test/kc/examples/tetris/tetris.kc | 237 +- src/test/ref/examples/tetris/tetris.asm | 225 +- src/test/ref/examples/tetris/tetris.cfg | 811 +- src/test/ref/examples/tetris/tetris.log | 9895 +++++++++-------- src/test/ref/examples/tetris/tetris.sym | 206 +- 10 files changed, 6275 insertions(+), 5320 deletions(-) create mode 100644 src/main/fragment/pbuz1=pptc1_derefidx_vbuxx_plus_0.asm create mode 100644 src/main/fragment/pbuz1=pptc1_derefidx_vbuyy_plus_0.asm create mode 100644 src/test/kc/examples/tetris/pieces.kc create mode 100644 src/test/kc/examples/tetris/sid.kc diff --git a/src/main/fragment/pbuz1=pptc1_derefidx_vbuxx_plus_0.asm b/src/main/fragment/pbuz1=pptc1_derefidx_vbuxx_plus_0.asm new file mode 100644 index 000000000..77cdec92f --- /dev/null +++ b/src/main/fragment/pbuz1=pptc1_derefidx_vbuxx_plus_0.asm @@ -0,0 +1,4 @@ +lda {c1},x +sta {z1} +lda {c1}+1,x +sta {z1}+1 \ No newline at end of file diff --git a/src/main/fragment/pbuz1=pptc1_derefidx_vbuyy_plus_0.asm b/src/main/fragment/pbuz1=pptc1_derefidx_vbuyy_plus_0.asm new file mode 100644 index 000000000..9c735d2d0 --- /dev/null +++ b/src/main/fragment/pbuz1=pptc1_derefidx_vbuyy_plus_0.asm @@ -0,0 +1,4 @@ +lda {c1},y +sta {z1} +lda {c1}+1,y +sta {z1}+1 \ No newline at end of file diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index e8a9824ae..a48653ab0 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -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."); diff --git a/src/test/kc/examples/tetris/pieces.kc b/src/test/kc/examples/tetris/pieces.kc new file mode 100644 index 000000000..d065eef5a --- /dev/null +++ b/src/test/kc/examples/tetris/pieces.kc @@ -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 }; \ No newline at end of file diff --git a/src/test/kc/examples/tetris/sid.kc b/src/test/kc/examples/tetris/sid.kc new file mode 100644 index 000000000..6713cd2fc --- /dev/null +++ b/src/test/kc/examples/tetris/sid.kc @@ -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; +} + diff --git a/src/test/kc/examples/tetris/tetris.kc b/src/test/kc/examples/tetris/tetris.kc index 04c79324f..f93b3b2d5 100644 --- a/src/test/kc/examples/tetris/tetris.kc +++ b/src/test/kc/examples/tetris/tetris.kc @@ -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 - -}; +} \ No newline at end of file diff --git a/src/test/ref/examples/tetris/tetris.asm b/src/test/ref/examples/tetris/tetris.asm index 9ee7f83a6..e8ee604cb 100644 --- a/src/test/ref/examples/tetris/tetris.asm +++ b/src/test/ref/examples/tetris/tetris.asm @@ -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+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+1 lda #0 - sta current_piece_orientation - 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+1 - lda #0 - sta current_piece_orientation - 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 diff --git a/src/test/ref/examples/tetris/tetris.cfg b/src/test/ref/examples/tetris/tetris.cfg index b07c444ed..4daa3b3cb 100644 --- a/src/test/ref/examples/tetris/tetris.cfg +++ b/src/test/ref/examples/tetris/tetris.cfg @@ -1,606 +1,651 @@ @begin: scope:[] from [0] phi() - to:@21 -@21: scope:[] from @begin + to:@23 +@23: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @21 +@end: scope:[] from @23 [3] phi() -main: scope:[main] from @21 - asm { sei } - [5] call init +main: scope:[main] from @23 + [4] phi() + [5] call sid_rnd_init to:main::@21 main::@21: scope:[main] from main - [6] phi() - [7] call spawn_current + asm { sei } + [7] call init to:main::@22 main::@22: scope:[main] from main::@21 [8] phi() - [9] call render_playfield + [9] call spawn_current to:main::@23 main::@23: scope:[main] from main::@22 [10] phi() - [11] call render_current + [11] call render_playfield + to:main::@24 +main::@24: scope:[main] from main::@23 + [12] (byte*~) current_piece_gfx#84 ← (byte*) current_piece_gfx#10 + [13] (byte~) current_piece_color#72 ← (byte) current_piece_color#15 + [14] call render_current + [15] (byte*~) current_piece#68 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) to:main::@1 -main::@1: scope:[main] from main::@10 main::@23 - [12] (byte) current_movedown_counter#15 ← phi( main::@10/(byte) current_movedown_counter#12 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [12] (byte) keyboard_events_size#19 ← phi( main::@10/(byte) keyboard_events_size#16 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [12] (byte) current_ypos#12 ← phi( main::@10/(byte) current_ypos#16 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [12] (byte) current_xpos#16 ← phi( main::@10/(byte) current_xpos#23 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 3 ) - [12] (byte) current_piece_color#11 ← phi( main::@10/(byte) current_piece_color#13 main::@23/(const byte) GREEN#0 ) - [12] (byte*) current_piece_gfx#15 ← phi( main::@10/(byte*) current_piece_gfx#18 main::@23/(const byte[4*4*4]) piece_t#0 ) - [12] (byte) current_piece_orientation#15 ← phi( main::@10/(byte) current_piece_orientation#23 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [12] (byte*) current_piece#11 ← phi( main::@10/(byte*) current_piece#13 main::@23/(const byte[4*4*4]) piece_t#0 ) +main::@1: scope:[main] from main::@10 main::@24 + [16] (byte) current_movedown_counter#15 ← phi( main::@10/(byte) current_movedown_counter#12 main::@24/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [16] (byte) keyboard_events_size#19 ← phi( main::@10/(byte) keyboard_events_size#16 main::@24/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [16] (byte) current_piece_color#11 ← phi( main::@10/(byte) current_piece_color#13 main::@24/(byte) current_piece_color#15 ) + [16] (byte) current_ypos#12 ← phi( main::@10/(byte) current_ypos#16 main::@24/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [16] (byte) current_xpos#16 ← phi( main::@10/(byte) current_xpos#23 main::@24/(byte/signed byte/word/signed word/dword/signed dword) 3 ) + [16] (byte*) current_piece_gfx#15 ← phi( main::@10/(byte*) current_piece_gfx#18 main::@24/(byte*) current_piece_gfx#10 ) + [16] (byte) current_orientation#15 ← phi( main::@10/(byte) current_orientation#23 main::@24/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [16] (byte*) current_piece#11 ← phi( main::@10/(byte*) current_piece#13 main::@24/(byte*~) current_piece#68 ) to:main::@4 main::@4: scope:[main] from main::@1 main::@4 - [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 + [17] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 main::@7 - [14] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 + [18] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 to:main::@9 main::@9: scope:[main] from main::@7 - [15] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) - [16] call keyboard_event_scan - to:main::@25 -main::@25: scope:[main] from main::@9 - [17] phi() - [18] call keyboard_event_get - [19] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + [19] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + [20] call keyboard_event_scan to:main::@26 -main::@26: scope:[main] from main::@25 - [20] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 - [21] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 - [22] call play_move_down - [23] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 +main::@26: scope:[main] from main::@9 + [21] phi() + [22] call keyboard_event_get + [23] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 to:main::@27 main::@27: scope:[main] from main::@26 - [24] (byte~) main::$8 ← (byte) play_move_down::return#0 - [25] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$8 - [26] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 - [27] call play_move_leftright - [28] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + [24] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 + [25] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 + [26] call play_move_down + [27] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 to:main::@28 main::@28: scope:[main] from main::@27 - [29] (byte~) main::$9 ← (byte) play_move_leftright::return#0 - [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 - [31] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 - [32] call play_move_rotate - [33] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + [28] (byte~) main::$9 ← (byte) play_move_down::return#0 + [29] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$9 + [30] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 + [31] call play_move_leftright + [32] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 to:main::@29 main::@29: scope:[main] from main::@28 - [34] (byte~) main::$10 ← (byte) play_move_rotate::return#0 - [35] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$10 - [36] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 - to:main::@19 -main::@19: scope:[main] from main::@29 - [37] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) - [38] call render_playfield + [33] (byte~) main::$10 ← (byte) play_move_leftright::return#0 + [34] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$10 + [35] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 + [36] call play_move_rotate + [37] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 to:main::@30 -main::@30: scope:[main] from main::@19 - [39] (byte~) current_ypos#72 ← (byte) current_ypos#16 - [40] (byte~) current_xpos#92 ← (byte) current_xpos#23 - [41] (byte*~) current_piece_gfx#82 ← (byte*) current_piece_gfx#18 - [42] (byte~) current_piece_color#70 ← (byte) current_piece_color#13 - [43] call render_current +main::@30: scope:[main] from main::@29 + [38] (byte~) main::$11 ← (byte) play_move_rotate::return#0 + [39] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$11 + [40] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 + to:main::@19 +main::@19: scope:[main] from main::@30 + [41] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + [42] call render_playfield to:main::@31 -main::@31: scope:[main] from main::@30 - [44] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) +main::@31: scope:[main] from main::@19 + [43] (byte~) current_ypos#68 ← (byte) current_ypos#16 + [44] (byte~) current_xpos#93 ← (byte) current_xpos#23 + [45] (byte*~) current_piece_gfx#85 ← (byte*) current_piece_gfx#18 + [46] (byte~) current_piece_color#73 ← (byte) current_piece_color#13 + [47] call render_current + to:main::@32 +main::@32: scope:[main] from main::@31 + [48] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) to:main::@10 -main::@10: scope:[main] from main::@29 main::@31 - [45] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) +main::@10: scope:[main] from main::@30 main::@32 + [49] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) to:main::@1 -render_current: scope:[render_current] from main::@23 main::@30 - [46] (byte) current_piece_color#63 ← phi( main::@23/(const byte) GREEN#0 main::@30/(byte~) current_piece_color#70 ) - [46] (byte*) current_piece_gfx#61 ← phi( main::@23/(const byte[4*4*4]) piece_t#0 main::@30/(byte*~) current_piece_gfx#82 ) - [46] (byte) current_xpos#62 ← phi( main::@23/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@30/(byte~) current_xpos#92 ) - [46] (byte) current_ypos#22 ← phi( main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@30/(byte~) current_ypos#72 ) - [47] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 +render_current: scope:[render_current] from main::@24 main::@31 + [50] (byte) current_piece_color#64 ← phi( main::@24/(byte~) current_piece_color#72 main::@31/(byte~) current_piece_color#73 ) + [50] (byte*) current_piece_gfx#62 ← phi( main::@24/(byte*~) current_piece_gfx#84 main::@31/(byte*~) current_piece_gfx#85 ) + [50] (byte) current_xpos#62 ← phi( main::@24/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@31/(byte~) current_xpos#93 ) + [50] (byte) current_ypos#22 ← phi( main::@24/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(byte~) current_ypos#68 ) + [51] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:render_current::@1 render_current::@1: scope:[render_current] from render_current render_current::@2 - [48] (byte) render_current::i#4 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::i#8 ) - [48] (byte) render_current::l#3 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::l#1 ) - [48] (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@2/(byte) render_current::ypos2#1 ) - [49] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 + [52] (byte) render_current::i#4 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::i#8 ) + [52] (byte) render_current::l#3 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::l#1 ) + [52] (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@2/(byte) render_current::ypos2#1 ) + [53] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 to:render_current::@6 render_current::@6: scope:[render_current] from render_current::@1 - [50] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) - [51] (byte) render_current::xpos#0 ← (byte) current_xpos#62 + [54] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) + [55] (byte) render_current::xpos#0 ← (byte) current_xpos#62 to:render_current::@3 render_current::@3: scope:[render_current] from render_current::@4 render_current::@6 - [52] (byte) render_current::c#2 ← phi( render_current::@4/(byte) render_current::c#1 render_current::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [52] (byte) render_current::xpos#2 ← phi( render_current::@4/(byte) render_current::xpos#1 render_current::@6/(byte) render_current::xpos#0 ) - [52] (byte) render_current::i#2 ← phi( render_current::@4/(byte) render_current::i#1 render_current::@6/(byte) render_current::i#4 ) - [53] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#61 + (byte) render_current::i#2) - [54] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 - [55] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 + [56] (byte) render_current::c#2 ← phi( render_current::@4/(byte) render_current::c#1 render_current::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [56] (byte) render_current::xpos#2 ← phi( render_current::@4/(byte) render_current::xpos#1 render_current::@6/(byte) render_current::xpos#0 ) + [56] (byte) render_current::i#2 ← phi( render_current::@4/(byte) render_current::i#1 render_current::@6/(byte) render_current::i#4 ) + [57] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#62 + (byte) render_current::i#2) + [58] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 + [59] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 to:render_current::@7 render_current::@7: scope:[render_current] from render_current::@3 - [56] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 + [60] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 to:render_current::@8 render_current::@8: scope:[render_current] from render_current::@7 - [57] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#63 + [61] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#64 to:render_current::@4 render_current::@4: scope:[render_current] from render_current::@3 render_current::@7 render_current::@8 - [58] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 - [59] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 - [60] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 + [62] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 + [63] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 + [64] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 to:render_current::@2 render_current::@2: scope:[render_current] from render_current::@1 render_current::@4 - [61] (byte) render_current::i#8 ← phi( render_current::@1/(byte) render_current::i#4 render_current::@4/(byte) render_current::i#1 ) - [62] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [63] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 - [64] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 + [65] (byte) render_current::i#8 ← phi( render_current::@1/(byte) render_current::i#4 render_current::@4/(byte) render_current::i#1 ) + [66] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [67] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 + [68] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 to:render_current::@return render_current::@return: scope:[render_current] from render_current::@2 - [65] return + [69] return to:@return -render_playfield: scope:[render_playfield] from main::@19 main::@22 - [66] phi() +render_playfield: scope:[render_playfield] from main::@19 main::@23 + [70] phi() to:render_playfield::@1 render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3 - [67] (byte) render_playfield::i#3 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::i#1 ) - [67] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::l#1 ) - [68] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [69] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) + [71] (byte) render_playfield::i#3 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::i#1 ) + [71] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::l#1 ) + [72] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [73] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) to:render_playfield::@2 render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2 - [70] (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@2/(byte) render_playfield::c#1 ) - [70] (byte*) render_playfield::line#2 ← phi( render_playfield::@1/(byte*) render_playfield::line#0 render_playfield::@2/(byte*) render_playfield::line#1 ) - [70] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) - [71] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) - [72] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 - [73] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 - [74] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 - [75] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 + [74] (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@2/(byte) render_playfield::c#1 ) + [74] (byte*) render_playfield::line#2 ← phi( render_playfield::@1/(byte*) render_playfield::line#0 render_playfield::@2/(byte*) render_playfield::line#1 ) + [74] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) + [75] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) + [76] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 + [77] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 + [78] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 + [79] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 to:render_playfield::@3 render_playfield::@3: scope:[render_playfield] from render_playfield::@2 - [76] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 - [77] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 + [80] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 + [81] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 to:render_playfield::@return render_playfield::@return: scope:[render_playfield] from render_playfield::@3 - [78] return - to:@return -play_move_rotate: scope:[play_move_rotate] from main::@28 - [79] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 - to:play_move_rotate::@6 -play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate - [80] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 - to:play_move_rotate::@return -play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@11 play_move_rotate::@14 play_move_rotate::@6 - [81] (byte*) current_piece_gfx#18 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#8 play_move_rotate::@14/(byte*) current_piece_gfx#17 play_move_rotate::@6/(byte*) current_piece_gfx#17 ) - [81] (byte) current_piece_orientation#23 ← phi( play_move_rotate::@11/(byte) current_piece_orientation#8 play_move_rotate::@14/(byte) current_piece_orientation#18 play_move_rotate::@6/(byte) current_piece_orientation#18 ) - [81] (byte) play_move_rotate::return#2 ← phi( play_move_rotate::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [82] return to:@return +play_move_rotate: scope:[play_move_rotate] from main::@29 + [83] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 + to:play_move_rotate::@6 +play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate + [84] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 + to:play_move_rotate::@return +play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@11 play_move_rotate::@14 play_move_rotate::@6 + [85] (byte*) current_piece_gfx#18 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#8 play_move_rotate::@14/(byte*) current_piece_gfx#17 play_move_rotate::@6/(byte*) current_piece_gfx#17 ) + [85] (byte) current_orientation#23 ← phi( play_move_rotate::@11/(byte) current_orientation#8 play_move_rotate::@14/(byte) current_orientation#18 play_move_rotate::@6/(byte) current_orientation#18 ) + [85] (byte) play_move_rotate::return#2 ← phi( play_move_rotate::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [86] return + to:@return play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@6 - [83] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 - [84] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 + [87] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 + [88] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 to:play_move_rotate::@4 play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2 - [85] (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) - [86] (byte) collision::xpos#3 ← (byte) current_xpos#23 - [87] (byte) collision::ypos#3 ← (byte) current_ypos#16 - [88] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 - [89] (byte*~) current_piece#70 ← (byte*) current_piece#13 - [90] call collision - [91] (byte) collision::return#13 ← (byte) collision::return#14 + [89] (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) + [90] (byte) collision::xpos#3 ← (byte) current_xpos#23 + [91] (byte) collision::ypos#3 ← (byte) current_ypos#16 + [92] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + [93] (byte*~) current_piece#72 ← (byte*) current_piece#13 + [94] call collision + [95] (byte) collision::return#13 ← (byte) collision::return#14 to:play_move_rotate::@14 play_move_rotate::@14: scope:[play_move_rotate] from play_move_rotate::@4 - [92] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 - [93] (byte~) play_move_rotate::$8 ← (byte~) play_move_rotate::$6 & (const byte) COLLISION_LEFT#0|(const byte) COLLISION_RIGHT#0 - [94] if((byte~) play_move_rotate::$8!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@return + [96] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 + [97] if((byte~) play_move_rotate::$6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@return to:play_move_rotate::@11 play_move_rotate::@11: scope:[play_move_rotate] from play_move_rotate::@14 - [95] (byte) current_piece_orientation#8 ← (byte) play_move_rotate::orientation#3 - [96] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_piece_orientation#8 + [98] (byte) current_orientation#8 ← (byte) play_move_rotate::orientation#3 + [99] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 to:play_move_rotate::@return play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate - [97] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 - [98] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 + [100] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 + [101] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 to:play_move_rotate::@4 collision: scope:[collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 - [99] (byte) collision::xpos#5 ← phi( play_move_down::@12/(byte) collision::xpos#0 play_move_leftright::@1/(byte) collision::xpos#1 play_move_leftright::@7/(byte) collision::xpos#2 play_move_rotate::@4/(byte) collision::xpos#3 ) - [99] (byte) collision::ypos#4 ← phi( play_move_down::@12/(byte) collision::ypos#0 play_move_leftright::@1/(byte) collision::ypos#1 play_move_leftright::@7/(byte) collision::ypos#2 play_move_rotate::@4/(byte) collision::ypos#3 ) - [99] (byte) collision::orientation#4 ← phi( play_move_down::@12/(byte) collision::orientation#0 play_move_leftright::@1/(byte) collision::orientation#1 play_move_leftright::@7/(byte) collision::orientation#2 play_move_rotate::@4/(byte) collision::orientation#3 ) - [99] (byte*) current_piece#15 ← phi( play_move_down::@12/(byte*~) current_piece#67 play_move_leftright::@1/(byte*~) current_piece#68 play_move_leftright::@7/(byte*~) current_piece#69 play_move_rotate::@4/(byte*~) current_piece#70 ) - [100] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 - [101] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [102] (byte) collision::xpos#5 ← phi( play_move_down::@12/(byte) collision::xpos#0 play_move_leftright::@1/(byte) collision::xpos#1 play_move_leftright::@7/(byte) collision::xpos#2 play_move_rotate::@4/(byte) collision::xpos#3 ) + [102] (byte) collision::ypos#4 ← phi( play_move_down::@12/(byte) collision::ypos#0 play_move_leftright::@1/(byte) collision::ypos#1 play_move_leftright::@7/(byte) collision::ypos#2 play_move_rotate::@4/(byte) collision::ypos#3 ) + [102] (byte) collision::orientation#4 ← phi( play_move_down::@12/(byte) collision::orientation#0 play_move_leftright::@1/(byte) collision::orientation#1 play_move_leftright::@7/(byte) collision::orientation#2 play_move_rotate::@4/(byte) collision::orientation#3 ) + [102] (byte*) current_piece#15 ← phi( play_move_down::@12/(byte*~) current_piece#69 play_move_leftright::@1/(byte*~) current_piece#70 play_move_leftright::@7/(byte*~) current_piece#71 play_move_rotate::@4/(byte*~) current_piece#72 ) + [103] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 + [104] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:collision::@1 collision::@1: scope:[collision] from collision collision::@20 - [102] (byte) collision::l#6 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte) collision::l#1 ) - [102] (byte) collision::i#3 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte~) collision::i#11 ) - [102] (byte) collision::ypos2#2 ← phi( collision/(byte) collision::ypos2#0 collision::@20/(byte) collision::ypos2#1 ) - [103] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) - [104] (byte~) collision::col#9 ← (byte) collision::xpos#5 + [105] (byte) collision::l#6 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte) collision::l#1 ) + [105] (byte) collision::i#3 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte~) collision::i#11 ) + [105] (byte) collision::ypos2#2 ← phi( collision/(byte) collision::ypos2#0 collision::@20/(byte) collision::ypos2#1 ) + [106] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) + [107] (byte~) collision::col#9 ← (byte) collision::xpos#5 to:collision::@2 collision::@2: scope:[collision] from collision::@1 collision::@21 - [105] (byte) collision::c#2 ← phi( collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@21/(byte) collision::c#1 ) - [105] (byte) collision::col#2 ← phi( collision::@1/(byte~) collision::col#9 collision::@21/(byte) collision::col#1 ) - [105] (byte) collision::i#2 ← phi( collision::@1/(byte) collision::i#3 collision::@21/(byte~) collision::i#13 ) - [106] (byte) collision::i#1 ← ++ (byte) collision::i#2 - [107] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 + [108] (byte) collision::c#2 ← phi( collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@21/(byte) collision::c#1 ) + [108] (byte) collision::col#2 ← phi( collision::@1/(byte~) collision::col#9 collision::@21/(byte) collision::col#1 ) + [108] (byte) collision::i#2 ← phi( collision::@1/(byte) collision::i#3 collision::@21/(byte~) collision::i#13 ) + [109] (byte) collision::i#1 ← ++ (byte) collision::i#2 + [110] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 to:collision::@8 collision::@8: scope:[collision] from collision::@2 - [108] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 + [111] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 to:collision::@return collision::@return: scope:[collision] from collision::@17 collision::@4 collision::@5 collision::@6 collision::@8 - [109] (byte) collision::return#14 ← phi( collision::@4/(const byte) COLLISION_LEFT#0 collision::@5/(const byte) COLLISION_RIGHT#0 collision::@6/(const byte) COLLISION_PLAYFIELD#0 collision::@17/(const byte) COLLISION_NONE#0 collision::@8/(const byte) COLLISION_BOTTOM#0 ) - [110] return + [112] (byte) collision::return#14 ← phi( collision::@4/(const byte) COLLISION_LEFT#0 collision::@5/(const byte) COLLISION_RIGHT#0 collision::@6/(const byte) COLLISION_PLAYFIELD#0 collision::@17/(const byte) COLLISION_NONE#0 collision::@8/(const byte) COLLISION_BOTTOM#0 ) + [113] return to:@return collision::@4: scope:[collision] from collision::@8 - [111] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 - [112] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 + [114] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 + [115] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 to:collision::@return collision::@5: scope:[collision] from collision::@4 - [113] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 + [116] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 to:collision::@return collision::@6: scope:[collision] from collision::@5 - [114] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 + [117] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 to:collision::@return collision::@3: scope:[collision] from collision::@2 collision::@6 - [115] (byte) collision::col#1 ← ++ (byte) collision::col#2 - [116] (byte) collision::c#1 ← ++ (byte) collision::c#2 - [117] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 + [118] (byte) collision::col#1 ← ++ (byte) collision::col#2 + [119] (byte) collision::c#1 ← ++ (byte) collision::c#2 + [120] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 to:collision::@17 collision::@17: scope:[collision] from collision::@3 - [118] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [119] (byte) collision::l#1 ← ++ (byte) collision::l#6 - [120] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 + [121] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [122] (byte) collision::l#1 ← ++ (byte) collision::l#6 + [123] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 to:collision::@return collision::@20: scope:[collision] from collision::@17 - [121] (byte~) collision::i#11 ← (byte) collision::i#1 + [124] (byte~) collision::i#11 ← (byte) collision::i#1 to:collision::@1 collision::@21: scope:[collision] from collision::@3 - [122] (byte~) collision::i#13 ← (byte) collision::i#1 + [125] (byte~) collision::i#13 ← (byte) collision::i#1 to:collision::@2 -play_move_leftright: scope:[play_move_leftright] from main::@27 - [123] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 +play_move_leftright: scope:[play_move_leftright] from main::@28 + [126] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 to:play_move_leftright::@6 play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright - [124] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return + [127] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return to:play_move_leftright::@7 play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@6 - [125] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [126] (byte) collision::ypos#2 ← (byte) current_ypos#16 - [127] (byte) collision::orientation#2 ← (byte) current_piece_orientation#18 - [128] (byte*~) current_piece#69 ← (byte*) current_piece#13 - [129] call collision - [130] (byte) collision::return#12 ← (byte) collision::return#14 + [128] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [129] (byte) collision::ypos#2 ← (byte) current_ypos#16 + [130] (byte) collision::orientation#2 ← (byte) current_orientation#18 + [131] (byte*~) current_piece#71 ← (byte*) current_piece#13 + [132] call collision + [133] (byte) collision::return#12 ← (byte) collision::return#14 to:play_move_leftright::@15 play_move_leftright::@15: scope:[play_move_leftright] from play_move_leftright::@7 - [131] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 - [132] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [134] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 + [135] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@8 play_move_leftright::@8: scope:[play_move_leftright] from play_move_leftright::@15 - [133] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 + [136] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 to:play_move_leftright::@return play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@11 play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 play_move_leftright::@8 - [134] (byte) current_xpos#23 ← phi( play_move_leftright::@11/(byte) current_xpos#9 play_move_leftright::@15/(byte) current_xpos#19 play_move_leftright::@8/(byte) current_xpos#7 play_move_leftright::@14/(byte) current_xpos#19 play_move_leftright::@6/(byte) current_xpos#19 ) - [134] (byte) play_move_leftright::return#2 ← phi( play_move_leftright::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@15/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [135] return + [137] (byte) current_xpos#23 ← phi( play_move_leftright::@11/(byte) current_xpos#9 play_move_leftright::@15/(byte) current_xpos#19 play_move_leftright::@8/(byte) current_xpos#7 play_move_leftright::@14/(byte) current_xpos#19 play_move_leftright::@6/(byte) current_xpos#19 ) + [137] (byte) play_move_leftright::return#2 ← phi( play_move_leftright::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@15/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [138] return to:@return play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright - [136] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 - [137] (byte) collision::ypos#1 ← (byte) current_ypos#16 - [138] (byte) collision::orientation#1 ← (byte) current_piece_orientation#18 - [139] (byte*~) current_piece#68 ← (byte*) current_piece#13 - [140] call collision - [141] (byte) collision::return#1 ← (byte) collision::return#14 + [139] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 + [140] (byte) collision::ypos#1 ← (byte) current_ypos#16 + [141] (byte) collision::orientation#1 ← (byte) current_orientation#18 + [142] (byte*~) current_piece#70 ← (byte*) current_piece#13 + [143] call collision + [144] (byte) collision::return#1 ← (byte) collision::return#14 to:play_move_leftright::@14 play_move_leftright::@14: scope:[play_move_leftright] from play_move_leftright::@1 - [142] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 - [143] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [145] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 + [146] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@11 play_move_leftright::@11: scope:[play_move_leftright] from play_move_leftright::@14 - [144] (byte) current_xpos#9 ← -- (byte) current_xpos#19 + [147] (byte) current_xpos#9 ← -- (byte) current_xpos#19 to:play_move_leftright::@return -play_move_down: scope:[play_move_down] from main::@26 - [145] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 - [146] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 +play_move_down: scope:[play_move_down] from main::@27 + [148] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 + [149] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 to:play_move_down::@8 play_move_down::@8: scope:[play_move_down] from play_move_down - [147] phi() + [150] phi() to:play_move_down::@1 play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@8 - [148] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [149] call keyboard_event_pressed - [150] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + [151] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [152] call keyboard_event_pressed + [153] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 to:play_move_down::@17 play_move_down::@17: scope:[play_move_down] from play_move_down::@1 - [151] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - [152] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 + [154] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + [155] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 to:play_move_down::@9 play_move_down::@9: scope:[play_move_down] from play_move_down::@17 - [153] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate_fast#0) goto play_move_down::@2 + [156] if((byte) current_movedown_counter#10<(const byte) current_movedown_fast#0) goto play_move_down::@2 to:play_move_down::@10 play_move_down::@10: scope:[play_move_down] from play_move_down::@9 - [154] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 + [157] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 to:play_move_down::@2 play_move_down::@2: scope:[play_move_down] from play_move_down::@10 play_move_down::@17 play_move_down::@9 - [155] (byte) play_move_down::movedown#7 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@9/(byte) play_move_down::movedown#10 ) - [156] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate#0) goto play_move_down::@4 + [158] (byte) play_move_down::movedown#7 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@9/(byte) play_move_down::movedown#10 ) + [159] if((byte) current_movedown_counter#10<(const byte) current_movedown_slow#0) goto play_move_down::@4 to:play_move_down::@11 play_move_down::@11: scope:[play_move_down] from play_move_down::@2 - [157] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 + [160] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 to:play_move_down::@4 play_move_down::@4: scope:[play_move_down] from play_move_down::@11 play_move_down::@2 - [158] (byte) play_move_down::movedown#6 ← phi( play_move_down::@11/(byte) play_move_down::movedown#3 play_move_down::@2/(byte) play_move_down::movedown#7 ) - [159] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return + [161] (byte) play_move_down::movedown#6 ← phi( play_move_down::@11/(byte) play_move_down::movedown#3 play_move_down::@2/(byte) play_move_down::movedown#7 ) + [162] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return to:play_move_down::@12 play_move_down::@12: scope:[play_move_down] from play_move_down::@4 - [160] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [161] (byte) collision::xpos#0 ← (byte) current_xpos#16 - [162] (byte) collision::orientation#0 ← (byte) current_piece_orientation#15 - [163] (byte*~) current_piece#67 ← (byte*) current_piece#11 - [164] call collision - [165] (byte) collision::return#0 ← (byte) collision::return#14 + [163] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [164] (byte) collision::xpos#0 ← (byte) current_xpos#16 + [165] (byte) collision::orientation#0 ← (byte) current_orientation#15 + [166] (byte*~) current_piece#69 ← (byte*) current_piece#11 + [167] call collision + [168] (byte) collision::return#0 ← (byte) collision::return#14 to:play_move_down::@18 play_move_down::@18: scope:[play_move_down] from play_move_down::@12 - [166] (byte~) play_move_down::$12 ← (byte) collision::return#0 - [167] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 + [169] (byte~) play_move_down::$12 ← (byte) collision::return#0 + [170] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 to:play_move_down::@13 play_move_down::@13: scope:[play_move_down] from play_move_down::@18 - [168] phi() - [169] call lock_current + [171] phi() + [172] call lock_current to:play_move_down::@19 play_move_down::@19: scope:[play_move_down] from play_move_down::@13 - [170] phi() - [171] call spawn_current + [173] phi() + [174] call spawn_current + [175] (byte*~) current_piece#73 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) to:play_move_down::@7 play_move_down::@7: scope:[play_move_down] from play_move_down::@19 play_move_down::@6 - [172] (byte) current_xpos#36 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 3 play_move_down::@6/(byte) current_xpos#16 ) - [172] (byte) current_piece_color#23 ← phi( play_move_down::@19/(const byte) GREEN#0 play_move_down::@6/(byte) current_piece_color#11 ) - [172] (byte*) current_piece_gfx#29 ← phi( play_move_down::@19/(const byte[4*4*4]) piece_t#0 play_move_down::@6/(byte*) current_piece_gfx#15 ) - [172] (byte) current_piece_orientation#33 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_piece_orientation#15 ) - [172] (byte*) current_piece#23 ← phi( play_move_down::@19/(const byte[4*4*4]) piece_t#0 play_move_down::@6/(byte*) current_piece#11 ) - [172] (byte) current_ypos#31 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_ypos#4 ) + [176] (byte) current_piece_color#23 ← phi( play_move_down::@19/(byte) current_piece_color#15 play_move_down::@6/(byte) current_piece_color#11 ) + [176] (byte) current_xpos#36 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 3 play_move_down::@6/(byte) current_xpos#16 ) + [176] (byte*) current_piece_gfx#29 ← phi( play_move_down::@19/(byte*) current_piece_gfx#10 play_move_down::@6/(byte*) current_piece_gfx#15 ) + [176] (byte) current_orientation#33 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_orientation#15 ) + [176] (byte*) current_piece#23 ← phi( play_move_down::@19/(byte*~) current_piece#73 play_move_down::@6/(byte*) current_piece#11 ) + [176] (byte) current_ypos#31 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_ypos#4 ) to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@4 play_move_down::@7 - [173] (byte) current_xpos#19 ← phi( play_move_down::@4/(byte) current_xpos#16 play_move_down::@7/(byte) current_xpos#36 ) - [173] (byte) current_piece_color#13 ← phi( play_move_down::@4/(byte) current_piece_color#11 play_move_down::@7/(byte) current_piece_color#23 ) - [173] (byte*) current_piece_gfx#17 ← phi( play_move_down::@4/(byte*) current_piece_gfx#15 play_move_down::@7/(byte*) current_piece_gfx#29 ) - [173] (byte) current_piece_orientation#18 ← phi( play_move_down::@4/(byte) current_piece_orientation#15 play_move_down::@7/(byte) current_piece_orientation#33 ) - [173] (byte*) current_piece#13 ← phi( play_move_down::@4/(byte*) current_piece#11 play_move_down::@7/(byte*) current_piece#23 ) - [173] (byte) current_ypos#16 ← phi( play_move_down::@4/(byte) current_ypos#12 play_move_down::@7/(byte) current_ypos#31 ) - [173] (byte) current_movedown_counter#12 ← phi( play_move_down::@4/(byte) current_movedown_counter#10 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [173] (byte) play_move_down::return#3 ← phi( play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [174] return + [177] (byte) current_piece_color#13 ← phi( play_move_down::@4/(byte) current_piece_color#11 play_move_down::@7/(byte) current_piece_color#23 ) + [177] (byte) current_xpos#19 ← phi( play_move_down::@4/(byte) current_xpos#16 play_move_down::@7/(byte) current_xpos#36 ) + [177] (byte*) current_piece_gfx#17 ← phi( play_move_down::@4/(byte*) current_piece_gfx#15 play_move_down::@7/(byte*) current_piece_gfx#29 ) + [177] (byte) current_orientation#18 ← phi( play_move_down::@4/(byte) current_orientation#15 play_move_down::@7/(byte) current_orientation#33 ) + [177] (byte*) current_piece#13 ← phi( play_move_down::@4/(byte*) current_piece#11 play_move_down::@7/(byte*) current_piece#23 ) + [177] (byte) current_ypos#16 ← phi( play_move_down::@4/(byte) current_ypos#12 play_move_down::@7/(byte) current_ypos#31 ) + [177] (byte) current_movedown_counter#12 ← phi( play_move_down::@4/(byte) current_movedown_counter#10 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [177] (byte) play_move_down::return#3 ← phi( play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [178] return to:@return play_move_down::@6: scope:[play_move_down] from play_move_down::@18 - [175] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 + [179] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 to:play_move_down::@7 -spawn_current: scope:[spawn_current] from main::@21 play_move_down::@19 - [176] phi() +spawn_current: scope:[spawn_current] from main::@22 play_move_down::@19 + [180] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + to:spawn_current::@1 +spawn_current::@1: scope:[spawn_current] from spawn_current spawn_current::@7 + [181] (byte) spawn_current::piece_idx#2 ← phi( spawn_current/(byte/signed byte/word/signed word/dword/signed dword) 7 spawn_current::@7/(byte) spawn_current::piece_idx#1 ) + [182] if((byte) spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto spawn_current::@2 + to:spawn_current::@3 +spawn_current::@3: scope:[spawn_current] from spawn_current::@1 + [183] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) + [184] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [185] (byte*) current_piece_gfx#10 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 + [186] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) to:spawn_current::@return -spawn_current::@return: scope:[spawn_current] from spawn_current - [177] return +spawn_current::@return: scope:[spawn_current] from spawn_current::@3 + [187] return + to:@return +spawn_current::@2: scope:[spawn_current] from spawn_current::@1 + [188] phi() + [189] call sid_rnd + [190] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + to:spawn_current::@7 +spawn_current::@7: scope:[spawn_current] from spawn_current::@2 + [191] (byte~) spawn_current::$1 ← (byte) sid_rnd::return#2 + [192] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 + to:spawn_current::@1 +sid_rnd: scope:[sid_rnd] from spawn_current::@2 + [193] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) + to:sid_rnd::@return +sid_rnd::@return: scope:[sid_rnd] from sid_rnd + [194] return to:@return lock_current: scope:[lock_current] from play_move_down::@13 - [178] phi() + [195] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:lock_current::@1 -lock_current::@1: scope:[lock_current] from lock_current lock_current::@5 - [179] (byte) lock_current::i#3 ← phi( lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@5/(byte) lock_current::i#1 ) - [179] (byte) lock_current::l#2 ← phi( lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@5/(byte) lock_current::l#1 ) - [180] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 - [181] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [182] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) +lock_current::@1: scope:[lock_current] from lock_current lock_current::@7 + [196] (byte) lock_current::l#6 ← phi( lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@7/(byte) lock_current::l#1 ) + [196] (byte) lock_current::i#3 ← phi( lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@7/(byte~) lock_current::i#7 ) + [196] (byte) lock_current::ypos2#2 ← phi( lock_current/(byte) lock_current::ypos2#0 lock_current::@7/(byte) lock_current::ypos2#1 ) + [197] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) + [198] (byte) lock_current::col#0 ← (byte) current_xpos#16 to:lock_current::@2 -lock_current::@2: scope:[lock_current] from lock_current::@1 lock_current::@3 - [183] (byte) lock_current::c#2 ← phi( lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@3/(byte) lock_current::c#1 ) - [183] (byte) lock_current::i#2 ← phi( lock_current::@1/(byte) lock_current::i#3 lock_current::@3/(byte) lock_current::i#1 ) - [184] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#15 + (byte) lock_current::i#2) - [185] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 - [186] if((byte) lock_current::cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 +lock_current::@2: scope:[lock_current] from lock_current::@1 lock_current::@8 + [199] (byte) lock_current::c#2 ← phi( lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@8/(byte) lock_current::c#1 ) + [199] (byte) lock_current::col#2 ← phi( lock_current::@1/(byte) lock_current::col#0 lock_current::@8/(byte) lock_current::col#1 ) + [199] (byte) lock_current::i#2 ← phi( lock_current::@1/(byte) lock_current::i#3 lock_current::@8/(byte~) lock_current::i#9 ) + [200] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 + [201] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 to:lock_current::@4 lock_current::@4: scope:[lock_current] from lock_current::@2 - [187] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 - [188] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 + [202] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 to:lock_current::@3 lock_current::@3: scope:[lock_current] from lock_current::@2 lock_current::@4 - [189] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 - [190] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@2 + [203] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 + [204] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 + [205] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@8 to:lock_current::@5 lock_current::@5: scope:[lock_current] from lock_current::@3 - [191] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#2 - [192] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@1 + [206] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [207] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 + [208] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@7 to:lock_current::@return lock_current::@return: scope:[lock_current] from lock_current::@5 - [193] return + [209] return to:@return +lock_current::@7: scope:[lock_current] from lock_current::@5 + [210] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 + to:lock_current::@1 +lock_current::@8: scope:[lock_current] from lock_current::@3 + [211] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 + to:lock_current::@2 keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@10 keyboard_event_scan::@11 keyboard_event_scan::@20 keyboard_event_scan::@9 play_move_down::@1 - [194] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@10/(const byte) KEY_CTRL#0 keyboard_event_scan::@11/(const byte) KEY_COMMODORE#0 keyboard_event_scan::@20/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@9/(const byte) KEY_RSHIFT#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) - [195] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 - [196] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) - [197] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [198] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) + [212] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@10/(const byte) KEY_CTRL#0 keyboard_event_scan::@11/(const byte) KEY_COMMODORE#0 keyboard_event_scan::@20/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@9/(const byte) KEY_RSHIFT#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) + [213] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 + [214] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) + [215] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [216] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) to:keyboard_event_pressed::@return keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed - [199] return + [217] return to:@return -keyboard_event_get: scope:[keyboard_event_get] from main::@25 - [200] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return +keyboard_event_get: scope:[keyboard_event_get] from main::@26 + [218] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return to:keyboard_event_get::@3 keyboard_event_get::@3: scope:[keyboard_event_get] from keyboard_event_get - [201] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 - [202] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) + [219] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 + [220] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) to:keyboard_event_get::@return keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@3 - [203] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) - [203] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) - [204] return + [221] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) + [221] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) + [222] return to:@return keyboard_event_scan: scope:[keyboard_event_scan] from main::@9 - [205] phi() + [223] phi() to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@3 - [206] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) - [206] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) - [206] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) - [207] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 - [208] call keyboard_matrix_read - [209] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + [224] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) + [224] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) + [224] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) + [225] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 + [226] call keyboard_matrix_read + [227] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 to:keyboard_event_scan::@25 keyboard_event_scan::@25: scope:[keyboard_event_scan] from keyboard_event_scan::@1 - [210] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 - [211] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 + [228] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 + [229] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 to:keyboard_event_scan::@13 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@25 - [212] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 + [230] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 to:keyboard_event_scan::@3 keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@19 - [213] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) - [213] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) - [214] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 - [215] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 + [231] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) + [231] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) + [232] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 + [233] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 to:keyboard_event_scan::@20 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - [216] phi() - [217] call keyboard_event_pressed - [218] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 - to:keyboard_event_scan::@26 -keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - [219] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 - [220] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 - to:keyboard_event_scan::@21 -keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26 - [221] phi() - to:keyboard_event_scan::@9 -keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - [222] phi() - [223] call keyboard_event_pressed - [224] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 - to:keyboard_event_scan::@27 -keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - [225] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 - [226] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 - to:keyboard_event_scan::@22 -keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 - [227] phi() - to:keyboard_event_scan::@10 -keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 - [228] phi() - [229] call keyboard_event_pressed - [230] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 - to:keyboard_event_scan::@28 -keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - [231] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 - [232] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 - to:keyboard_event_scan::@23 -keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28 - [233] phi() - to:keyboard_event_scan::@11 -keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28 [234] phi() [235] call keyboard_event_pressed - [236] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + [236] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + to:keyboard_event_scan::@26 +keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20 + [237] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + [238] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 + to:keyboard_event_scan::@21 +keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26 + [239] phi() + to:keyboard_event_scan::@9 +keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 + [240] phi() + [241] call keyboard_event_pressed + [242] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + to:keyboard_event_scan::@27 +keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9 + [243] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + [244] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 + to:keyboard_event_scan::@22 +keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 + [245] phi() + to:keyboard_event_scan::@10 +keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 + [246] phi() + [247] call keyboard_event_pressed + [248] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + to:keyboard_event_scan::@28 +keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10 + [249] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + [250] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 + to:keyboard_event_scan::@23 +keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28 + [251] phi() + to:keyboard_event_scan::@11 +keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28 + [252] phi() + [253] call keyboard_event_pressed + [254] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@29 keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan::@11 - [237] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 - [238] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return + [255] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + [256] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return to:keyboard_event_scan::@24 keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@29 - [239] phi() + [257] phi() to:keyboard_event_scan::@return keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@24 keyboard_event_scan::@29 - [240] return + [258] return to:@return keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@25 keyboard_event_scan::@5 - [241] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) - [241] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) - [241] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) - [242] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) - [243] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [244] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 + [259] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) + [259] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) + [259] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) + [260] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) + [261] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [262] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 to:keyboard_event_scan::@15 keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@4 - [245] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 + [263] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 to:keyboard_event_scan::@16 keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@15 - [246] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [247] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 + [264] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [265] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 to:keyboard_event_scan::@17 keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [248] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 - [249] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 + [266] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 + [267] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 - [250] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) - [251] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 - [252] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 - [253] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 + [268] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) + [269] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 + [270] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 + [271] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 to:keyboard_event_scan::@19 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@5 - [254] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 + [272] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 to:keyboard_event_scan::@3 keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [255] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 - [256] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 - [257] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 + [273] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 + [274] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 + [275] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@1 - [258] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) - [259] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) + [276] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) + [277] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) to:keyboard_matrix_read::@return keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read - [260] return + [278] return to:@return -init: scope:[init] from main - [261] phi() - [262] call fill +init: scope:[init] from main::@21 + [279] phi() + [280] call fill to:init::@9 init::@9: scope:[init] from init - [263] phi() - [264] call fill + [281] phi() + [282] call fill to:init::@1 init::@1: scope:[init] from init::@1 init::@9 - [265] (byte*) init::li#2 ← phi( init::@1/(byte*) init::li#1 init::@9/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 ) - [265] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [266] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [267] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 - [268] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [269] (byte) init::i#1 ← ++ (byte) init::i#2 - [270] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 + [283] (byte*) init::li#2 ← phi( init::@1/(byte*) init::li#1 init::@9/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 ) + [283] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [284] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [285] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 + [286] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [287] (byte) init::i#1 ← ++ (byte) init::i#2 + [288] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 to:init::@2 init::@2: scope:[init] from init::@1 init::@2 - [271] (byte*) init::pli#2 ← phi( init::@2/(byte*) init::pli#1 init::@1/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 ) - [271] (byte) init::j#2 ← phi( init::@2/(byte) init::j#1 init::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [272] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [273] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 - [274] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 - [275] (byte) init::j#1 ← ++ (byte) init::j#2 - [276] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 + [289] (byte*) init::pli#2 ← phi( init::@2/(byte*) init::pli#1 init::@1/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 ) + [289] (byte) init::j#2 ← phi( init::@2/(byte) init::j#1 init::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [290] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [291] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 + [292] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 + [293] (byte) init::j#1 ← ++ (byte) init::j#2 + [294] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 to:init::@3 init::@3: scope:[init] from init::@2 init::@7 - [277] (byte) init::l#4 ← phi( init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@7/(byte) init::l#1 ) - [277] (byte*) init::line#4 ← phi( init::@2/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 init::@7/(byte*) init::line#1 ) + [295] (byte) init::l#4 ← phi( init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@7/(byte) init::l#1 ) + [295] (byte*) init::line#4 ← phi( init::@2/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 init::@7/(byte*) init::line#1 ) to:init::@4 init::@4: scope:[init] from init::@3 init::@4 - [278] (byte) init::c#2 ← phi( init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@4/(byte) init::c#1 ) - [279] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 - [280] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 - [281] (byte) init::c#1 ← ++ (byte) init::c#2 - [282] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 + [296] (byte) init::c#2 ← phi( init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@4/(byte) init::c#1 ) + [297] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 + [298] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 + [299] (byte) init::c#1 ← ++ (byte) init::c#2 + [300] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 to:init::@7 init::@7: scope:[init] from init::@4 - [283] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [284] (byte) init::l#1 ← ++ (byte) init::l#4 - [285] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 + [301] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [302] (byte) init::l#1 ← ++ (byte) init::l#4 + [303] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 to:init::@return init::@return: scope:[init] from init::@7 - [286] return + [304] return to:@return fill: scope:[fill] from init init::@9 - [287] (byte) fill::val#3 ← phi( init/(byte/word/signed word/dword/signed dword) 160 init::@9/(const byte) BLACK#0 ) - [287] (byte*) fill::addr#0 ← phi( init/(const byte*) SCREEN#0 init::@9/(const byte*) COLS#0 ) - [288] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 + [305] (byte) fill::val#3 ← phi( init/(byte/word/signed word/dword/signed dword) 160 init::@9/(const byte) BLACK#0 ) + [305] (byte*) fill::addr#0 ← phi( init/(const byte*) SCREEN#0 init::@9/(const byte*) COLS#0 ) + [306] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 to:fill::@1 fill::@1: scope:[fill] from fill fill::@1 - [289] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) - [290] *((byte*) fill::addr#2) ← (byte) fill::val#3 - [291] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [292] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 + [307] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) + [308] *((byte*) fill::addr#2) ← (byte) fill::val#3 + [309] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [310] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [293] return + [311] return + to:@return +sid_rnd_init: scope:[sid_rnd_init] from main + [312] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 + [313] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 + to:sid_rnd_init::@return +sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init + [314] return to:@return diff --git a/src/test/ref/examples/tetris/tetris.log b/src/test/ref/examples/tetris/tetris.log index bb3b02cdd..65b054148 100644 --- a/src/test/ref/examples/tetris/tetris.log +++ b/src/test/ref/examples/tetris/tetris.log @@ -1,9 +1,6 @@ Resolved forward reference COLLISION_NONE to (byte) COLLISION_NONE Resolved forward reference COLLISION_NONE to (byte) COLLISION_NONE Resolved forward reference COLLISION_NONE to (byte) COLLISION_NONE -Resolved forward reference COLLISION_LEFT to (byte) COLLISION_LEFT -Resolved forward reference COLLISION_RIGHT to (byte) COLLISION_RIGHT -Resolved forward reference piece_t to (byte[$4]) piece_t Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx CONTROL FLOW GRAPH SSA @@ -14,8 +11,10 @@ CONTROL FLOW GRAPH SSA (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 to:@4 fill: scope:[fill] from init init::@9 (byte) fill::val#3 ← phi( init/(byte) fill::val#0 init::@9/(byte) fill::val#1 ) @@ -73,12 +72,12 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri (byte[8]) keyboard_scan_values#0 ← { fill( 8, 0) } to:@11 keyboard_event_scan: scope:[keyboard_event_scan] from main::@9 - (byte) keyboard_events_size#53 ← phi( main::@9/(byte) keyboard_events_size#26 ) + (byte) keyboard_events_size#54 ← phi( main::@9/(byte) keyboard_events_size#26 ) (byte) keyboard_event_scan::keycode#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_event_scan::row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@3 - (byte) keyboard_events_size#45 ← phi( keyboard_event_scan/(byte) keyboard_events_size#53 keyboard_event_scan::@3/(byte) keyboard_events_size#54 ) + (byte) keyboard_events_size#45 ← phi( keyboard_event_scan/(byte) keyboard_events_size#54 keyboard_event_scan::@3/(byte) keyboard_events_size#55 ) (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte) keyboard_event_scan::keycode#0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte) keyboard_event_scan::row#0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 @@ -103,14 +102,14 @@ keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan:: (byte) keyboard_event_scan::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:keyboard_event_scan::@4 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@25 - (byte) keyboard_events_size#59 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#36 ) + (byte) keyboard_events_size#60 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#36 ) (byte) keyboard_event_scan::row#7 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::row#3 ) (byte) keyboard_event_scan::keycode#3 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#7 ) (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$2 ← (byte) keyboard_event_scan::keycode#3 + (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) keyboard_event_scan::keycode#1 ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$2 to:keyboard_event_scan::@3 keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@19 - (byte) keyboard_events_size#54 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#59 keyboard_event_scan::@19/(byte) keyboard_events_size#60 ) + (byte) keyboard_events_size#55 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#60 keyboard_event_scan::@19/(byte) keyboard_events_size#61 ) (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) (byte) keyboard_event_scan::row#4 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::row#7 keyboard_event_scan::@19/(byte) keyboard_event_scan::row#6 ) (byte) keyboard_event_scan::row#1 ← (byte) keyboard_event_scan::row#4 + rangenext(0,7) @@ -188,21 +187,21 @@ keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan: (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#12 to:keyboard_event_scan::@5 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@5 - (byte) keyboard_events_size#60 ← phi( keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) + (byte) keyboard_events_size#61 ← phi( keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) (byte) keyboard_event_scan::keycode#15 ← phi( keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#2 ) (byte) keyboard_event_scan::row#6 ← phi( keyboard_event_scan::@5/(byte) keyboard_event_scan::row#9 ) (byte) keyboard_event_scan::row_scan#3 ← phi( keyboard_event_scan::@5/(byte) keyboard_event_scan::row_scan#5 ) *((byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#6) ← (byte) keyboard_event_scan::row_scan#3 to:keyboard_event_scan::@3 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - (byte) keyboard_events_size#67 ← phi( keyboard_event_scan::@3/(byte) keyboard_events_size#54 ) + (byte) keyboard_events_size#69 ← phi( keyboard_event_scan::@3/(byte) keyboard_events_size#55 ) (byte) keyboard_modifiers#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_event_pressed::keycode#0 ← (byte) KEY_LSHIFT#0 call keyboard_event_pressed (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#5 to:keyboard_event_scan::@26 keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - (byte) keyboard_events_size#66 ← phi( keyboard_event_scan::@20/(byte) keyboard_events_size#67 ) + (byte) keyboard_events_size#68 ← phi( keyboard_event_scan::@20/(byte) keyboard_events_size#69 ) (byte) keyboard_modifiers#18 ← phi( keyboard_event_scan::@20/(byte) keyboard_modifiers#1 ) (byte) keyboard_event_pressed::return#7 ← phi( keyboard_event_scan::@20/(byte) keyboard_event_pressed::return#0 ) (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#7 @@ -211,14 +210,14 @@ keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$16) goto keyboard_event_scan::@9 to:keyboard_event_scan::@21 keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - (byte) keyboard_events_size#64 ← phi( keyboard_event_scan::@21/(byte) keyboard_events_size#65 keyboard_event_scan::@26/(byte) keyboard_events_size#66 ) + (byte) keyboard_events_size#65 ← phi( keyboard_event_scan::@21/(byte) keyboard_events_size#67 keyboard_event_scan::@26/(byte) keyboard_events_size#68 ) (byte) keyboard_modifiers#26 ← phi( keyboard_event_scan::@21/(byte) keyboard_modifiers#2 keyboard_event_scan::@26/(byte) keyboard_modifiers#18 ) (byte) keyboard_event_pressed::keycode#1 ← (byte) KEY_RSHIFT#0 call keyboard_event_pressed (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#5 to:keyboard_event_scan::@27 keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - (byte) keyboard_events_size#62 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#64 ) + (byte) keyboard_events_size#63 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#65 ) (byte) keyboard_modifiers#19 ← phi( keyboard_event_scan::@9/(byte) keyboard_modifiers#26 ) (byte) keyboard_event_pressed::return#8 ← phi( keyboard_event_scan::@9/(byte) keyboard_event_pressed::return#1 ) (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#8 @@ -227,20 +226,20 @@ keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$20) goto keyboard_event_scan::@10 to:keyboard_event_scan::@22 keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26 - (byte) keyboard_events_size#65 ← phi( keyboard_event_scan::@26/(byte) keyboard_events_size#66 ) + (byte) keyboard_events_size#67 ← phi( keyboard_event_scan::@26/(byte) keyboard_events_size#68 ) (byte) keyboard_modifiers#10 ← phi( keyboard_event_scan::@26/(byte) keyboard_modifiers#18 ) (byte~) keyboard_event_scan::$17 ← (byte) keyboard_modifiers#10 | (byte) KEY_MODIFIER_LSHIFT#0 (byte) keyboard_modifiers#2 ← (byte~) keyboard_event_scan::$17 to:keyboard_event_scan::@9 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 - (byte) keyboard_events_size#55 ← phi( keyboard_event_scan::@22/(byte) keyboard_events_size#61 keyboard_event_scan::@27/(byte) keyboard_events_size#62 ) + (byte) keyboard_events_size#56 ← phi( keyboard_event_scan::@22/(byte) keyboard_events_size#62 keyboard_event_scan::@27/(byte) keyboard_events_size#63 ) (byte) keyboard_modifiers#27 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#19 ) (byte) keyboard_event_pressed::keycode#2 ← (byte) KEY_CTRL#0 call keyboard_event_pressed (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#5 to:keyboard_event_scan::@28 keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - (byte) keyboard_events_size#47 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#55 ) + (byte) keyboard_events_size#47 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#56 ) (byte) keyboard_modifiers#20 ← phi( keyboard_event_scan::@10/(byte) keyboard_modifiers#27 ) (byte) keyboard_event_pressed::return#9 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_pressed::return#2 ) (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#9 @@ -249,7 +248,7 @@ keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$24) goto keyboard_event_scan::@11 to:keyboard_event_scan::@23 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 - (byte) keyboard_events_size#61 ← phi( keyboard_event_scan::@27/(byte) keyboard_events_size#62 ) + (byte) keyboard_events_size#62 ← phi( keyboard_event_scan::@27/(byte) keyboard_events_size#63 ) (byte) keyboard_modifiers#11 ← phi( keyboard_event_scan::@27/(byte) keyboard_modifiers#19 ) (byte~) keyboard_event_scan::$21 ← (byte) keyboard_modifiers#11 | (byte) KEY_MODIFIER_RSHIFT#0 (byte) keyboard_modifiers#3 ← (byte~) keyboard_event_scan::$21 @@ -306,8 +305,8 @@ keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_e (byte) keyboard_event_pressed::return#5 ← (byte) keyboard_event_pressed::return#11 return to:@return -keyboard_event_get: scope:[keyboard_event_get] from main::@25 - (byte) keyboard_events_size#14 ← phi( main::@25/(byte) keyboard_events_size#6 ) +keyboard_event_get: scope:[keyboard_event_get] from main::@26 + (byte) keyboard_events_size#14 ← phi( main::@26/(byte) keyboard_events_size#6 ) (bool~) keyboard_event_get::$0 ← (byte) keyboard_events_size#14 == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) keyboard_event_get::$0) goto keyboard_event_get::@1 to:keyboard_event_get::@3 @@ -328,184 +327,250 @@ keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get return to:@return @11: scope:[] from @8 - (byte) keyboard_modifiers#38 ← phi( @8/(byte) keyboard_modifiers#0 ) - (byte) keyboard_events_size#44 ← phi( @8/(byte) keyboard_events_size#0 ) - (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (byte) keyboard_modifiers#39 ← phi( @8/(byte) keyboard_modifiers#0 ) + (byte) keyboard_events_size#48 ← phi( @8/(byte) keyboard_events_size#0 ) + (word*) SID_VOICE3_FREQ#0 ← ((word*)) (word/dword/signed dword) 54286 + (byte*) SID_VOICE3_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 54290 + (byte) SID_CONTROL_NOISE#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte*) SID_VOICE3_OSC#0 ← ((byte*)) (word/dword/signed dword) 54299 + to:@13 +sid_rnd_init: scope:[sid_rnd_init] from main + *((word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 + *((byte*) SID_VOICE3_CONTROL#0) ← (byte) SID_CONTROL_NOISE#0 + to:sid_rnd_init::@return +sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init + return + to:@return +sid_rnd: scope:[sid_rnd] from spawn_current::@2 + (byte) sid_rnd::return#0 ← *((byte*) SID_VOICE3_OSC#0) + to:sid_rnd::@return +sid_rnd::@return: scope:[sid_rnd] from sid_rnd + (byte) sid_rnd::return#3 ← phi( sid_rnd/(byte) sid_rnd::return#0 ) + (byte) sid_rnd::return#1 ← (byte) sid_rnd::return#3 + return + to:@return +@13: scope:[] from @11 + (byte) keyboard_modifiers#38 ← phi( @11/(byte) keyboard_modifiers#39 ) + (byte) keyboard_events_size#44 ← phi( @11/(byte) keyboard_events_size#48 ) + (byte/signed byte/word/signed word/dword/signed dword~) $1 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte/signed word/word/dword/signed dword/signed byte~) $2 ← (byte/signed byte/word/signed word/dword/signed dword~) $1 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$2]) PIECE_T#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) 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/signed byte/word/signed word/dword/signed dword~) $3 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte/signed word/word/dword/signed dword/signed byte~) $4 ← (byte/signed byte/word/signed word/dword/signed dword~) $3 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$4]) PIECE_S#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed 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/signed byte/word/signed word/dword/signed dword~) $5 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte/signed word/word/dword/signed dword/signed byte~) $6 ← (byte/signed byte/word/signed word/dword/signed dword~) $5 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$6]) PIECE_Z#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed 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/signed byte/word/signed word/dword/signed dword~) $7 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte/signed word/word/dword/signed dword/signed byte~) $8 ← (byte/signed byte/word/signed word/dword/signed dword~) $7 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$8]) PIECE_L#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed 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/signed byte/word/signed word/dword/signed dword~) $9 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte/signed word/word/dword/signed dword/signed byte~) $10 ← (byte/signed byte/word/signed word/dword/signed dword~) $9 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$10]) PIECE_J#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) 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/signed byte/word/signed word/dword/signed dword~) $11 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte/signed word/word/dword/signed dword/signed byte~) $12 ← (byte/signed byte/word/signed word/dword/signed dword~) $11 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$12]) PIECE_O#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/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~) $13 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte/signed word/word/dword/signed dword/signed byte~) $14 ← (byte/signed byte/word/signed word/dword/signed dword~) $13 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$14]) PIECE_I#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed 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 } + (word~) $15 ← ((word)) (byte[$2]) PIECE_T#0 + (word~) $16 ← ((word)) (byte[$4]) PIECE_S#0 + (word~) $17 ← ((word)) (byte[$6]) PIECE_Z#0 + (word~) $18 ← ((word)) (byte[$10]) PIECE_J#0 + (word~) $19 ← ((word)) (byte[$12]) PIECE_O#0 + (word~) $20 ← ((word)) (byte[$14]) PIECE_I#0 + (word~) $21 ← ((word)) (byte[$8]) PIECE_L#0 + (word[]) PIECES#0 ← { (word~) $15, (word~) $16, (word~) $17, (word~) $18, (word~) $19, (word~) $20, (word~) $21 } + (byte[]) PIECES_COLORS#0 ← { (byte) WHITE#0, (byte) LIGHT_GREY#0, (byte) GREEN#0, (byte) LIGHT_GREY#0, (byte) WHITE#0, (byte) WHITE#0, (byte) GREEN#0 } (byte) PLAYFIELD_LINES#0 ← (byte/signed byte/word/signed word/dword/signed dword) 22 (byte) PLAYFIELD_COLS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 - (byte~) $1 ← (byte) PLAYFIELD_LINES#0 * (byte) PLAYFIELD_COLS#0 - (byte[$1]) playfield#0 ← { fill( $1, 0) } - (byte/signed word/word/dword/signed dword~) $2 ← (byte) PLAYFIELD_LINES#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 - (byte*[$2]) screen_lines#0 ← { fill( $2, 0) } + (byte~) $22 ← (byte) PLAYFIELD_LINES#0 * (byte) PLAYFIELD_COLS#0 + (byte[$22]) playfield#0 ← { fill( $22, 0) } (byte*[PLAYFIELD_LINES#0]) playfield_lines#0 ← { fill( PLAYFIELD_LINES#0, 0) } (byte*) current_piece#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) current_piece_orientation#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) current_orientation#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte*) current_piece_gfx#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) current_piece_color#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) current_xpos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 (byte) current_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) current_movedown_rate#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 - (byte) current_movedown_rate_fast#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) current_movedown_slow#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + (byte) current_movedown_fast#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 (byte) current_movedown_counter#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@15 -main: scope:[main] from @21 - (byte) current_movedown_counter#41 ← phi( @21/(byte) current_movedown_counter#20 ) - (byte) keyboard_modifiers#47 ← phi( @21/(byte) keyboard_modifiers#25 ) - (byte) keyboard_events_size#63 ← phi( @21/(byte) keyboard_events_size#28 ) - (byte) current_ypos#41 ← phi( @21/(byte) current_ypos#40 ) - (byte) current_xpos#47 ← phi( @21/(byte) current_xpos#46 ) - (byte) current_piece_color#27 ← phi( @21/(byte) current_piece_color#26 ) - (byte*) current_piece_gfx#37 ← phi( @21/(byte*) current_piece_gfx#36 ) - (byte) current_piece_orientation#41 ← phi( @21/(byte) current_piece_orientation#40 ) - (byte*) current_piece#30 ← phi( @21/(byte*) current_piece#29 ) - (byte*) SCREEN#2 ← phi( @21/(byte*) SCREEN#3 ) - asm { sei } - call init + (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (byte/signed word/word/dword/signed dword~) $23 ← (byte) PLAYFIELD_LINES#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte*[$23]) screen_lines#0 ← { fill( $23, 0) } + to:@17 +main: scope:[main] from @23 + (byte) current_movedown_counter#44 ← phi( @23/(byte) current_movedown_counter#20 ) + (byte) keyboard_modifiers#50 ← phi( @23/(byte) keyboard_modifiers#25 ) + (byte) keyboard_events_size#66 ← phi( @23/(byte) keyboard_events_size#28 ) + (byte) current_piece_color#38 ← phi( @23/(byte) current_piece_color#26 ) + (byte) current_ypos#50 ← phi( @23/(byte) current_ypos#39 ) + (byte) current_xpos#65 ← phi( @23/(byte) current_xpos#47 ) + (byte*) current_piece_gfx#53 ← phi( @23/(byte*) current_piece_gfx#36 ) + (byte) current_orientation#51 ← phi( @23/(byte) current_orientation#40 ) + (byte*) current_piece#42 ← phi( @23/(byte*) current_piece#29 ) + (byte*) SCREEN#3 ← phi( @23/(byte*) SCREEN#4 ) + call sid_rnd_init to:main::@21 main::@21: scope:[main] from main - (byte) current_movedown_counter#37 ← phi( main/(byte) current_movedown_counter#41 ) - (byte) keyboard_modifiers#44 ← phi( main/(byte) keyboard_modifiers#47 ) - (byte) keyboard_events_size#56 ← phi( main/(byte) keyboard_events_size#63 ) - (byte) current_ypos#24 ← phi( main/(byte) current_ypos#41 ) - (byte) current_xpos#30 ← phi( main/(byte) current_xpos#47 ) - (byte) current_piece_color#18 ← phi( main/(byte) current_piece_color#27 ) - (byte*) current_piece_gfx#23 ← phi( main/(byte*) current_piece_gfx#37 ) - (byte) current_piece_orientation#26 ← phi( main/(byte) current_piece_orientation#41 ) - (byte*) current_piece#18 ← phi( main/(byte*) current_piece#30 ) - call spawn_current + (byte) current_movedown_counter#41 ← phi( main/(byte) current_movedown_counter#44 ) + (byte) keyboard_modifiers#48 ← phi( main/(byte) keyboard_modifiers#50 ) + (byte) keyboard_events_size#64 ← phi( main/(byte) keyboard_events_size#66 ) + (byte) current_piece_color#27 ← phi( main/(byte) current_piece_color#38 ) + (byte) current_ypos#40 ← phi( main/(byte) current_ypos#50 ) + (byte) current_xpos#48 ← phi( main/(byte) current_xpos#65 ) + (byte*) current_piece_gfx#37 ← phi( main/(byte*) current_piece_gfx#53 ) + (byte) current_orientation#41 ← phi( main/(byte) current_orientation#51 ) + (byte*) current_piece#30 ← phi( main/(byte*) current_piece#42 ) + (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#3 ) + asm { sei } + call init to:main::@22 main::@22: scope:[main] from main::@21 - (byte) current_movedown_counter#33 ← phi( main::@21/(byte) current_movedown_counter#37 ) - (byte) keyboard_modifiers#39 ← phi( main::@21/(byte) keyboard_modifiers#44 ) - (byte) keyboard_events_size#48 ← phi( main::@21/(byte) keyboard_events_size#56 ) - (byte) current_ypos#10 ← phi( main::@21/(byte) current_ypos#8 ) - (byte) current_xpos#13 ← phi( main::@21/(byte) current_xpos#11 ) - (byte) current_piece_color#9 ← phi( main::@21/(byte) current_piece_color#7 ) - (byte*) current_piece_gfx#12 ← phi( main::@21/(byte*) current_piece_gfx#10 ) - (byte) current_piece_orientation#12 ← phi( main::@21/(byte) current_piece_orientation#10 ) - (byte*) current_piece#9 ← phi( main::@21/(byte*) current_piece#7 ) - (byte*) current_piece#1 ← (byte*) current_piece#9 - (byte) current_piece_orientation#1 ← (byte) current_piece_orientation#12 - (byte*) current_piece_gfx#1 ← (byte*) current_piece_gfx#12 - (byte) current_piece_color#1 ← (byte) current_piece_color#9 - (byte) current_xpos#1 ← (byte) current_xpos#13 - (byte) current_ypos#1 ← (byte) current_ypos#10 - call render_playfield + (byte) current_movedown_counter#37 ← phi( main::@21/(byte) current_movedown_counter#41 ) + (byte) keyboard_modifiers#45 ← phi( main::@21/(byte) keyboard_modifiers#48 ) + (byte) keyboard_events_size#57 ← phi( main::@21/(byte) keyboard_events_size#64 ) + (byte) current_piece_color#18 ← phi( main::@21/(byte) current_piece_color#27 ) + (byte) current_ypos#24 ← phi( main::@21/(byte) current_ypos#40 ) + (byte) current_xpos#30 ← phi( main::@21/(byte) current_xpos#48 ) + (byte*) current_piece_gfx#23 ← phi( main::@21/(byte*) current_piece_gfx#37 ) + (byte) current_orientation#26 ← phi( main::@21/(byte) current_orientation#41 ) + (byte*) current_piece#18 ← phi( main::@21/(byte*) current_piece#30 ) + call spawn_current to:main::@23 main::@23: scope:[main] from main::@22 - (byte) current_movedown_counter#27 ← phi( main::@22/(byte) current_movedown_counter#33 ) - (byte) keyboard_modifiers#33 ← phi( main::@22/(byte) keyboard_modifiers#39 ) - (byte) keyboard_events_size#39 ← phi( main::@22/(byte) keyboard_events_size#48 ) - (byte) current_xpos#65 ← phi( main::@22/(byte) current_xpos#1 ) - (byte) current_piece_color#38 ← phi( main::@22/(byte) current_piece_color#1 ) - (byte*) current_piece_gfx#53 ← phi( main::@22/(byte*) current_piece_gfx#1 ) - (byte) current_piece_orientation#51 ← phi( main::@22/(byte) current_piece_orientation#1 ) - (byte*) current_piece#42 ← phi( main::@22/(byte*) current_piece#1 ) - (byte) current_ypos#38 ← phi( main::@22/(byte) current_ypos#1 ) - call render_current + (byte) current_movedown_counter#33 ← phi( main::@22/(byte) current_movedown_counter#37 ) + (byte) keyboard_modifiers#40 ← phi( main::@22/(byte) keyboard_modifiers#45 ) + (byte) keyboard_events_size#49 ← phi( main::@22/(byte) keyboard_events_size#57 ) + (byte) current_piece_color#9 ← phi( main::@22/(byte) current_piece_color#7 ) + (byte) current_ypos#10 ← phi( main::@22/(byte) current_ypos#8 ) + (byte) current_xpos#13 ← phi( main::@22/(byte) current_xpos#11 ) + (byte*) current_piece_gfx#12 ← phi( main::@22/(byte*) current_piece_gfx#10 ) + (byte) current_orientation#12 ← phi( main::@22/(byte) current_orientation#10 ) + (byte*) current_piece#9 ← phi( main::@22/(byte*) current_piece#7 ) + (byte*) current_piece#1 ← (byte*) current_piece#9 + (byte) current_orientation#1 ← (byte) current_orientation#12 + (byte*) current_piece_gfx#1 ← (byte*) current_piece_gfx#12 + (byte) current_xpos#1 ← (byte) current_xpos#13 + (byte) current_ypos#1 ← (byte) current_ypos#10 + (byte) current_piece_color#1 ← (byte) current_piece_color#9 + call render_playfield to:main::@24 main::@24: scope:[main] from main::@23 - (byte) current_movedown_counter#22 ← phi( main::@23/(byte) current_movedown_counter#27 ) - (byte) keyboard_modifiers#30 ← phi( main::@23/(byte) keyboard_modifiers#33 ) - (byte) keyboard_events_size#33 ← phi( main::@23/(byte) keyboard_events_size#39 ) - (byte) current_ypos#43 ← phi( main::@23/(byte) current_ypos#38 ) - (byte) current_xpos#49 ← phi( main::@23/(byte) current_xpos#65 ) - (byte) current_piece_color#29 ← phi( main::@23/(byte) current_piece_color#38 ) - (byte*) current_piece_gfx#39 ← phi( main::@23/(byte*) current_piece_gfx#53 ) - (byte) current_piece_orientation#43 ← phi( main::@23/(byte) current_piece_orientation#51 ) - (byte*) current_piece#32 ← phi( main::@23/(byte*) current_piece#42 ) + (byte) current_movedown_counter#27 ← phi( main::@23/(byte) current_movedown_counter#33 ) + (byte) keyboard_modifiers#33 ← phi( main::@23/(byte) keyboard_modifiers#40 ) + (byte) keyboard_events_size#39 ← phi( main::@23/(byte) keyboard_events_size#49 ) + (byte) current_piece_color#39 ← phi( main::@23/(byte) current_piece_color#1 ) + (byte) current_xpos#66 ← phi( main::@23/(byte) current_xpos#1 ) + (byte*) current_piece_gfx#54 ← phi( main::@23/(byte*) current_piece_gfx#1 ) + (byte) current_orientation#52 ← phi( main::@23/(byte) current_orientation#1 ) + (byte*) current_piece#43 ← phi( main::@23/(byte*) current_piece#1 ) + (byte) current_ypos#37 ← phi( main::@23/(byte) current_ypos#1 ) + call render_current + to:main::@25 +main::@25: scope:[main] from main::@24 + (byte) current_movedown_counter#22 ← phi( main::@24/(byte) current_movedown_counter#27 ) + (byte) keyboard_modifiers#30 ← phi( main::@24/(byte) keyboard_modifiers#33 ) + (byte) keyboard_events_size#33 ← phi( main::@24/(byte) keyboard_events_size#39 ) + (byte) current_piece_color#29 ← phi( main::@24/(byte) current_piece_color#39 ) + (byte) current_ypos#42 ← phi( main::@24/(byte) current_ypos#37 ) + (byte) current_xpos#50 ← phi( main::@24/(byte) current_xpos#66 ) + (byte*) current_piece_gfx#39 ← phi( main::@24/(byte*) current_piece_gfx#54 ) + (byte) current_orientation#43 ← phi( main::@24/(byte) current_orientation#52 ) + (byte*) current_piece#32 ← phi( main::@24/(byte*) current_piece#43 ) to:main::@1 -main::@1: scope:[main] from main::@10 main::@24 - (byte) current_movedown_counter#15 ← phi( main::@10/(byte) current_movedown_counter#21 main::@24/(byte) current_movedown_counter#22 ) - (byte) keyboard_modifiers#24 ← phi( main::@10/(byte) keyboard_modifiers#29 main::@24/(byte) keyboard_modifiers#30 ) - (byte) keyboard_events_size#27 ← phi( main::@10/(byte) keyboard_events_size#32 main::@24/(byte) keyboard_events_size#33 ) - (byte) current_ypos#26 ← phi( main::@10/(byte) current_ypos#42 main::@24/(byte) current_ypos#43 ) - (byte) current_xpos#32 ← phi( main::@10/(byte) current_xpos#48 main::@24/(byte) current_xpos#49 ) - (byte) current_piece_color#20 ← phi( main::@10/(byte) current_piece_color#28 main::@24/(byte) current_piece_color#29 ) - (byte*) current_piece_gfx#26 ← phi( main::@10/(byte*) current_piece_gfx#38 main::@24/(byte*) current_piece_gfx#39 ) - (byte) current_piece_orientation#29 ← phi( main::@10/(byte) current_piece_orientation#42 main::@24/(byte) current_piece_orientation#43 ) - (byte*) current_piece#20 ← phi( main::@10/(byte*) current_piece#31 main::@24/(byte*) current_piece#32 ) +main::@1: scope:[main] from main::@10 main::@25 + (byte) current_movedown_counter#15 ← phi( main::@10/(byte) current_movedown_counter#21 main::@25/(byte) current_movedown_counter#22 ) + (byte) keyboard_modifiers#24 ← phi( main::@10/(byte) keyboard_modifiers#29 main::@25/(byte) keyboard_modifiers#30 ) + (byte) keyboard_events_size#27 ← phi( main::@10/(byte) keyboard_events_size#32 main::@25/(byte) keyboard_events_size#33 ) + (byte) current_piece_color#20 ← phi( main::@10/(byte) current_piece_color#28 main::@25/(byte) current_piece_color#29 ) + (byte) current_ypos#26 ← phi( main::@10/(byte) current_ypos#41 main::@25/(byte) current_ypos#42 ) + (byte) current_xpos#32 ← phi( main::@10/(byte) current_xpos#49 main::@25/(byte) current_xpos#50 ) + (byte*) current_piece_gfx#26 ← phi( main::@10/(byte*) current_piece_gfx#38 main::@25/(byte*) current_piece_gfx#39 ) + (byte) current_orientation#29 ← phi( main::@10/(byte) current_orientation#42 main::@25/(byte) current_orientation#43 ) + (byte*) current_piece#20 ← phi( main::@10/(byte*) current_piece#31 main::@25/(byte*) current_piece#32 ) if(true) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - (byte) current_xpos#89 ← phi( main::@1/(byte) current_xpos#32 ) - (byte) current_piece_color#65 ← phi( main::@1/(byte) current_piece_color#20 ) - (byte*) current_piece_gfx#77 ← phi( main::@1/(byte*) current_piece_gfx#26 ) - (byte) current_piece_orientation#68 ← phi( main::@1/(byte) current_piece_orientation#29 ) - (byte*) current_piece#62 ← phi( main::@1/(byte*) current_piece#20 ) - (byte) current_ypos#69 ← phi( main::@1/(byte) current_ypos#26 ) + (byte) current_piece_color#66 ← phi( main::@1/(byte) current_piece_color#20 ) + (byte) current_xpos#90 ← phi( main::@1/(byte) current_xpos#32 ) + (byte*) current_piece_gfx#78 ← phi( main::@1/(byte*) current_piece_gfx#26 ) + (byte) current_orientation#69 ← phi( main::@1/(byte) current_orientation#29 ) + (byte*) current_piece#63 ← phi( main::@1/(byte*) current_piece#20 ) + (byte) current_ypos#65 ← phi( main::@1/(byte) current_ypos#26 ) (byte) current_movedown_counter#42 ← phi( main::@1/(byte) current_movedown_counter#15 ) - (byte) keyboard_modifiers#40 ← phi( main::@1/(byte) keyboard_modifiers#24 ) - (byte) keyboard_events_size#49 ← phi( main::@1/(byte) keyboard_events_size#27 ) + (byte) keyboard_modifiers#41 ← phi( main::@1/(byte) keyboard_modifiers#24 ) + (byte) keyboard_events_size#50 ← phi( main::@1/(byte) keyboard_events_size#27 ) to:main::@4 main::@4: scope:[main] from main::@2 main::@5 - (byte) current_xpos#84 ← phi( main::@2/(byte) current_xpos#89 main::@5/(byte) current_xpos#90 ) - (byte) current_piece_color#58 ← phi( main::@2/(byte) current_piece_color#65 main::@5/(byte) current_piece_color#66 ) - (byte*) current_piece_gfx#72 ← phi( main::@2/(byte*) current_piece_gfx#77 main::@5/(byte*) current_piece_gfx#78 ) - (byte) current_piece_orientation#63 ← phi( main::@2/(byte) current_piece_orientation#68 main::@5/(byte) current_piece_orientation#69 ) - (byte*) current_piece#57 ← phi( main::@2/(byte*) current_piece#62 main::@5/(byte*) current_piece#63 ) - (byte) current_ypos#65 ← phi( main::@2/(byte) current_ypos#69 main::@5/(byte) current_ypos#70 ) + (byte) current_piece_color#59 ← phi( main::@2/(byte) current_piece_color#66 main::@5/(byte) current_piece_color#67 ) + (byte) current_xpos#85 ← phi( main::@2/(byte) current_xpos#90 main::@5/(byte) current_xpos#91 ) + (byte*) current_piece_gfx#73 ← phi( main::@2/(byte*) current_piece_gfx#78 main::@5/(byte*) current_piece_gfx#79 ) + (byte) current_orientation#64 ← phi( main::@2/(byte) current_orientation#69 main::@5/(byte) current_orientation#70 ) + (byte*) current_piece#58 ← phi( main::@2/(byte*) current_piece#63 main::@5/(byte*) current_piece#64 ) + (byte) current_ypos#61 ← phi( main::@2/(byte) current_ypos#65 main::@5/(byte) current_ypos#66 ) (byte) current_movedown_counter#38 ← phi( main::@2/(byte) current_movedown_counter#42 main::@5/(byte) current_movedown_counter#43 ) - (byte) keyboard_modifiers#34 ← phi( main::@2/(byte) keyboard_modifiers#40 main::@5/(byte) keyboard_modifiers#41 ) - (byte) keyboard_events_size#40 ← phi( main::@2/(byte) keyboard_events_size#49 main::@5/(byte) keyboard_events_size#50 ) - (bool~) main::$4 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 255 - if((bool~) main::$4) goto main::@5 + (byte) keyboard_modifiers#34 ← phi( main::@2/(byte) keyboard_modifiers#41 main::@5/(byte) keyboard_modifiers#42 ) + (byte) keyboard_events_size#40 ← phi( main::@2/(byte) keyboard_events_size#50 main::@5/(byte) keyboard_events_size#51 ) + (bool~) main::$5 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 255 + if((bool~) main::$5) goto main::@5 to:main::@7 main::@5: scope:[main] from main::@4 - (byte) current_xpos#90 ← phi( main::@4/(byte) current_xpos#84 ) - (byte) current_piece_color#66 ← phi( main::@4/(byte) current_piece_color#58 ) - (byte*) current_piece_gfx#78 ← phi( main::@4/(byte*) current_piece_gfx#72 ) - (byte) current_piece_orientation#69 ← phi( main::@4/(byte) current_piece_orientation#63 ) - (byte*) current_piece#63 ← phi( main::@4/(byte*) current_piece#57 ) - (byte) current_ypos#70 ← phi( main::@4/(byte) current_ypos#65 ) + (byte) current_piece_color#67 ← phi( main::@4/(byte) current_piece_color#59 ) + (byte) current_xpos#91 ← phi( main::@4/(byte) current_xpos#85 ) + (byte*) current_piece_gfx#79 ← phi( main::@4/(byte*) current_piece_gfx#73 ) + (byte) current_orientation#70 ← phi( main::@4/(byte) current_orientation#64 ) + (byte*) current_piece#64 ← phi( main::@4/(byte*) current_piece#58 ) + (byte) current_ypos#66 ← phi( main::@4/(byte) current_ypos#61 ) (byte) current_movedown_counter#43 ← phi( main::@4/(byte) current_movedown_counter#38 ) - (byte) keyboard_modifiers#41 ← phi( main::@4/(byte) keyboard_modifiers#34 ) - (byte) keyboard_events_size#50 ← phi( main::@4/(byte) keyboard_events_size#40 ) + (byte) keyboard_modifiers#42 ← phi( main::@4/(byte) keyboard_modifiers#34 ) + (byte) keyboard_events_size#51 ← phi( main::@4/(byte) keyboard_events_size#40 ) to:main::@4 main::@7: scope:[main] from main::@4 main::@8 - (byte) current_xpos#77 ← phi( main::@4/(byte) current_xpos#84 main::@8/(byte) current_xpos#85 ) - (byte) current_piece_color#49 ← phi( main::@4/(byte) current_piece_color#58 main::@8/(byte) current_piece_color#59 ) - (byte*) current_piece_gfx#64 ← phi( main::@4/(byte*) current_piece_gfx#72 main::@8/(byte*) current_piece_gfx#73 ) - (byte) current_piece_orientation#59 ← phi( main::@4/(byte) current_piece_orientation#63 main::@8/(byte) current_piece_orientation#64 ) - (byte*) current_piece#51 ← phi( main::@4/(byte*) current_piece#57 main::@8/(byte*) current_piece#58 ) - (byte) current_ypos#62 ← phi( main::@4/(byte) current_ypos#65 main::@8/(byte) current_ypos#66 ) + (byte) current_piece_color#50 ← phi( main::@4/(byte) current_piece_color#59 main::@8/(byte) current_piece_color#60 ) + (byte) current_xpos#78 ← phi( main::@4/(byte) current_xpos#85 main::@8/(byte) current_xpos#86 ) + (byte*) current_piece_gfx#65 ← phi( main::@4/(byte*) current_piece_gfx#73 main::@8/(byte*) current_piece_gfx#74 ) + (byte) current_orientation#60 ← phi( main::@4/(byte) current_orientation#64 main::@8/(byte) current_orientation#65 ) + (byte*) current_piece#52 ← phi( main::@4/(byte*) current_piece#58 main::@8/(byte*) current_piece#59 ) + (byte) current_ypos#58 ← phi( main::@4/(byte) current_ypos#61 main::@8/(byte) current_ypos#62 ) (byte) current_movedown_counter#34 ← phi( main::@4/(byte) current_movedown_counter#38 main::@8/(byte) current_movedown_counter#39 ) (byte) keyboard_modifiers#31 ← phi( main::@4/(byte) keyboard_modifiers#34 main::@8/(byte) keyboard_modifiers#35 ) (byte) keyboard_events_size#34 ← phi( main::@4/(byte) keyboard_events_size#40 main::@8/(byte) keyboard_events_size#41 ) - (bool~) main::$5 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 254 - if((bool~) main::$5) goto main::@8 + (bool~) main::$6 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 254 + if((bool~) main::$6) goto main::@8 to:main::@9 main::@8: scope:[main] from main::@7 - (byte) current_xpos#85 ← phi( main::@7/(byte) current_xpos#77 ) - (byte) current_piece_color#59 ← phi( main::@7/(byte) current_piece_color#49 ) - (byte*) current_piece_gfx#73 ← phi( main::@7/(byte*) current_piece_gfx#64 ) - (byte) current_piece_orientation#64 ← phi( main::@7/(byte) current_piece_orientation#59 ) - (byte*) current_piece#58 ← phi( main::@7/(byte*) current_piece#51 ) - (byte) current_ypos#66 ← phi( main::@7/(byte) current_ypos#62 ) + (byte) current_piece_color#60 ← phi( main::@7/(byte) current_piece_color#50 ) + (byte) current_xpos#86 ← phi( main::@7/(byte) current_xpos#78 ) + (byte*) current_piece_gfx#74 ← phi( main::@7/(byte*) current_piece_gfx#65 ) + (byte) current_orientation#65 ← phi( main::@7/(byte) current_orientation#60 ) + (byte*) current_piece#59 ← phi( main::@7/(byte*) current_piece#52 ) + (byte) current_ypos#62 ← phi( main::@7/(byte) current_ypos#58 ) (byte) current_movedown_counter#39 ← phi( main::@7/(byte) current_movedown_counter#34 ) (byte) keyboard_modifiers#35 ← phi( main::@7/(byte) keyboard_modifiers#31 ) (byte) keyboard_events_size#41 ← phi( main::@7/(byte) keyboard_events_size#34 ) to:main::@7 main::@9: scope:[main] from main::@7 - (byte) current_xpos#66 ← phi( main::@7/(byte) current_xpos#77 ) - (byte) current_piece_color#39 ← phi( main::@7/(byte) current_piece_color#49 ) - (byte*) current_piece_gfx#54 ← phi( main::@7/(byte*) current_piece_gfx#64 ) - (byte) current_piece_orientation#52 ← phi( main::@7/(byte) current_piece_orientation#59 ) - (byte*) current_piece#43 ← phi( main::@7/(byte*) current_piece#51 ) - (byte) current_ypos#53 ← phi( main::@7/(byte) current_ypos#62 ) + (byte) current_piece_color#40 ← phi( main::@7/(byte) current_piece_color#50 ) + (byte) current_xpos#67 ← phi( main::@7/(byte) current_xpos#78 ) + (byte*) current_piece_gfx#55 ← phi( main::@7/(byte*) current_piece_gfx#65 ) + (byte) current_orientation#53 ← phi( main::@7/(byte) current_orientation#60 ) + (byte*) current_piece#44 ← phi( main::@7/(byte*) current_piece#52 ) + (byte) current_ypos#51 ← phi( main::@7/(byte) current_ypos#58 ) (byte) current_movedown_counter#28 ← phi( main::@7/(byte) current_movedown_counter#34 ) (byte) keyboard_modifiers#23 ← phi( main::@7/(byte) keyboard_modifiers#31 ) (byte) keyboard_events_size#26 ← phi( main::@7/(byte) keyboard_events_size#34 ) *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0) call keyboard_event_scan - to:main::@25 -main::@25: scope:[main] from main::@9 - (byte) current_xpos#50 ← phi( main::@9/(byte) current_xpos#66 ) - (byte) current_piece_color#30 ← phi( main::@9/(byte) current_piece_color#39 ) - (byte*) current_piece_gfx#40 ← phi( main::@9/(byte*) current_piece_gfx#54 ) - (byte) current_piece_orientation#44 ← phi( main::@9/(byte) current_piece_orientation#52 ) - (byte*) current_piece#33 ← phi( main::@9/(byte*) current_piece#43 ) - (byte) current_ypos#44 ← phi( main::@9/(byte) current_ypos#53 ) + to:main::@26 +main::@26: scope:[main] from main::@9 + (byte) current_piece_color#30 ← phi( main::@9/(byte) current_piece_color#40 ) + (byte) current_xpos#51 ← phi( main::@9/(byte) current_xpos#67 ) + (byte*) current_piece_gfx#40 ← phi( main::@9/(byte*) current_piece_gfx#55 ) + (byte) current_orientation#44 ← phi( main::@9/(byte) current_orientation#53 ) + (byte*) current_piece#33 ← phi( main::@9/(byte*) current_piece#44 ) + (byte) current_ypos#43 ← phi( main::@9/(byte) current_ypos#51 ) (byte) current_movedown_counter#23 ← phi( main::@9/(byte) current_movedown_counter#28 ) (byte) keyboard_modifiers#15 ← phi( main::@9/(byte) keyboard_modifiers#6 ) (byte) keyboard_events_size#17 ← phi( main::@9/(byte) keyboard_events_size#3 ) @@ -513,171 +578,171 @@ main::@25: scope:[main] from main::@9 (byte) keyboard_modifiers#7 ← (byte) keyboard_modifiers#15 call keyboard_event_get (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 - to:main::@26 -main::@26: scope:[main] from main::@25 - (byte) keyboard_modifiers#48 ← phi( main::@25/(byte) keyboard_modifiers#7 ) - (byte) current_xpos#31 ← phi( main::@25/(byte) current_xpos#50 ) - (byte) current_piece_color#19 ← phi( main::@25/(byte) current_piece_color#30 ) - (byte*) current_piece_gfx#24 ← phi( main::@25/(byte*) current_piece_gfx#40 ) - (byte) current_piece_orientation#27 ← phi( main::@25/(byte) current_piece_orientation#44 ) - (byte*) current_piece#19 ← phi( main::@25/(byte*) current_piece#33 ) - (byte) current_ypos#25 ← phi( main::@25/(byte) current_ypos#44 ) - (byte) current_movedown_counter#14 ← phi( main::@25/(byte) current_movedown_counter#23 ) - (byte) keyboard_events_size#18 ← phi( main::@25/(byte) keyboard_events_size#5 ) - (byte) keyboard_event_get::return#5 ← phi( main::@25/(byte) keyboard_event_get::return#3 ) - (byte~) main::$7 ← (byte) keyboard_event_get::return#5 + to:main::@27 +main::@27: scope:[main] from main::@26 + (byte) keyboard_modifiers#49 ← phi( main::@26/(byte) keyboard_modifiers#7 ) + (byte) current_piece_color#19 ← phi( main::@26/(byte) current_piece_color#30 ) + (byte) current_xpos#31 ← phi( main::@26/(byte) current_xpos#51 ) + (byte*) current_piece_gfx#24 ← phi( main::@26/(byte*) current_piece_gfx#40 ) + (byte) current_orientation#27 ← phi( main::@26/(byte) current_orientation#44 ) + (byte*) current_piece#19 ← phi( main::@26/(byte*) current_piece#33 ) + (byte) current_ypos#25 ← phi( main::@26/(byte) current_ypos#43 ) + (byte) current_movedown_counter#14 ← phi( main::@26/(byte) current_movedown_counter#23 ) + (byte) keyboard_events_size#18 ← phi( main::@26/(byte) keyboard_events_size#5 ) + (byte) keyboard_event_get::return#5 ← phi( main::@26/(byte) keyboard_event_get::return#3 ) + (byte~) main::$8 ← (byte) keyboard_event_get::return#5 (byte) keyboard_events_size#7 ← (byte) keyboard_events_size#18 - (byte) main::key_event#0 ← (byte~) main::$7 + (byte) main::key_event#0 ← (byte~) main::$8 (byte) main::render#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 call play_move_down (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 - to:main::@27 -main::@27: scope:[main] from main::@26 - (byte) keyboard_modifiers#45 ← phi( main::@26/(byte) keyboard_modifiers#48 ) - (byte) keyboard_events_size#57 ← phi( main::@26/(byte) keyboard_events_size#7 ) - (byte) main::key_event#1 ← phi( main::@26/(byte) main::key_event#0 ) - (byte) main::render#4 ← phi( main::@26/(byte) main::render#0 ) - (byte) current_xpos#14 ← phi( main::@26/(byte) current_xpos#6 ) - (byte) current_piece_color#10 ← phi( main::@26/(byte) current_piece_color#5 ) - (byte*) current_piece_gfx#13 ← phi( main::@26/(byte*) current_piece_gfx#6 ) - (byte) current_piece_orientation#13 ← phi( main::@26/(byte) current_piece_orientation#6 ) - (byte*) current_piece#10 ← phi( main::@26/(byte*) current_piece#5 ) - (byte) current_ypos#11 ← phi( main::@26/(byte) current_ypos#6 ) - (byte) current_movedown_counter#7 ← phi( main::@26/(byte) current_movedown_counter#5 ) - (byte) play_move_down::return#4 ← phi( main::@26/(byte) play_move_down::return#0 ) - (byte~) main::$8 ← (byte) play_move_down::return#4 + to:main::@28 +main::@28: scope:[main] from main::@27 + (byte) keyboard_modifiers#46 ← phi( main::@27/(byte) keyboard_modifiers#49 ) + (byte) keyboard_events_size#58 ← phi( main::@27/(byte) keyboard_events_size#7 ) + (byte) main::key_event#1 ← phi( main::@27/(byte) main::key_event#0 ) + (byte) main::render#4 ← phi( main::@27/(byte) main::render#0 ) + (byte) current_piece_color#10 ← phi( main::@27/(byte) current_piece_color#5 ) + (byte) current_xpos#14 ← phi( main::@27/(byte) current_xpos#6 ) + (byte*) current_piece_gfx#13 ← phi( main::@27/(byte*) current_piece_gfx#6 ) + (byte) current_orientation#13 ← phi( main::@27/(byte) current_orientation#6 ) + (byte*) current_piece#10 ← phi( main::@27/(byte*) current_piece#5 ) + (byte) current_ypos#11 ← phi( main::@27/(byte) current_ypos#6 ) + (byte) current_movedown_counter#7 ← phi( main::@27/(byte) current_movedown_counter#5 ) + (byte) play_move_down::return#4 ← phi( main::@27/(byte) play_move_down::return#0 ) + (byte~) main::$9 ← (byte) play_move_down::return#4 (byte) current_movedown_counter#1 ← (byte) current_movedown_counter#7 (byte) current_ypos#2 ← (byte) current_ypos#11 (byte*) current_piece#2 ← (byte*) current_piece#10 - (byte) current_piece_orientation#2 ← (byte) current_piece_orientation#13 + (byte) current_orientation#2 ← (byte) current_orientation#13 (byte*) current_piece_gfx#2 ← (byte*) current_piece_gfx#13 - (byte) current_piece_color#2 ← (byte) current_piece_color#10 (byte) current_xpos#2 ← (byte) current_xpos#14 - (byte) main::render#1 ← (byte) main::render#4 + (byte~) main::$8 + (byte) current_piece_color#2 ← (byte) current_piece_color#10 + (byte) main::render#1 ← (byte) main::render#4 + (byte~) main::$9 (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#1 call play_move_leftright (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 - to:main::@28 -main::@28: scope:[main] from main::@27 - (byte) current_movedown_counter#35 ← phi( main::@27/(byte) current_movedown_counter#1 ) - (byte) keyboard_modifiers#42 ← phi( main::@27/(byte) keyboard_modifiers#45 ) - (byte) keyboard_events_size#51 ← phi( main::@27/(byte) keyboard_events_size#57 ) - (byte) current_piece_color#50 ← phi( main::@27/(byte) current_piece_color#2 ) - (byte*) current_piece#52 ← phi( main::@27/(byte*) current_piece#2 ) - (byte) current_ypos#59 ← phi( main::@27/(byte) current_ypos#2 ) - (byte*) current_piece_gfx#25 ← phi( main::@27/(byte*) current_piece_gfx#2 ) - (byte) current_piece_orientation#28 ← phi( main::@27/(byte) current_piece_orientation#2 ) - (byte) main::key_event#2 ← phi( main::@27/(byte) main::key_event#1 ) - (byte) main::render#5 ← phi( main::@27/(byte) main::render#1 ) - (byte) current_xpos#15 ← phi( main::@27/(byte) current_xpos#8 ) - (byte) play_move_leftright::return#5 ← phi( main::@27/(byte) play_move_leftright::return#0 ) - (byte~) main::$9 ← (byte) play_move_leftright::return#5 + to:main::@29 +main::@29: scope:[main] from main::@28 + (byte) current_movedown_counter#35 ← phi( main::@28/(byte) current_movedown_counter#1 ) + (byte) keyboard_modifiers#43 ← phi( main::@28/(byte) keyboard_modifiers#46 ) + (byte) keyboard_events_size#52 ← phi( main::@28/(byte) keyboard_events_size#58 ) + (byte) current_piece_color#51 ← phi( main::@28/(byte) current_piece_color#2 ) + (byte*) current_piece#53 ← phi( main::@28/(byte*) current_piece#2 ) + (byte) current_ypos#57 ← phi( main::@28/(byte) current_ypos#2 ) + (byte*) current_piece_gfx#25 ← phi( main::@28/(byte*) current_piece_gfx#2 ) + (byte) current_orientation#28 ← phi( main::@28/(byte) current_orientation#2 ) + (byte) main::key_event#2 ← phi( main::@28/(byte) main::key_event#1 ) + (byte) main::render#5 ← phi( main::@28/(byte) main::render#1 ) + (byte) current_xpos#15 ← phi( main::@28/(byte) current_xpos#8 ) + (byte) play_move_leftright::return#5 ← phi( main::@28/(byte) play_move_leftright::return#0 ) + (byte~) main::$10 ← (byte) play_move_leftright::return#5 (byte) current_xpos#3 ← (byte) current_xpos#15 - (byte) main::render#2 ← (byte) main::render#5 + (byte~) main::$9 + (byte) main::render#2 ← (byte) main::render#5 + (byte~) main::$10 (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#2 call play_move_rotate (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 - to:main::@29 -main::@29: scope:[main] from main::@28 - (byte) current_movedown_counter#29 ← phi( main::@28/(byte) current_movedown_counter#35 ) - (byte) keyboard_modifiers#36 ← phi( main::@28/(byte) keyboard_modifiers#42 ) - (byte) keyboard_events_size#42 ← phi( main::@28/(byte) keyboard_events_size#51 ) - (byte) current_ypos#54 ← phi( main::@28/(byte) current_ypos#59 ) - (byte) current_xpos#67 ← phi( main::@28/(byte) current_xpos#3 ) - (byte) current_piece_color#40 ← phi( main::@28/(byte) current_piece_color#50 ) - (byte*) current_piece#44 ← phi( main::@28/(byte*) current_piece#52 ) - (byte) main::render#6 ← phi( main::@28/(byte) main::render#2 ) - (byte*) current_piece_gfx#14 ← phi( main::@28/(byte*) current_piece_gfx#7 ) - (byte) current_piece_orientation#14 ← phi( main::@28/(byte) current_piece_orientation#7 ) - (byte) play_move_rotate::return#5 ← phi( main::@28/(byte) play_move_rotate::return#0 ) - (byte~) main::$10 ← (byte) play_move_rotate::return#5 - (byte) current_piece_orientation#3 ← (byte) current_piece_orientation#14 + to:main::@30 +main::@30: scope:[main] from main::@29 + (byte) current_movedown_counter#29 ← phi( main::@29/(byte) current_movedown_counter#35 ) + (byte) keyboard_modifiers#36 ← phi( main::@29/(byte) keyboard_modifiers#43 ) + (byte) keyboard_events_size#42 ← phi( main::@29/(byte) keyboard_events_size#52 ) + (byte) current_piece_color#41 ← phi( main::@29/(byte) current_piece_color#51 ) + (byte) current_ypos#52 ← phi( main::@29/(byte) current_ypos#57 ) + (byte) current_xpos#68 ← phi( main::@29/(byte) current_xpos#3 ) + (byte*) current_piece#45 ← phi( main::@29/(byte*) current_piece#53 ) + (byte) main::render#6 ← phi( main::@29/(byte) main::render#2 ) + (byte*) current_piece_gfx#14 ← phi( main::@29/(byte*) current_piece_gfx#7 ) + (byte) current_orientation#14 ← phi( main::@29/(byte) current_orientation#7 ) + (byte) play_move_rotate::return#5 ← phi( main::@29/(byte) play_move_rotate::return#0 ) + (byte~) main::$11 ← (byte) play_move_rotate::return#5 + (byte) current_orientation#3 ← (byte) current_orientation#14 (byte*) current_piece_gfx#3 ← (byte*) current_piece_gfx#14 - (byte) main::render#3 ← (byte) main::render#6 + (byte~) main::$10 - (bool~) main::$11 ← (byte) main::render#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) main::$12 ← ! (bool~) main::$11 - if((bool~) main::$12) goto main::@10 + (byte) main::render#3 ← (byte) main::render#6 + (byte~) main::$11 + (bool~) main::$12 ← (byte) main::render#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) main::$13 ← ! (bool~) main::$12 + if((bool~) main::$13) goto main::@10 to:main::@19 -main::@10: scope:[main] from main::@29 main::@31 - (byte) current_movedown_counter#21 ← phi( main::@29/(byte) current_movedown_counter#29 main::@31/(byte) current_movedown_counter#30 ) - (byte) keyboard_modifiers#29 ← phi( main::@29/(byte) keyboard_modifiers#36 main::@31/(byte) keyboard_modifiers#37 ) - (byte) keyboard_events_size#32 ← phi( main::@29/(byte) keyboard_events_size#42 main::@31/(byte) keyboard_events_size#43 ) - (byte) current_ypos#42 ← phi( main::@29/(byte) current_ypos#54 main::@31/(byte) current_ypos#55 ) - (byte) current_xpos#48 ← phi( main::@29/(byte) current_xpos#67 main::@31/(byte) current_xpos#68 ) - (byte) current_piece_color#28 ← phi( main::@29/(byte) current_piece_color#40 main::@31/(byte) current_piece_color#41 ) - (byte*) current_piece_gfx#38 ← phi( main::@29/(byte*) current_piece_gfx#3 main::@31/(byte*) current_piece_gfx#55 ) - (byte) current_piece_orientation#42 ← phi( main::@29/(byte) current_piece_orientation#3 main::@31/(byte) current_piece_orientation#53 ) - (byte*) current_piece#31 ← phi( main::@29/(byte*) current_piece#44 main::@31/(byte*) current_piece#45 ) +main::@10: scope:[main] from main::@30 main::@32 + (byte) current_movedown_counter#21 ← phi( main::@30/(byte) current_movedown_counter#29 main::@32/(byte) current_movedown_counter#30 ) + (byte) keyboard_modifiers#29 ← phi( main::@30/(byte) keyboard_modifiers#36 main::@32/(byte) keyboard_modifiers#37 ) + (byte) keyboard_events_size#32 ← phi( main::@30/(byte) keyboard_events_size#42 main::@32/(byte) keyboard_events_size#43 ) + (byte) current_piece_color#28 ← phi( main::@30/(byte) current_piece_color#41 main::@32/(byte) current_piece_color#42 ) + (byte) current_ypos#41 ← phi( main::@30/(byte) current_ypos#52 main::@32/(byte) current_ypos#53 ) + (byte) current_xpos#49 ← phi( main::@30/(byte) current_xpos#68 main::@32/(byte) current_xpos#69 ) + (byte*) current_piece_gfx#38 ← phi( main::@30/(byte*) current_piece_gfx#3 main::@32/(byte*) current_piece_gfx#56 ) + (byte) current_orientation#42 ← phi( main::@30/(byte) current_orientation#3 main::@32/(byte) current_orientation#54 ) + (byte*) current_piece#31 ← phi( main::@30/(byte*) current_piece#45 main::@32/(byte*) current_piece#46 ) *((byte*) BORDERCOL#0) ← -- *((byte*) BORDERCOL#0) to:main::@1 -main::@19: scope:[main] from main::@29 - (byte) current_movedown_counter#40 ← phi( main::@29/(byte) current_movedown_counter#29 ) - (byte) keyboard_modifiers#46 ← phi( main::@29/(byte) keyboard_modifiers#36 ) - (byte) keyboard_events_size#58 ← phi( main::@29/(byte) keyboard_events_size#42 ) - (byte) current_piece_color#60 ← phi( main::@29/(byte) current_piece_color#40 ) - (byte*) current_piece_gfx#74 ← phi( main::@29/(byte*) current_piece_gfx#3 ) - (byte) current_piece_orientation#65 ← phi( main::@29/(byte) current_piece_orientation#3 ) - (byte*) current_piece#59 ← phi( main::@29/(byte*) current_piece#44 ) - (byte) current_xpos#78 ← phi( main::@29/(byte) current_xpos#67 ) - (byte) current_ypos#45 ← phi( main::@29/(byte) current_ypos#54 ) +main::@19: scope:[main] from main::@30 + (byte) current_movedown_counter#40 ← phi( main::@30/(byte) current_movedown_counter#29 ) + (byte) keyboard_modifiers#47 ← phi( main::@30/(byte) keyboard_modifiers#36 ) + (byte) keyboard_events_size#59 ← phi( main::@30/(byte) keyboard_events_size#42 ) + (byte) current_piece_color#61 ← phi( main::@30/(byte) current_piece_color#41 ) + (byte*) current_piece_gfx#75 ← phi( main::@30/(byte*) current_piece_gfx#3 ) + (byte) current_orientation#66 ← phi( main::@30/(byte) current_orientation#3 ) + (byte*) current_piece#60 ← phi( main::@30/(byte*) current_piece#45 ) + (byte) current_xpos#79 ← phi( main::@30/(byte) current_xpos#68 ) + (byte) current_ypos#44 ← phi( main::@30/(byte) current_ypos#52 ) *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0) call render_playfield - to:main::@30 -main::@30: scope:[main] from main::@19 - (byte) current_movedown_counter#36 ← phi( main::@19/(byte) current_movedown_counter#40 ) - (byte) keyboard_modifiers#43 ← phi( main::@19/(byte) keyboard_modifiers#46 ) - (byte) keyboard_events_size#52 ← phi( main::@19/(byte) keyboard_events_size#58 ) - (byte) current_piece_color#51 ← phi( main::@19/(byte) current_piece_color#60 ) - (byte*) current_piece_gfx#65 ← phi( main::@19/(byte*) current_piece_gfx#74 ) - (byte) current_piece_orientation#60 ← phi( main::@19/(byte) current_piece_orientation#65 ) - (byte*) current_piece#53 ← phi( main::@19/(byte*) current_piece#59 ) - (byte) current_xpos#75 ← phi( main::@19/(byte) current_xpos#78 ) - (byte) current_ypos#39 ← phi( main::@19/(byte) current_ypos#45 ) - call render_current to:main::@31 -main::@31: scope:[main] from main::@30 - (byte) current_movedown_counter#30 ← phi( main::@30/(byte) current_movedown_counter#36 ) - (byte) keyboard_modifiers#37 ← phi( main::@30/(byte) keyboard_modifiers#43 ) - (byte) keyboard_events_size#43 ← phi( main::@30/(byte) keyboard_events_size#52 ) - (byte) current_ypos#55 ← phi( main::@30/(byte) current_ypos#39 ) - (byte) current_xpos#68 ← phi( main::@30/(byte) current_xpos#75 ) - (byte) current_piece_color#41 ← phi( main::@30/(byte) current_piece_color#51 ) - (byte*) current_piece_gfx#55 ← phi( main::@30/(byte*) current_piece_gfx#65 ) - (byte) current_piece_orientation#53 ← phi( main::@30/(byte) current_piece_orientation#60 ) - (byte*) current_piece#45 ← phi( main::@30/(byte*) current_piece#53 ) +main::@31: scope:[main] from main::@19 + (byte) current_movedown_counter#36 ← phi( main::@19/(byte) current_movedown_counter#40 ) + (byte) keyboard_modifiers#44 ← phi( main::@19/(byte) keyboard_modifiers#47 ) + (byte) keyboard_events_size#53 ← phi( main::@19/(byte) keyboard_events_size#59 ) + (byte) current_piece_color#52 ← phi( main::@19/(byte) current_piece_color#61 ) + (byte*) current_piece_gfx#66 ← phi( main::@19/(byte*) current_piece_gfx#75 ) + (byte) current_orientation#61 ← phi( main::@19/(byte) current_orientation#66 ) + (byte*) current_piece#54 ← phi( main::@19/(byte*) current_piece#60 ) + (byte) current_xpos#76 ← phi( main::@19/(byte) current_xpos#79 ) + (byte) current_ypos#38 ← phi( main::@19/(byte) current_ypos#44 ) + call render_current + to:main::@32 +main::@32: scope:[main] from main::@31 + (byte) current_movedown_counter#30 ← phi( main::@31/(byte) current_movedown_counter#36 ) + (byte) keyboard_modifiers#37 ← phi( main::@31/(byte) keyboard_modifiers#44 ) + (byte) keyboard_events_size#43 ← phi( main::@31/(byte) keyboard_events_size#53 ) + (byte) current_piece_color#42 ← phi( main::@31/(byte) current_piece_color#52 ) + (byte) current_ypos#53 ← phi( main::@31/(byte) current_ypos#38 ) + (byte) current_xpos#69 ← phi( main::@31/(byte) current_xpos#76 ) + (byte*) current_piece_gfx#56 ← phi( main::@31/(byte*) current_piece_gfx#66 ) + (byte) current_orientation#54 ← phi( main::@31/(byte) current_orientation#61 ) + (byte*) current_piece#46 ← phi( main::@31/(byte*) current_piece#54 ) *((byte*) BORDERCOL#0) ← -- *((byte*) BORDERCOL#0) to:main::@10 main::@return: scope:[main] from main::@1 (byte) current_movedown_counter#8 ← phi( main::@1/(byte) current_movedown_counter#15 ) (byte) keyboard_modifiers#16 ← phi( main::@1/(byte) keyboard_modifiers#24 ) (byte) keyboard_events_size#19 ← phi( main::@1/(byte) keyboard_events_size#27 ) + (byte) current_piece_color#11 ← phi( main::@1/(byte) current_piece_color#20 ) (byte) current_ypos#12 ← phi( main::@1/(byte) current_ypos#26 ) (byte) current_xpos#16 ← phi( main::@1/(byte) current_xpos#32 ) - (byte) current_piece_color#11 ← phi( main::@1/(byte) current_piece_color#20 ) (byte*) current_piece_gfx#15 ← phi( main::@1/(byte*) current_piece_gfx#26 ) - (byte) current_piece_orientation#15 ← phi( main::@1/(byte) current_piece_orientation#29 ) + (byte) current_orientation#15 ← phi( main::@1/(byte) current_orientation#29 ) (byte*) current_piece#11 ← phi( main::@1/(byte*) current_piece#20 ) (byte*) current_piece#3 ← (byte*) current_piece#11 - (byte) current_piece_orientation#4 ← (byte) current_piece_orientation#15 + (byte) current_orientation#4 ← (byte) current_orientation#15 (byte*) current_piece_gfx#4 ← (byte*) current_piece_gfx#15 - (byte) current_piece_color#3 ← (byte) current_piece_color#11 (byte) current_xpos#4 ← (byte) current_xpos#16 (byte) current_ypos#3 ← (byte) current_ypos#12 + (byte) current_piece_color#3 ← (byte) current_piece_color#11 (byte) keyboard_events_size#8 ← (byte) keyboard_events_size#19 (byte) keyboard_modifiers#8 ← (byte) keyboard_modifiers#16 (byte) current_movedown_counter#2 ← (byte) current_movedown_counter#8 return to:@return -play_move_down: scope:[play_move_down] from main::@26 - (byte) current_piece_color#67 ← phi( main::@26/(byte) current_piece_color#19 ) - (byte*) current_piece_gfx#79 ← phi( main::@26/(byte*) current_piece_gfx#24 ) - (byte*) current_piece#64 ← phi( main::@26/(byte*) current_piece#19 ) - (byte) current_piece_orientation#66 ← phi( main::@26/(byte) current_piece_orientation#27 ) - (byte) current_xpos#86 ← phi( main::@26/(byte) current_xpos#31 ) - (byte) current_ypos#67 ← phi( main::@26/(byte) current_ypos#25 ) - (byte) play_move_down::key_event#1 ← phi( main::@26/(byte) play_move_down::key_event#0 ) - (byte) current_movedown_counter#9 ← phi( main::@26/(byte) current_movedown_counter#14 ) +play_move_down: scope:[play_move_down] from main::@27 + (byte) current_piece_color#68 ← phi( main::@27/(byte) current_piece_color#19 ) + (byte*) current_piece_gfx#80 ← phi( main::@27/(byte*) current_piece_gfx#24 ) + (byte*) current_piece#65 ← phi( main::@27/(byte*) current_piece#19 ) + (byte) current_orientation#67 ← phi( main::@27/(byte) current_orientation#27 ) + (byte) current_xpos#87 ← phi( main::@27/(byte) current_xpos#31 ) + (byte) current_ypos#63 ← phi( main::@27/(byte) current_ypos#25 ) + (byte) play_move_down::key_event#1 ← phi( main::@27/(byte) play_move_down::key_event#0 ) + (byte) current_movedown_counter#9 ← phi( main::@27/(byte) current_movedown_counter#14 ) (byte) current_movedown_counter#3 ← ++ (byte) current_movedown_counter#9 (byte) play_move_down::movedown#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) play_move_down::$0 ← (byte) play_move_down::key_event#1 == (byte) KEY_SPACE#0 @@ -685,12 +750,12 @@ play_move_down: scope:[play_move_down] from main::@26 if((bool~) play_move_down::$1) goto play_move_down::@1 to:play_move_down::@8 play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@8 - (byte) current_piece_color#61 ← phi( play_move_down/(byte) current_piece_color#67 play_move_down::@8/(byte) current_piece_color#68 ) - (byte*) current_piece_gfx#75 ← phi( play_move_down/(byte*) current_piece_gfx#79 play_move_down::@8/(byte*) current_piece_gfx#80 ) - (byte*) current_piece#60 ← phi( play_move_down/(byte*) current_piece#64 play_move_down::@8/(byte*) current_piece#65 ) - (byte) current_piece_orientation#61 ← phi( play_move_down/(byte) current_piece_orientation#66 play_move_down::@8/(byte) current_piece_orientation#67 ) - (byte) current_xpos#79 ← phi( play_move_down/(byte) current_xpos#86 play_move_down::@8/(byte) current_xpos#87 ) - (byte) current_ypos#63 ← phi( play_move_down/(byte) current_ypos#67 play_move_down::@8/(byte) current_ypos#68 ) + (byte) current_piece_color#62 ← phi( play_move_down/(byte) current_piece_color#68 play_move_down::@8/(byte) current_piece_color#69 ) + (byte*) current_piece_gfx#76 ← phi( play_move_down/(byte*) current_piece_gfx#80 play_move_down::@8/(byte*) current_piece_gfx#81 ) + (byte*) current_piece#61 ← phi( play_move_down/(byte*) current_piece#65 play_move_down::@8/(byte*) current_piece#66 ) + (byte) current_orientation#62 ← phi( play_move_down/(byte) current_orientation#67 play_move_down::@8/(byte) current_orientation#68 ) + (byte) current_xpos#80 ← phi( play_move_down/(byte) current_xpos#87 play_move_down::@8/(byte) current_xpos#88 ) + (byte) current_ypos#59 ← phi( play_move_down/(byte) current_ypos#63 play_move_down::@8/(byte) current_ypos#64 ) (byte) play_move_down::movedown#12 ← phi( play_move_down/(byte) play_move_down::movedown#0 play_move_down::@8/(byte) play_move_down::movedown#1 ) (byte) current_movedown_counter#24 ← phi( play_move_down/(byte) current_movedown_counter#3 play_move_down::@8/(byte) current_movedown_counter#31 ) (byte) keyboard_event_pressed::keycode#4 ← (byte) KEY_SPACE#0 @@ -698,12 +763,12 @@ play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down:: (byte) keyboard_event_pressed::return#6 ← (byte) keyboard_event_pressed::return#5 to:play_move_down::@17 play_move_down::@17: scope:[play_move_down] from play_move_down::@1 - (byte) current_piece_color#53 ← phi( play_move_down::@1/(byte) current_piece_color#61 ) - (byte*) current_piece_gfx#67 ← phi( play_move_down::@1/(byte*) current_piece_gfx#75 ) - (byte*) current_piece#55 ← phi( play_move_down::@1/(byte*) current_piece#60 ) - (byte) current_piece_orientation#55 ← phi( play_move_down::@1/(byte) current_piece_orientation#61 ) - (byte) current_xpos#70 ← phi( play_move_down::@1/(byte) current_xpos#79 ) - (byte) current_ypos#57 ← phi( play_move_down::@1/(byte) current_ypos#63 ) + (byte) current_piece_color#54 ← phi( play_move_down::@1/(byte) current_piece_color#62 ) + (byte*) current_piece_gfx#68 ← phi( play_move_down::@1/(byte*) current_piece_gfx#76 ) + (byte*) current_piece#56 ← phi( play_move_down::@1/(byte*) current_piece#61 ) + (byte) current_orientation#56 ← phi( play_move_down::@1/(byte) current_orientation#62 ) + (byte) current_xpos#71 ← phi( play_move_down::@1/(byte) current_xpos#80 ) + (byte) current_ypos#55 ← phi( play_move_down::@1/(byte) current_ypos#59 ) (byte) play_move_down::movedown#10 ← phi( play_move_down::@1/(byte) play_move_down::movedown#12 ) (byte) current_movedown_counter#17 ← phi( play_move_down::@1/(byte) current_movedown_counter#24 ) (byte) keyboard_event_pressed::return#12 ← phi( play_move_down::@1/(byte) keyboard_event_pressed::return#6 ) @@ -713,117 +778,117 @@ play_move_down::@17: scope:[play_move_down] from play_move_down::@1 if((bool~) play_move_down::$4) goto play_move_down::@2 to:play_move_down::@9 play_move_down::@8: scope:[play_move_down] from play_move_down - (byte) current_piece_color#68 ← phi( play_move_down/(byte) current_piece_color#67 ) - (byte*) current_piece_gfx#80 ← phi( play_move_down/(byte*) current_piece_gfx#79 ) - (byte*) current_piece#65 ← phi( play_move_down/(byte*) current_piece#64 ) - (byte) current_piece_orientation#67 ← phi( play_move_down/(byte) current_piece_orientation#66 ) - (byte) current_xpos#87 ← phi( play_move_down/(byte) current_xpos#86 ) - (byte) current_ypos#68 ← phi( play_move_down/(byte) current_ypos#67 ) + (byte) current_piece_color#69 ← phi( play_move_down/(byte) current_piece_color#68 ) + (byte*) current_piece_gfx#81 ← phi( play_move_down/(byte*) current_piece_gfx#80 ) + (byte*) current_piece#66 ← phi( play_move_down/(byte*) current_piece#65 ) + (byte) current_orientation#68 ← phi( play_move_down/(byte) current_orientation#67 ) + (byte) current_xpos#88 ← phi( play_move_down/(byte) current_xpos#87 ) + (byte) current_ypos#64 ← phi( play_move_down/(byte) current_ypos#63 ) (byte) current_movedown_counter#31 ← phi( play_move_down/(byte) current_movedown_counter#3 ) (byte) play_move_down::movedown#4 ← phi( play_move_down/(byte) play_move_down::movedown#0 ) (byte) play_move_down::movedown#1 ← ++ (byte) play_move_down::movedown#4 to:play_move_down::@1 play_move_down::@2: scope:[play_move_down] from play_move_down::@10 play_move_down::@17 play_move_down::@3 - (byte) current_piece_color#43 ← phi( play_move_down::@10/(byte) current_piece_color#52 play_move_down::@17/(byte) current_piece_color#53 play_move_down::@3/(byte) current_piece_color#54 ) - (byte*) current_piece_gfx#57 ← phi( play_move_down::@10/(byte*) current_piece_gfx#66 play_move_down::@17/(byte*) current_piece_gfx#67 play_move_down::@3/(byte*) current_piece_gfx#68 ) - (byte*) current_piece#47 ← phi( play_move_down::@10/(byte*) current_piece#54 play_move_down::@17/(byte*) current_piece#55 play_move_down::@3/(byte*) current_piece#56 ) - (byte) current_piece_orientation#46 ← phi( play_move_down::@10/(byte) current_piece_orientation#54 play_move_down::@17/(byte) current_piece_orientation#55 play_move_down::@3/(byte) current_piece_orientation#56 ) - (byte) current_xpos#52 ← phi( play_move_down::@10/(byte) current_xpos#69 play_move_down::@17/(byte) current_xpos#70 play_move_down::@3/(byte) current_xpos#71 ) - (byte) current_ypos#47 ← phi( play_move_down::@10/(byte) current_ypos#56 play_move_down::@17/(byte) current_ypos#57 play_move_down::@3/(byte) current_ypos#58 ) + (byte) current_piece_color#44 ← phi( play_move_down::@10/(byte) current_piece_color#53 play_move_down::@17/(byte) current_piece_color#54 play_move_down::@3/(byte) current_piece_color#55 ) + (byte*) current_piece_gfx#58 ← phi( play_move_down::@10/(byte*) current_piece_gfx#67 play_move_down::@17/(byte*) current_piece_gfx#68 play_move_down::@3/(byte*) current_piece_gfx#69 ) + (byte*) current_piece#48 ← phi( play_move_down::@10/(byte*) current_piece#55 play_move_down::@17/(byte*) current_piece#56 play_move_down::@3/(byte*) current_piece#57 ) + (byte) current_orientation#46 ← phi( play_move_down::@10/(byte) current_orientation#55 play_move_down::@17/(byte) current_orientation#56 play_move_down::@3/(byte) current_orientation#57 ) + (byte) current_xpos#53 ← phi( play_move_down::@10/(byte) current_xpos#70 play_move_down::@17/(byte) current_xpos#71 play_move_down::@3/(byte) current_xpos#72 ) + (byte) current_ypos#46 ← phi( play_move_down::@10/(byte) current_ypos#54 play_move_down::@17/(byte) current_ypos#55 play_move_down::@3/(byte) current_ypos#56 ) (byte) play_move_down::movedown#9 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@3/(byte) play_move_down::movedown#11 ) (byte) current_movedown_counter#10 ← phi( play_move_down::@10/(byte) current_movedown_counter#16 play_move_down::@17/(byte) current_movedown_counter#17 play_move_down::@3/(byte) current_movedown_counter#18 ) - (bool~) play_move_down::$7 ← (byte) current_movedown_counter#10 >= (byte) current_movedown_rate#0 + (bool~) play_move_down::$7 ← (byte) current_movedown_counter#10 >= (byte) current_movedown_slow#0 (bool~) play_move_down::$8 ← ! (bool~) play_move_down::$7 if((bool~) play_move_down::$8) goto play_move_down::@4 to:play_move_down::@11 play_move_down::@9: scope:[play_move_down] from play_move_down::@17 - (byte) current_piece_color#62 ← phi( play_move_down::@17/(byte) current_piece_color#53 ) - (byte*) current_piece_gfx#76 ← phi( play_move_down::@17/(byte*) current_piece_gfx#67 ) - (byte*) current_piece#61 ← phi( play_move_down::@17/(byte*) current_piece#55 ) - (byte) current_piece_orientation#62 ← phi( play_move_down::@17/(byte) current_piece_orientation#55 ) - (byte) current_xpos#80 ← phi( play_move_down::@17/(byte) current_xpos#70 ) - (byte) current_ypos#64 ← phi( play_move_down::@17/(byte) current_ypos#57 ) + (byte) current_piece_color#63 ← phi( play_move_down::@17/(byte) current_piece_color#54 ) + (byte*) current_piece_gfx#77 ← phi( play_move_down::@17/(byte*) current_piece_gfx#68 ) + (byte*) current_piece#62 ← phi( play_move_down::@17/(byte*) current_piece#56 ) + (byte) current_orientation#63 ← phi( play_move_down::@17/(byte) current_orientation#56 ) + (byte) current_xpos#81 ← phi( play_move_down::@17/(byte) current_xpos#71 ) + (byte) current_ypos#60 ← phi( play_move_down::@17/(byte) current_ypos#55 ) (byte) play_move_down::movedown#8 ← phi( play_move_down::@17/(byte) play_move_down::movedown#10 ) (byte) current_movedown_counter#11 ← phi( play_move_down::@17/(byte) current_movedown_counter#17 ) - (bool~) play_move_down::$5 ← (byte) current_movedown_counter#11 >= (byte) current_movedown_rate_fast#0 + (bool~) play_move_down::$5 ← (byte) current_movedown_counter#11 >= (byte) current_movedown_fast#0 (bool~) play_move_down::$6 ← ! (bool~) play_move_down::$5 if((bool~) play_move_down::$6) goto play_move_down::@3 to:play_move_down::@10 play_move_down::@3: scope:[play_move_down] from play_move_down::@9 - (byte) current_piece_color#54 ← phi( play_move_down::@9/(byte) current_piece_color#62 ) - (byte*) current_piece_gfx#68 ← phi( play_move_down::@9/(byte*) current_piece_gfx#76 ) - (byte*) current_piece#56 ← phi( play_move_down::@9/(byte*) current_piece#61 ) - (byte) current_piece_orientation#56 ← phi( play_move_down::@9/(byte) current_piece_orientation#62 ) - (byte) current_xpos#71 ← phi( play_move_down::@9/(byte) current_xpos#80 ) - (byte) current_ypos#58 ← phi( play_move_down::@9/(byte) current_ypos#64 ) + (byte) current_piece_color#55 ← phi( play_move_down::@9/(byte) current_piece_color#63 ) + (byte*) current_piece_gfx#69 ← phi( play_move_down::@9/(byte*) current_piece_gfx#77 ) + (byte*) current_piece#57 ← phi( play_move_down::@9/(byte*) current_piece#62 ) + (byte) current_orientation#57 ← phi( play_move_down::@9/(byte) current_orientation#63 ) + (byte) current_xpos#72 ← phi( play_move_down::@9/(byte) current_xpos#81 ) + (byte) current_ypos#56 ← phi( play_move_down::@9/(byte) current_ypos#60 ) (byte) play_move_down::movedown#11 ← phi( play_move_down::@9/(byte) play_move_down::movedown#8 ) (byte) current_movedown_counter#18 ← phi( play_move_down::@9/(byte) current_movedown_counter#11 ) to:play_move_down::@2 play_move_down::@10: scope:[play_move_down] from play_move_down::@9 - (byte) current_piece_color#52 ← phi( play_move_down::@9/(byte) current_piece_color#62 ) - (byte*) current_piece_gfx#66 ← phi( play_move_down::@9/(byte*) current_piece_gfx#76 ) - (byte*) current_piece#54 ← phi( play_move_down::@9/(byte*) current_piece#61 ) - (byte) current_piece_orientation#54 ← phi( play_move_down::@9/(byte) current_piece_orientation#62 ) - (byte) current_xpos#69 ← phi( play_move_down::@9/(byte) current_xpos#80 ) - (byte) current_ypos#56 ← phi( play_move_down::@9/(byte) current_ypos#64 ) + (byte) current_piece_color#53 ← phi( play_move_down::@9/(byte) current_piece_color#63 ) + (byte*) current_piece_gfx#67 ← phi( play_move_down::@9/(byte*) current_piece_gfx#77 ) + (byte*) current_piece#55 ← phi( play_move_down::@9/(byte*) current_piece#62 ) + (byte) current_orientation#55 ← phi( play_move_down::@9/(byte) current_orientation#63 ) + (byte) current_xpos#70 ← phi( play_move_down::@9/(byte) current_xpos#81 ) + (byte) current_ypos#54 ← phi( play_move_down::@9/(byte) current_ypos#60 ) (byte) current_movedown_counter#16 ← phi( play_move_down::@9/(byte) current_movedown_counter#11 ) (byte) play_move_down::movedown#5 ← phi( play_move_down::@9/(byte) play_move_down::movedown#8 ) (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#5 to:play_move_down::@2 play_move_down::@4: scope:[play_move_down] from play_move_down::@11 play_move_down::@2 - (byte) current_piece_color#31 ← phi( play_move_down::@11/(byte) current_piece_color#42 play_move_down::@2/(byte) current_piece_color#43 ) - (byte*) current_piece_gfx#41 ← phi( play_move_down::@11/(byte*) current_piece_gfx#56 play_move_down::@2/(byte*) current_piece_gfx#57 ) - (byte*) current_piece#34 ← phi( play_move_down::@11/(byte*) current_piece#46 play_move_down::@2/(byte*) current_piece#47 ) + (byte) current_piece_color#31 ← phi( play_move_down::@11/(byte) current_piece_color#43 play_move_down::@2/(byte) current_piece_color#44 ) + (byte*) current_piece_gfx#41 ← phi( play_move_down::@11/(byte*) current_piece_gfx#57 play_move_down::@2/(byte*) current_piece_gfx#58 ) + (byte*) current_piece#34 ← phi( play_move_down::@11/(byte*) current_piece#47 play_move_down::@2/(byte*) current_piece#48 ) (byte) current_movedown_counter#25 ← phi( play_move_down::@11/(byte) current_movedown_counter#32 play_move_down::@2/(byte) current_movedown_counter#10 ) - (byte) current_piece_orientation#30 ← phi( play_move_down::@11/(byte) current_piece_orientation#45 play_move_down::@2/(byte) current_piece_orientation#46 ) - (byte) current_xpos#33 ← phi( play_move_down::@11/(byte) current_xpos#51 play_move_down::@2/(byte) current_xpos#52 ) - (byte) current_ypos#27 ← phi( play_move_down::@11/(byte) current_ypos#46 play_move_down::@2/(byte) current_ypos#47 ) + (byte) current_orientation#30 ← phi( play_move_down::@11/(byte) current_orientation#45 play_move_down::@2/(byte) current_orientation#46 ) + (byte) current_xpos#33 ← phi( play_move_down::@11/(byte) current_xpos#52 play_move_down::@2/(byte) current_xpos#53 ) + (byte) current_ypos#27 ← phi( play_move_down::@11/(byte) current_ypos#45 play_move_down::@2/(byte) current_ypos#46 ) (byte) play_move_down::movedown#6 ← phi( play_move_down::@11/(byte) play_move_down::movedown#3 play_move_down::@2/(byte) play_move_down::movedown#9 ) (bool~) play_move_down::$9 ← (byte) play_move_down::movedown#6 != (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) play_move_down::$10 ← ! (bool~) play_move_down::$9 if((bool~) play_move_down::$10) goto play_move_down::@5 to:play_move_down::@12 play_move_down::@11: scope:[play_move_down] from play_move_down::@2 - (byte) current_piece_color#42 ← phi( play_move_down::@2/(byte) current_piece_color#43 ) - (byte*) current_piece_gfx#56 ← phi( play_move_down::@2/(byte*) current_piece_gfx#57 ) - (byte*) current_piece#46 ← phi( play_move_down::@2/(byte*) current_piece#47 ) + (byte) current_piece_color#43 ← phi( play_move_down::@2/(byte) current_piece_color#44 ) + (byte*) current_piece_gfx#57 ← phi( play_move_down::@2/(byte*) current_piece_gfx#58 ) + (byte*) current_piece#47 ← phi( play_move_down::@2/(byte*) current_piece#48 ) (byte) current_movedown_counter#32 ← phi( play_move_down::@2/(byte) current_movedown_counter#10 ) - (byte) current_piece_orientation#45 ← phi( play_move_down::@2/(byte) current_piece_orientation#46 ) - (byte) current_xpos#51 ← phi( play_move_down::@2/(byte) current_xpos#52 ) - (byte) current_ypos#46 ← phi( play_move_down::@2/(byte) current_ypos#47 ) + (byte) current_orientation#45 ← phi( play_move_down::@2/(byte) current_orientation#46 ) + (byte) current_xpos#52 ← phi( play_move_down::@2/(byte) current_xpos#53 ) + (byte) current_ypos#45 ← phi( play_move_down::@2/(byte) current_ypos#46 ) (byte) play_move_down::movedown#7 ← phi( play_move_down::@2/(byte) play_move_down::movedown#9 ) (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 to:play_move_down::@4 play_move_down::@5: scope:[play_move_down] from play_move_down::@4 - (byte) current_xpos#35 ← phi( play_move_down::@4/(byte) current_xpos#33 ) (byte) current_piece_color#22 ← phi( play_move_down::@4/(byte) current_piece_color#31 ) + (byte) current_xpos#35 ← phi( play_move_down::@4/(byte) current_xpos#33 ) (byte*) current_piece_gfx#28 ← phi( play_move_down::@4/(byte*) current_piece_gfx#41 ) - (byte) current_piece_orientation#32 ← phi( play_move_down::@4/(byte) current_piece_orientation#30 ) + (byte) current_orientation#32 ← phi( play_move_down::@4/(byte) current_orientation#30 ) (byte*) current_piece#22 ← phi( play_move_down::@4/(byte*) current_piece#34 ) (byte) current_ypos#30 ← phi( play_move_down::@4/(byte) current_ypos#27 ) (byte) current_movedown_counter#19 ← phi( play_move_down::@4/(byte) current_movedown_counter#25 ) (byte) play_move_down::return#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_move_down::@return play_move_down::@12: scope:[play_move_down] from play_move_down::@4 - (byte) current_piece_color#55 ← phi( play_move_down::@4/(byte) current_piece_color#31 ) - (byte*) current_piece_gfx#69 ← phi( play_move_down::@4/(byte*) current_piece_gfx#41 ) + (byte) current_piece_color#56 ← phi( play_move_down::@4/(byte) current_piece_color#31 ) + (byte*) current_piece_gfx#70 ← phi( play_move_down::@4/(byte*) current_piece_gfx#41 ) (byte*) current_piece#25 ← phi( play_move_down::@4/(byte*) current_piece#34 ) - (byte) current_piece_orientation#16 ← phi( play_move_down::@4/(byte) current_piece_orientation#30 ) + (byte) current_orientation#16 ← phi( play_move_down::@4/(byte) current_orientation#30 ) (byte) current_xpos#17 ← phi( play_move_down::@4/(byte) current_xpos#33 ) (byte) current_ypos#13 ← phi( play_move_down::@4/(byte) current_ypos#27 ) (byte/signed word/word/dword/signed dword~) play_move_down::$11 ← (byte) current_ypos#13 + (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) collision::xpos#0 ← (byte) current_xpos#17 (byte) collision::ypos#0 ← (byte/signed word/word/dword/signed dword~) play_move_down::$11 - (byte) collision::orientation#0 ← (byte) current_piece_orientation#16 + (byte) collision::orientation#0 ← (byte) current_orientation#16 call collision (byte) collision::return#0 ← (byte) collision::return#5 to:play_move_down::@18 play_move_down::@18: scope:[play_move_down] from play_move_down::@12 - (byte) current_xpos#72 ← phi( play_move_down::@12/(byte) current_xpos#17 ) - (byte) current_piece_color#44 ← phi( play_move_down::@12/(byte) current_piece_color#55 ) - (byte*) current_piece_gfx#58 ← phi( play_move_down::@12/(byte*) current_piece_gfx#69 ) - (byte) current_piece_orientation#57 ← phi( play_move_down::@12/(byte) current_piece_orientation#16 ) - (byte*) current_piece#48 ← phi( play_move_down::@12/(byte*) current_piece#25 ) + (byte) current_piece_color#45 ← phi( play_move_down::@12/(byte) current_piece_color#56 ) + (byte) current_xpos#73 ← phi( play_move_down::@12/(byte) current_xpos#17 ) + (byte*) current_piece_gfx#59 ← phi( play_move_down::@12/(byte*) current_piece_gfx#70 ) + (byte) current_orientation#58 ← phi( play_move_down::@12/(byte) current_orientation#16 ) + (byte*) current_piece#49 ← phi( play_move_down::@12/(byte*) current_piece#25 ) (byte) current_ypos#28 ← phi( play_move_down::@12/(byte) current_ypos#13 ) (byte) collision::return#10 ← phi( play_move_down::@12/(byte) collision::return#0 ) (byte~) play_move_down::$12 ← (byte) collision::return#10 @@ -831,61 +896,61 @@ play_move_down::@18: scope:[play_move_down] from play_move_down::@12 if((bool~) play_move_down::$13) goto play_move_down::@6 to:play_move_down::@13 play_move_down::@6: scope:[play_move_down] from play_move_down::@18 - (byte) current_xpos#54 ← phi( play_move_down::@18/(byte) current_xpos#72 ) - (byte) current_piece_color#33 ← phi( play_move_down::@18/(byte) current_piece_color#44 ) - (byte*) current_piece_gfx#43 ← phi( play_move_down::@18/(byte*) current_piece_gfx#58 ) - (byte) current_piece_orientation#48 ← phi( play_move_down::@18/(byte) current_piece_orientation#57 ) - (byte*) current_piece#36 ← phi( play_move_down::@18/(byte*) current_piece#48 ) + (byte) current_piece_color#33 ← phi( play_move_down::@18/(byte) current_piece_color#45 ) + (byte) current_xpos#55 ← phi( play_move_down::@18/(byte) current_xpos#73 ) + (byte*) current_piece_gfx#43 ← phi( play_move_down::@18/(byte*) current_piece_gfx#59 ) + (byte) current_orientation#48 ← phi( play_move_down::@18/(byte) current_orientation#58 ) + (byte*) current_piece#36 ← phi( play_move_down::@18/(byte*) current_piece#49 ) (byte) current_ypos#14 ← phi( play_move_down::@18/(byte) current_ypos#28 ) (byte) current_ypos#4 ← ++ (byte) current_ypos#14 to:play_move_down::@7 play_move_down::@13: scope:[play_move_down] from play_move_down::@18 - (byte) current_ypos#48 ← phi( play_move_down::@18/(byte) current_ypos#28 ) - (byte) current_xpos#53 ← phi( play_move_down::@18/(byte) current_xpos#72 ) - (byte) current_piece_color#32 ← phi( play_move_down::@18/(byte) current_piece_color#44 ) - (byte*) current_piece_gfx#42 ← phi( play_move_down::@18/(byte*) current_piece_gfx#58 ) - (byte) current_piece_orientation#47 ← phi( play_move_down::@18/(byte) current_piece_orientation#57 ) - (byte*) current_piece#35 ← phi( play_move_down::@18/(byte*) current_piece#48 ) + (byte) current_piece_color#32 ← phi( play_move_down::@18/(byte) current_piece_color#45 ) + (byte) current_xpos#54 ← phi( play_move_down::@18/(byte) current_xpos#73 ) + (byte*) current_piece_gfx#42 ← phi( play_move_down::@18/(byte*) current_piece_gfx#59 ) + (byte) current_orientation#47 ← phi( play_move_down::@18/(byte) current_orientation#58 ) + (byte*) current_piece#35 ← phi( play_move_down::@18/(byte*) current_piece#49 ) + (byte) current_ypos#36 ← phi( play_move_down::@18/(byte) current_ypos#28 ) call lock_current to:play_move_down::@19 play_move_down::@19: scope:[play_move_down] from play_move_down::@13 - (byte) current_ypos#29 ← phi( play_move_down::@13/(byte) current_ypos#48 ) - (byte) current_xpos#34 ← phi( play_move_down::@13/(byte) current_xpos#53 ) (byte) current_piece_color#21 ← phi( play_move_down::@13/(byte) current_piece_color#32 ) + (byte) current_ypos#29 ← phi( play_move_down::@13/(byte) current_ypos#36 ) + (byte) current_xpos#34 ← phi( play_move_down::@13/(byte) current_xpos#54 ) (byte*) current_piece_gfx#27 ← phi( play_move_down::@13/(byte*) current_piece_gfx#42 ) - (byte) current_piece_orientation#31 ← phi( play_move_down::@13/(byte) current_piece_orientation#47 ) + (byte) current_orientation#31 ← phi( play_move_down::@13/(byte) current_orientation#47 ) (byte*) current_piece#21 ← phi( play_move_down::@13/(byte*) current_piece#35 ) call spawn_current to:play_move_down::@20 play_move_down::@20: scope:[play_move_down] from play_move_down::@19 + (byte) current_piece_color#12 ← phi( play_move_down::@19/(byte) current_piece_color#7 ) (byte) current_ypos#15 ← phi( play_move_down::@19/(byte) current_ypos#8 ) (byte) current_xpos#18 ← phi( play_move_down::@19/(byte) current_xpos#11 ) - (byte) current_piece_color#12 ← phi( play_move_down::@19/(byte) current_piece_color#7 ) (byte*) current_piece_gfx#16 ← phi( play_move_down::@19/(byte*) current_piece_gfx#10 ) - (byte) current_piece_orientation#17 ← phi( play_move_down::@19/(byte) current_piece_orientation#10 ) + (byte) current_orientation#17 ← phi( play_move_down::@19/(byte) current_orientation#10 ) (byte*) current_piece#12 ← phi( play_move_down::@19/(byte*) current_piece#7 ) (byte*) current_piece#4 ← (byte*) current_piece#12 - (byte) current_piece_orientation#5 ← (byte) current_piece_orientation#17 + (byte) current_orientation#5 ← (byte) current_orientation#17 (byte*) current_piece_gfx#5 ← (byte*) current_piece_gfx#16 - (byte) current_piece_color#4 ← (byte) current_piece_color#12 (byte) current_xpos#5 ← (byte) current_xpos#18 (byte) current_ypos#5 ← (byte) current_ypos#15 + (byte) current_piece_color#4 ← (byte) current_piece_color#12 to:play_move_down::@7 play_move_down::@7: scope:[play_move_down] from play_move_down::@20 play_move_down::@6 - (byte) current_xpos#36 ← phi( play_move_down::@20/(byte) current_xpos#5 play_move_down::@6/(byte) current_xpos#54 ) (byte) current_piece_color#23 ← phi( play_move_down::@20/(byte) current_piece_color#4 play_move_down::@6/(byte) current_piece_color#33 ) + (byte) current_xpos#36 ← phi( play_move_down::@20/(byte) current_xpos#5 play_move_down::@6/(byte) current_xpos#55 ) (byte*) current_piece_gfx#29 ← phi( play_move_down::@20/(byte*) current_piece_gfx#5 play_move_down::@6/(byte*) current_piece_gfx#43 ) - (byte) current_piece_orientation#33 ← phi( play_move_down::@20/(byte) current_piece_orientation#5 play_move_down::@6/(byte) current_piece_orientation#48 ) + (byte) current_orientation#33 ← phi( play_move_down::@20/(byte) current_orientation#5 play_move_down::@6/(byte) current_orientation#48 ) (byte*) current_piece#23 ← phi( play_move_down::@20/(byte*) current_piece#4 play_move_down::@6/(byte*) current_piece#36 ) (byte) current_ypos#31 ← phi( play_move_down::@20/(byte) current_ypos#5 play_move_down::@6/(byte) current_ypos#4 ) (byte) current_movedown_counter#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) play_move_down::return#2 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@5 play_move_down::@7 - (byte) current_xpos#19 ← phi( play_move_down::@5/(byte) current_xpos#35 play_move_down::@7/(byte) current_xpos#36 ) (byte) current_piece_color#13 ← phi( play_move_down::@5/(byte) current_piece_color#22 play_move_down::@7/(byte) current_piece_color#23 ) + (byte) current_xpos#19 ← phi( play_move_down::@5/(byte) current_xpos#35 play_move_down::@7/(byte) current_xpos#36 ) (byte*) current_piece_gfx#17 ← phi( play_move_down::@5/(byte*) current_piece_gfx#28 play_move_down::@7/(byte*) current_piece_gfx#29 ) - (byte) current_piece_orientation#18 ← phi( play_move_down::@5/(byte) current_piece_orientation#32 play_move_down::@7/(byte) current_piece_orientation#33 ) + (byte) current_orientation#18 ← phi( play_move_down::@5/(byte) current_orientation#32 play_move_down::@7/(byte) current_orientation#33 ) (byte*) current_piece#13 ← phi( play_move_down::@5/(byte*) current_piece#22 play_move_down::@7/(byte*) current_piece#23 ) (byte) current_ypos#16 ← phi( play_move_down::@5/(byte) current_ypos#30 play_move_down::@7/(byte) current_ypos#31 ) (byte) current_movedown_counter#12 ← phi( play_move_down::@5/(byte) current_movedown_counter#19 play_move_down::@7/(byte) current_movedown_counter#4 ) @@ -894,30 +959,30 @@ play_move_down::@return: scope:[play_move_down] from play_move_down::@5 play_mo (byte) current_movedown_counter#5 ← (byte) current_movedown_counter#12 (byte) current_ypos#6 ← (byte) current_ypos#16 (byte*) current_piece#5 ← (byte*) current_piece#13 - (byte) current_piece_orientation#6 ← (byte) current_piece_orientation#18 + (byte) current_orientation#6 ← (byte) current_orientation#18 (byte*) current_piece_gfx#6 ← (byte*) current_piece_gfx#17 - (byte) current_piece_color#5 ← (byte) current_piece_color#13 (byte) current_xpos#6 ← (byte) current_xpos#19 + (byte) current_piece_color#5 ← (byte) current_piece_color#13 return to:@return -play_move_leftright: scope:[play_move_leftright] from main::@27 - (byte*) current_piece#37 ← phi( main::@27/(byte*) current_piece#2 ) - (byte) current_piece_orientation#34 ← phi( main::@27/(byte) current_piece_orientation#2 ) - (byte) current_ypos#32 ← phi( main::@27/(byte) current_ypos#2 ) - (byte) current_xpos#37 ← phi( main::@27/(byte) current_xpos#2 ) - (byte) play_move_leftright::key_event#1 ← phi( main::@27/(byte) play_move_leftright::key_event#0 ) +play_move_leftright: scope:[play_move_leftright] from main::@28 + (byte*) current_piece#37 ← phi( main::@28/(byte*) current_piece#2 ) + (byte) current_orientation#34 ← phi( main::@28/(byte) current_orientation#2 ) + (byte) current_ypos#32 ← phi( main::@28/(byte) current_ypos#2 ) + (byte) current_xpos#37 ← phi( main::@28/(byte) current_xpos#2 ) + (byte) play_move_leftright::key_event#1 ← phi( main::@28/(byte) play_move_leftright::key_event#0 ) (bool~) play_move_leftright::$0 ← (byte) play_move_leftright::key_event#1 == (byte) KEY_COMMA#0 if((bool~) play_move_leftright::$0) goto play_move_leftright::@1 to:play_move_leftright::@6 play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright (byte*) current_piece#26 ← phi( play_move_leftright/(byte*) current_piece#37 ) - (byte) current_piece_orientation#19 ← phi( play_move_leftright/(byte) current_piece_orientation#34 ) + (byte) current_orientation#19 ← phi( play_move_leftright/(byte) current_orientation#34 ) (byte) current_ypos#17 ← phi( play_move_leftright/(byte) current_ypos#32 ) (byte) current_xpos#20 ← phi( play_move_leftright/(byte) current_xpos#37 ) (byte/signed word/word/dword/signed dword~) play_move_leftright::$7 ← (byte) current_xpos#20 - (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) collision::xpos#1 ← (byte/signed word/word/dword/signed dword~) play_move_leftright::$7 (byte) collision::ypos#1 ← (byte) current_ypos#17 - (byte) collision::orientation#1 ← (byte) current_piece_orientation#19 + (byte) collision::orientation#1 ← (byte) current_orientation#19 call collision (byte) collision::return#1 ← (byte) collision::return#5 to:play_move_leftright::@14 @@ -931,7 +996,7 @@ play_move_leftright::@14: scope:[play_move_leftright] from play_move_leftright: to:play_move_leftright::@11 play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright (byte*) current_piece#38 ← phi( play_move_leftright/(byte*) current_piece#37 ) - (byte) current_piece_orientation#35 ← phi( play_move_leftright/(byte) current_piece_orientation#34 ) + (byte) current_orientation#35 ← phi( play_move_leftright/(byte) current_orientation#34 ) (byte) current_ypos#33 ← phi( play_move_leftright/(byte) current_ypos#32 ) (byte) current_xpos#38 ← phi( play_move_leftright/(byte) current_xpos#37 ) (byte) play_move_leftright::key_event#2 ← phi( play_move_leftright/(byte) play_move_leftright::key_event#1 ) @@ -940,17 +1005,17 @@ play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright if((bool~) play_move_leftright::$2) goto play_move_leftright::@2 to:play_move_leftright::@7 play_move_leftright::@2: scope:[play_move_leftright] from play_move_leftright::@6 - (byte) current_xpos#55 ← phi( play_move_leftright::@6/(byte) current_xpos#38 ) + (byte) current_xpos#56 ← phi( play_move_leftright::@6/(byte) current_xpos#38 ) to:play_move_leftright::@4 play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@6 (byte*) current_piece#27 ← phi( play_move_leftright::@6/(byte*) current_piece#38 ) - (byte) current_piece_orientation#20 ← phi( play_move_leftright::@6/(byte) current_piece_orientation#35 ) + (byte) current_orientation#20 ← phi( play_move_leftright::@6/(byte) current_orientation#35 ) (byte) current_ypos#18 ← phi( play_move_leftright::@6/(byte) current_ypos#33 ) (byte) current_xpos#21 ← phi( play_move_leftright::@6/(byte) current_xpos#38 ) (byte/signed word/word/dword/signed dword~) play_move_leftright::$3 ← (byte) current_xpos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) collision::xpos#2 ← (byte/signed word/word/dword/signed dword~) play_move_leftright::$3 (byte) collision::ypos#2 ← (byte) current_ypos#18 - (byte) collision::orientation#2 ← (byte) current_piece_orientation#20 + (byte) collision::orientation#2 ← (byte) current_orientation#20 call collision (byte) collision::return#2 ← (byte) collision::return#5 to:play_move_leftright::@15 @@ -963,7 +1028,7 @@ play_move_leftright::@15: scope:[play_move_leftright] from play_move_leftright: if((bool~) play_move_leftright::$6) goto play_move_leftright::@3 to:play_move_leftright::@8 play_move_leftright::@3: scope:[play_move_leftright] from play_move_leftright::@15 - (byte) current_xpos#56 ← phi( play_move_leftright::@15/(byte) current_xpos#39 ) + (byte) current_xpos#57 ← phi( play_move_leftright::@15/(byte) current_xpos#39 ) to:play_move_leftright::@4 play_move_leftright::@8: scope:[play_move_leftright] from play_move_leftright::@15 (byte) current_xpos#22 ← phi( play_move_leftright::@15/(byte) current_xpos#39 ) @@ -978,75 +1043,75 @@ play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftri return to:@return play_move_leftright::@4: scope:[play_move_leftright] from play_move_leftright::@2 play_move_leftright::@3 play_move_leftright::@5 - (byte) current_xpos#40 ← phi( play_move_leftright::@2/(byte) current_xpos#55 play_move_leftright::@3/(byte) current_xpos#56 play_move_leftright::@5/(byte) current_xpos#57 ) + (byte) current_xpos#40 ← phi( play_move_leftright::@2/(byte) current_xpos#56 play_move_leftright::@3/(byte) current_xpos#57 play_move_leftright::@5/(byte) current_xpos#58 ) (byte) play_move_leftright::return#3 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_move_leftright::@return play_move_leftright::@5: scope:[play_move_leftright] from play_move_leftright::@14 - (byte) current_xpos#57 ← phi( play_move_leftright::@14/(byte) current_xpos#41 ) + (byte) current_xpos#58 ← phi( play_move_leftright::@14/(byte) current_xpos#41 ) to:play_move_leftright::@4 play_move_leftright::@11: scope:[play_move_leftright] from play_move_leftright::@14 (byte) current_xpos#24 ← phi( play_move_leftright::@14/(byte) current_xpos#41 ) (byte) current_xpos#9 ← -- (byte) current_xpos#24 (byte) play_move_leftright::return#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_move_leftright::@return -play_move_rotate: scope:[play_move_rotate] from main::@28 - (byte*) current_piece_gfx#59 ← phi( main::@28/(byte*) current_piece_gfx#25 ) - (byte*) current_piece#49 ← phi( main::@28/(byte*) current_piece#52 ) - (byte) current_ypos#49 ← phi( main::@28/(byte) current_ypos#59 ) - (byte) current_xpos#58 ← phi( main::@28/(byte) current_xpos#3 ) - (byte) current_piece_orientation#36 ← phi( main::@28/(byte) current_piece_orientation#28 ) - (byte) play_move_rotate::key_event#1 ← phi( main::@28/(byte) play_move_rotate::key_event#0 ) +play_move_rotate: scope:[play_move_rotate] from main::@29 + (byte*) current_piece_gfx#60 ← phi( main::@29/(byte*) current_piece_gfx#25 ) + (byte*) current_piece#50 ← phi( main::@29/(byte*) current_piece#53 ) + (byte) current_ypos#47 ← phi( main::@29/(byte) current_ypos#57 ) + (byte) current_xpos#59 ← phi( main::@29/(byte) current_xpos#3 ) + (byte) current_orientation#36 ← phi( main::@29/(byte) current_orientation#28 ) + (byte) play_move_rotate::key_event#1 ← phi( main::@29/(byte) play_move_rotate::key_event#0 ) (byte) play_move_rotate::orientation#0 ← (byte/word/signed word/dword/signed dword) 128 (bool~) play_move_rotate::$0 ← (byte) play_move_rotate::key_event#1 == (byte) KEY_Z#0 if((bool~) play_move_rotate::$0) goto play_move_rotate::@1 to:play_move_rotate::@6 play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate - (byte*) current_piece_gfx#70 ← phi( play_move_rotate/(byte*) current_piece_gfx#59 ) - (byte*) current_piece#39 ← phi( play_move_rotate/(byte*) current_piece#49 ) - (byte) current_ypos#34 ← phi( play_move_rotate/(byte) current_ypos#49 ) - (byte) current_xpos#42 ← phi( play_move_rotate/(byte) current_xpos#58 ) - (byte) current_piece_orientation#21 ← phi( play_move_rotate/(byte) current_piece_orientation#36 ) - (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_piece_orientation#21 - (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte*) current_piece_gfx#71 ← phi( play_move_rotate/(byte*) current_piece_gfx#60 ) + (byte*) current_piece#39 ← phi( play_move_rotate/(byte*) current_piece#50 ) + (byte) current_ypos#34 ← phi( play_move_rotate/(byte) current_ypos#47 ) + (byte) current_xpos#42 ← phi( play_move_rotate/(byte) current_xpos#59 ) + (byte) current_orientation#21 ← phi( play_move_rotate/(byte) current_orientation#36 ) + (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#21 - (byte/signed byte/word/signed word/dword/signed dword) 16 (byte/word/dword~) play_move_rotate::$5 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 (byte) play_move_rotate::orientation#1 ← (byte/word/dword~) play_move_rotate::$5 to:play_move_rotate::@4 play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate - (byte*) current_piece#50 ← phi( play_move_rotate/(byte*) current_piece#49 ) - (byte*) current_piece_gfx#44 ← phi( play_move_rotate/(byte*) current_piece_gfx#59 ) - (byte) current_ypos#50 ← phi( play_move_rotate/(byte) current_ypos#49 ) - (byte) current_xpos#59 ← phi( play_move_rotate/(byte) current_xpos#58 ) - (byte) current_piece_orientation#37 ← phi( play_move_rotate/(byte) current_piece_orientation#36 ) + (byte*) current_piece#51 ← phi( play_move_rotate/(byte*) current_piece#50 ) + (byte*) current_piece_gfx#44 ← phi( play_move_rotate/(byte*) current_piece_gfx#60 ) + (byte) current_ypos#48 ← phi( play_move_rotate/(byte) current_ypos#47 ) + (byte) current_xpos#60 ← phi( play_move_rotate/(byte) current_xpos#59 ) + (byte) current_orientation#37 ← phi( play_move_rotate/(byte) current_orientation#36 ) (byte) play_move_rotate::key_event#2 ← phi( play_move_rotate/(byte) play_move_rotate::key_event#1 ) (bool~) play_move_rotate::$1 ← (byte) play_move_rotate::key_event#2 == (byte) KEY_X#0 if((bool~) play_move_rotate::$1) goto play_move_rotate::@2 to:play_move_rotate::@7 play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@6 - (byte*) current_piece_gfx#71 ← phi( play_move_rotate::@6/(byte*) current_piece_gfx#44 ) - (byte*) current_piece#40 ← phi( play_move_rotate::@6/(byte*) current_piece#50 ) - (byte) current_ypos#35 ← phi( play_move_rotate::@6/(byte) current_ypos#50 ) - (byte) current_xpos#43 ← phi( play_move_rotate::@6/(byte) current_xpos#59 ) - (byte) current_piece_orientation#22 ← phi( play_move_rotate::@6/(byte) current_piece_orientation#37 ) - (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_piece_orientation#22 + (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte*) current_piece_gfx#72 ← phi( play_move_rotate::@6/(byte*) current_piece_gfx#44 ) + (byte*) current_piece#40 ← phi( play_move_rotate::@6/(byte*) current_piece#51 ) + (byte) current_ypos#35 ← phi( play_move_rotate::@6/(byte) current_ypos#48 ) + (byte) current_xpos#43 ← phi( play_move_rotate::@6/(byte) current_xpos#60 ) + (byte) current_orientation#22 ← phi( play_move_rotate::@6/(byte) current_orientation#37 ) + (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#22 + (byte/signed byte/word/signed word/dword/signed dword) 16 (byte/word/dword~) play_move_rotate::$3 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 (byte) play_move_rotate::orientation#2 ← (byte/word/dword~) play_move_rotate::$3 to:play_move_rotate::@4 play_move_rotate::@7: scope:[play_move_rotate] from play_move_rotate::@6 (byte*) current_piece_gfx#31 ← phi( play_move_rotate::@6/(byte*) current_piece_gfx#44 ) - (byte) current_piece_orientation#39 ← phi( play_move_rotate::@6/(byte) current_piece_orientation#37 ) + (byte) current_orientation#39 ← phi( play_move_rotate::@6/(byte) current_orientation#37 ) (byte) play_move_rotate::return#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_move_rotate::@return play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@11 play_move_rotate::@5 play_move_rotate::@7 (byte*) current_piece_gfx#18 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#8 play_move_rotate::@5/(byte*) current_piece_gfx#30 play_move_rotate::@7/(byte*) current_piece_gfx#31 ) - (byte) current_piece_orientation#23 ← phi( play_move_rotate::@11/(byte) current_piece_orientation#8 play_move_rotate::@5/(byte) current_piece_orientation#38 play_move_rotate::@7/(byte) current_piece_orientation#39 ) + (byte) current_orientation#23 ← phi( play_move_rotate::@11/(byte) current_orientation#8 play_move_rotate::@5/(byte) current_orientation#38 play_move_rotate::@7/(byte) current_orientation#39 ) (byte) play_move_rotate::return#6 ← phi( play_move_rotate::@11/(byte) play_move_rotate::return#4 play_move_rotate::@5/(byte) play_move_rotate::return#3 play_move_rotate::@7/(byte) play_move_rotate::return#1 ) (byte) play_move_rotate::return#2 ← (byte) play_move_rotate::return#6 - (byte) current_piece_orientation#7 ← (byte) current_piece_orientation#23 + (byte) current_orientation#7 ← (byte) current_orientation#23 (byte*) current_piece_gfx#7 ← (byte*) current_piece_gfx#18 return to:@return play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2 - (byte*) current_piece_gfx#60 ← phi( play_move_rotate::@1/(byte*) current_piece_gfx#70 play_move_rotate::@2/(byte*) current_piece_gfx#71 ) - (byte) current_piece_orientation#58 ← phi( play_move_rotate::@1/(byte) current_piece_orientation#21 play_move_rotate::@2/(byte) current_piece_orientation#22 ) + (byte*) current_piece_gfx#61 ← phi( play_move_rotate::@1/(byte*) current_piece_gfx#71 play_move_rotate::@2/(byte*) current_piece_gfx#72 ) + (byte) current_orientation#59 ← phi( play_move_rotate::@1/(byte) current_orientation#21 play_move_rotate::@2/(byte) current_orientation#22 ) (byte*) current_piece#28 ← phi( play_move_rotate::@1/(byte*) current_piece#39 play_move_rotate::@2/(byte*) current_piece#40 ) (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) (byte) current_ypos#19 ← phi( play_move_rotate::@1/(byte) current_ypos#34 play_move_rotate::@2/(byte) current_ypos#35 ) @@ -1058,48 +1123,46 @@ play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@1 play_m (byte) collision::return#3 ← (byte) collision::return#5 to:play_move_rotate::@14 play_move_rotate::@14: scope:[play_move_rotate] from play_move_rotate::@4 - (byte*) current_piece_gfx#45 ← phi( play_move_rotate::@4/(byte*) current_piece_gfx#60 ) - (byte) current_piece_orientation#49 ← phi( play_move_rotate::@4/(byte) current_piece_orientation#58 ) + (byte*) current_piece_gfx#45 ← phi( play_move_rotate::@4/(byte*) current_piece_gfx#61 ) + (byte) current_orientation#49 ← phi( play_move_rotate::@4/(byte) current_orientation#59 ) (byte*) current_piece#24 ← phi( play_move_rotate::@4/(byte*) current_piece#28 ) (byte) play_move_rotate::orientation#5 ← phi( play_move_rotate::@4/(byte) play_move_rotate::orientation#3 ) (byte) collision::return#13 ← phi( play_move_rotate::@4/(byte) collision::return#3 ) (byte~) play_move_rotate::$6 ← (byte) collision::return#13 - (byte~) play_move_rotate::$7 ← (byte) COLLISION_LEFT#0 | (byte) COLLISION_RIGHT#0 - (byte~) play_move_rotate::$8 ← (byte~) play_move_rotate::$6 & (byte~) play_move_rotate::$7 - (bool~) play_move_rotate::$9 ← (byte~) play_move_rotate::$8 == (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) play_move_rotate::$10 ← ! (bool~) play_move_rotate::$9 - if((bool~) play_move_rotate::$10) goto play_move_rotate::@5 + (bool~) play_move_rotate::$7 ← (byte~) play_move_rotate::$6 == (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) play_move_rotate::$8 ← ! (bool~) play_move_rotate::$7 + if((bool~) play_move_rotate::$8) goto play_move_rotate::@5 to:play_move_rotate::@11 play_move_rotate::@5: scope:[play_move_rotate] from play_move_rotate::@14 (byte*) current_piece_gfx#30 ← phi( play_move_rotate::@14/(byte*) current_piece_gfx#45 ) - (byte) current_piece_orientation#38 ← phi( play_move_rotate::@14/(byte) current_piece_orientation#49 ) + (byte) current_orientation#38 ← phi( play_move_rotate::@14/(byte) current_orientation#49 ) (byte) play_move_rotate::return#3 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:play_move_rotate::@return play_move_rotate::@11: scope:[play_move_rotate] from play_move_rotate::@14 (byte*) current_piece#14 ← phi( play_move_rotate::@14/(byte*) current_piece#24 ) (byte) play_move_rotate::orientation#4 ← phi( play_move_rotate::@14/(byte) play_move_rotate::orientation#5 ) - (byte) current_piece_orientation#8 ← (byte) play_move_rotate::orientation#4 - (byte*~) play_move_rotate::$11 ← (byte*) current_piece#14 + (byte) current_piece_orientation#8 - (byte*) current_piece_gfx#8 ← (byte*~) play_move_rotate::$11 + (byte) current_orientation#8 ← (byte) play_move_rotate::orientation#4 + (byte*~) play_move_rotate::$9 ← (byte*) current_piece#14 + (byte) current_orientation#8 + (byte*) current_piece_gfx#8 ← (byte*~) play_move_rotate::$9 (byte) play_move_rotate::return#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_move_rotate::@return -@15: scope:[] from @11 - (byte*) SCREEN#4 ← phi( @11/(byte*) SCREEN#0 ) - (byte) current_movedown_counter#26 ← phi( @11/(byte) current_movedown_counter#0 ) - (byte) keyboard_modifiers#32 ← phi( @11/(byte) keyboard_modifiers#38 ) - (byte) keyboard_events_size#35 ← phi( @11/(byte) keyboard_events_size#44 ) - (byte) current_ypos#52 ← phi( @11/(byte) current_ypos#0 ) - (byte) current_xpos#64 ← phi( @11/(byte) current_xpos#0 ) - (byte) current_piece_color#37 ← phi( @11/(byte) current_piece_color#0 ) - (byte*) current_piece_gfx#52 ← phi( @11/(byte*) current_piece_gfx#0 ) - (byte) current_piece_orientation#50 ← phi( @11/(byte) current_piece_orientation#0 ) - (byte*) current_piece#41 ← phi( @11/(byte*) current_piece#0 ) +@17: scope:[] from @13 + (byte*) SCREEN#5 ← phi( @13/(byte*) SCREEN#0 ) + (byte) current_movedown_counter#26 ← phi( @13/(byte) current_movedown_counter#0 ) + (byte) keyboard_modifiers#32 ← phi( @13/(byte) keyboard_modifiers#38 ) + (byte) keyboard_events_size#35 ← phi( @13/(byte) keyboard_events_size#44 ) + (byte) current_piece_color#37 ← phi( @13/(byte) current_piece_color#0 ) + (byte) current_ypos#49 ← phi( @13/(byte) current_ypos#0 ) + (byte) current_xpos#64 ← phi( @13/(byte) current_xpos#0 ) + (byte*) current_piece_gfx#52 ← phi( @13/(byte*) current_piece_gfx#0 ) + (byte) current_orientation#50 ← phi( @13/(byte) current_orientation#0 ) + (byte*) current_piece#41 ← phi( @13/(byte*) current_piece#0 ) (byte) COLLISION_NONE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) COLLISION_PLAYFIELD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) COLLISION_BOTTOM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) COLLISION_LEFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) COLLISION_RIGHT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 - to:@21 + to:@23 collision: scope:[collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 (byte) collision::xpos#5 ← phi( play_move_down::@12/(byte) collision::xpos#0 play_move_leftright::@1/(byte) collision::xpos#1 play_move_leftright::@7/(byte) collision::xpos#2 play_move_rotate::@4/(byte) collision::xpos#3 ) (byte) collision::ypos#4 ← phi( play_move_down::@12/(byte) collision::ypos#0 play_move_leftright::@1/(byte) collision::ypos#1 play_move_leftright::@7/(byte) collision::ypos#2 play_move_rotate::@4/(byte) collision::ypos#3 ) @@ -1246,107 +1309,131 @@ collision::@18: scope:[collision] from collision::@17 (byte) collision::return#9 ← (byte) COLLISION_NONE#0 to:collision::@return lock_current: scope:[lock_current] from play_move_down::@13 - (byte) current_piece_color#45 ← phi( play_move_down::@13/(byte) current_piece_color#32 ) - (byte) current_xpos#73 ← phi( play_move_down::@13/(byte) current_xpos#53 ) + (byte) current_piece_color#46 ← phi( play_move_down::@13/(byte) current_piece_color#32 ) (byte*) current_piece_gfx#46 ← phi( play_move_down::@13/(byte*) current_piece_gfx#42 ) - (byte) current_ypos#36 ← phi( play_move_down::@13/(byte) current_ypos#48 ) + (byte) current_xpos#44 ← phi( play_move_down::@13/(byte) current_xpos#54 ) + (byte) current_ypos#20 ← phi( play_move_down::@13/(byte) current_ypos#36 ) (byte) lock_current::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) lock_current::$0 ← (byte) current_ypos#20 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) lock_current::ypos2#0 ← (byte~) lock_current::$0 (byte) lock_current::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:lock_current::@1 lock_current::@1: scope:[lock_current] from lock_current lock_current::@5 - (byte) current_piece_color#34 ← phi( lock_current/(byte) current_piece_color#45 lock_current::@5/(byte) current_piece_color#46 ) - (byte) current_xpos#60 ← phi( lock_current/(byte) current_xpos#73 lock_current::@5/(byte) current_xpos#74 ) + (byte) lock_current::l#6 ← phi( lock_current/(byte) lock_current::l#0 lock_current::@5/(byte) lock_current::l#1 ) + (byte) current_piece_color#34 ← phi( lock_current/(byte) current_piece_color#46 lock_current::@5/(byte) current_piece_color#47 ) (byte) lock_current::i#3 ← phi( lock_current/(byte) lock_current::i#0 lock_current::@5/(byte) lock_current::i#5 ) (byte*) current_piece_gfx#32 ← phi( lock_current/(byte*) current_piece_gfx#46 lock_current::@5/(byte*) current_piece_gfx#47 ) - (byte) lock_current::l#2 ← phi( lock_current/(byte) lock_current::l#0 lock_current::@5/(byte) lock_current::l#1 ) - (byte) current_ypos#20 ← phi( lock_current/(byte) current_ypos#36 lock_current::@5/(byte) current_ypos#37 ) - (byte~) lock_current::$0 ← (byte) current_ypos#20 + (byte) lock_current::l#2 - (byte) lock_current::line#0 ← (byte~) lock_current::$0 - (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte*) lock_current::playfield_line#0 ← *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) + (byte) current_xpos#26 ← phi( lock_current/(byte) current_xpos#44 lock_current::@5/(byte) current_xpos#45 ) + (byte) lock_current::ypos2#2 ← phi( lock_current/(byte) lock_current::ypos2#0 lock_current::@5/(byte) lock_current::ypos2#1 ) + (byte*) lock_current::playfield_line#0 ← *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) + (byte) lock_current::col#0 ← (byte) current_xpos#26 (byte) lock_current::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:lock_current::@2 lock_current::@2: scope:[lock_current] from lock_current::@1 lock_current::@3 - (byte) current_ypos#60 ← phi( lock_current::@1/(byte) current_ypos#20 lock_current::@3/(byte) current_ypos#51 ) - (byte) lock_current::l#5 ← phi( lock_current::@1/(byte) lock_current::l#2 lock_current::@3/(byte) lock_current::l#4 ) + (byte) current_xpos#74 ← phi( lock_current::@1/(byte) current_xpos#26 lock_current::@3/(byte) current_xpos#61 ) + (byte) lock_current::l#4 ← phi( lock_current::@1/(byte) lock_current::l#6 lock_current::@3/(byte) lock_current::l#3 ) + (byte) lock_current::ypos2#5 ← phi( lock_current::@1/(byte) lock_current::ypos2#2 lock_current::@3/(byte) lock_current::ypos2#4 ) (byte*) lock_current::playfield_line#2 ← phi( lock_current::@1/(byte*) lock_current::playfield_line#0 lock_current::@3/(byte*) lock_current::playfield_line#3 ) (byte) current_piece_color#24 ← phi( lock_current::@1/(byte) current_piece_color#34 lock_current::@3/(byte) current_piece_color#35 ) - (byte) current_xpos#44 ← phi( lock_current::@1/(byte) current_xpos#60 lock_current::@3/(byte) current_xpos#61 ) - (byte) lock_current::c#4 ← phi( lock_current::@1/(byte) lock_current::c#0 lock_current::@3/(byte) lock_current::c#1 ) + (byte) lock_current::c#3 ← phi( lock_current::@1/(byte) lock_current::c#0 lock_current::@3/(byte) lock_current::c#1 ) + (byte) lock_current::col#4 ← phi( lock_current::@1/(byte) lock_current::col#0 lock_current::@3/(byte) lock_current::col#1 ) (byte) lock_current::i#2 ← phi( lock_current::@1/(byte) lock_current::i#3 lock_current::@3/(byte) lock_current::i#4 ) (byte*) current_piece_gfx#19 ← phi( lock_current::@1/(byte*) current_piece_gfx#32 lock_current::@3/(byte*) current_piece_gfx#33 ) - (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#19 + (byte) lock_current::i#2) + (bool~) lock_current::$1 ← *((byte*) current_piece_gfx#19 + (byte) lock_current::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) lock_current::$2 ← ! (bool~) lock_current::$1 (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 - (bool~) lock_current::$2 ← (byte) lock_current::cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) lock_current::$3 ← ! (bool~) lock_current::$2 - if((bool~) lock_current::$3) goto lock_current::@3 + if((bool~) lock_current::$2) goto lock_current::@3 to:lock_current::@4 lock_current::@3: scope:[lock_current] from lock_current::@2 lock_current::@4 - (byte) current_ypos#51 ← phi( lock_current::@2/(byte) current_ypos#60 lock_current::@4/(byte) current_ypos#61 ) + (byte) current_xpos#61 ← phi( lock_current::@2/(byte) current_xpos#74 lock_current::@4/(byte) current_xpos#75 ) (byte*) lock_current::playfield_line#3 ← phi( lock_current::@2/(byte*) lock_current::playfield_line#2 lock_current::@4/(byte*) lock_current::playfield_line#1 ) (byte) current_piece_color#35 ← phi( lock_current::@2/(byte) current_piece_color#24 lock_current::@4/(byte) current_piece_color#14 ) - (byte) current_xpos#61 ← phi( lock_current::@2/(byte) current_xpos#44 lock_current::@4/(byte) current_xpos#26 ) - (byte) lock_current::l#4 ← phi( lock_current::@2/(byte) lock_current::l#5 lock_current::@4/(byte) lock_current::l#6 ) + (byte) lock_current::l#3 ← phi( lock_current::@2/(byte) lock_current::l#4 lock_current::@4/(byte) lock_current::l#5 ) + (byte) lock_current::ypos2#4 ← phi( lock_current::@2/(byte) lock_current::ypos2#5 lock_current::@4/(byte) lock_current::ypos2#6 ) (byte) lock_current::i#4 ← phi( lock_current::@2/(byte) lock_current::i#1 lock_current::@4/(byte) lock_current::i#6 ) (byte*) current_piece_gfx#33 ← phi( lock_current::@2/(byte*) current_piece_gfx#19 lock_current::@4/(byte*) current_piece_gfx#48 ) - (byte) lock_current::c#2 ← phi( lock_current::@2/(byte) lock_current::c#4 lock_current::@4/(byte) lock_current::c#3 ) + (byte) lock_current::c#2 ← phi( lock_current::@2/(byte) lock_current::c#3 lock_current::@4/(byte) lock_current::c#4 ) + (byte) lock_current::col#2 ← phi( lock_current::@2/(byte) lock_current::col#4 lock_current::@4/(byte) lock_current::col#3 ) + (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 (byte) lock_current::c#1 ← (byte) lock_current::c#2 + rangenext(0,3) - (bool~) lock_current::$5 ← (byte) lock_current::c#1 != rangelast(0,3) - if((bool~) lock_current::$5) goto lock_current::@2 + (bool~) lock_current::$3 ← (byte) lock_current::c#1 != rangelast(0,3) + if((bool~) lock_current::$3) goto lock_current::@2 to:lock_current::@5 lock_current::@4: scope:[lock_current] from lock_current::@2 - (byte) current_ypos#61 ← phi( lock_current::@2/(byte) current_ypos#60 ) - (byte) lock_current::l#6 ← phi( lock_current::@2/(byte) lock_current::l#5 ) + (byte) current_xpos#75 ← phi( lock_current::@2/(byte) current_xpos#74 ) + (byte) lock_current::l#5 ← phi( lock_current::@2/(byte) lock_current::l#4 ) + (byte) lock_current::ypos2#6 ← phi( lock_current::@2/(byte) lock_current::ypos2#5 ) (byte) lock_current::i#6 ← phi( lock_current::@2/(byte) lock_current::i#1 ) (byte*) current_piece_gfx#48 ← phi( lock_current::@2/(byte*) current_piece_gfx#19 ) + (byte) lock_current::c#4 ← phi( lock_current::@2/(byte) lock_current::c#3 ) + (byte) lock_current::col#3 ← phi( lock_current::@2/(byte) lock_current::col#4 ) (byte*) lock_current::playfield_line#1 ← phi( lock_current::@2/(byte*) lock_current::playfield_line#2 ) (byte) current_piece_color#14 ← phi( lock_current::@2/(byte) current_piece_color#24 ) - (byte) lock_current::c#3 ← phi( lock_current::@2/(byte) lock_current::c#4 ) - (byte) current_xpos#26 ← phi( lock_current::@2/(byte) current_xpos#44 ) - (byte~) lock_current::$4 ← (byte) current_xpos#26 + (byte) lock_current::c#3 - (byte) lock_current::col#0 ← (byte~) lock_current::$4 - *((byte*) lock_current::playfield_line#1 + (byte) lock_current::col#0) ← (byte) current_piece_color#14 + *((byte*) lock_current::playfield_line#1 + (byte) lock_current::col#3) ← (byte) current_piece_color#14 to:lock_current::@3 lock_current::@5: scope:[lock_current] from lock_current::@3 - (byte) current_piece_color#46 ← phi( lock_current::@3/(byte) current_piece_color#35 ) - (byte) current_xpos#74 ← phi( lock_current::@3/(byte) current_xpos#61 ) + (byte) current_piece_color#47 ← phi( lock_current::@3/(byte) current_piece_color#35 ) (byte) lock_current::i#5 ← phi( lock_current::@3/(byte) lock_current::i#4 ) (byte*) current_piece_gfx#47 ← phi( lock_current::@3/(byte*) current_piece_gfx#33 ) - (byte) current_ypos#37 ← phi( lock_current::@3/(byte) current_ypos#51 ) - (byte) lock_current::l#3 ← phi( lock_current::@3/(byte) lock_current::l#4 ) - (byte) lock_current::l#1 ← (byte) lock_current::l#3 + rangenext(0,3) - (bool~) lock_current::$6 ← (byte) lock_current::l#1 != rangelast(0,3) - if((bool~) lock_current::$6) goto lock_current::@1 + (byte) current_xpos#45 ← phi( lock_current::@3/(byte) current_xpos#61 ) + (byte) lock_current::l#2 ← phi( lock_current::@3/(byte) lock_current::l#3 ) + (byte) lock_current::ypos2#3 ← phi( lock_current::@3/(byte) lock_current::ypos2#4 ) + (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) lock_current::l#1 ← (byte) lock_current::l#2 + rangenext(0,3) + (bool~) lock_current::$4 ← (byte) lock_current::l#1 != rangelast(0,3) + if((bool~) lock_current::$4) goto lock_current::@1 to:lock_current::@return lock_current::@return: scope:[lock_current] from lock_current::@5 return to:@return -spawn_current: scope:[spawn_current] from main::@21 play_move_down::@19 - (byte*) current_piece#6 ← (byte[$4]) piece_t#0 - (byte) current_piece_orientation#9 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte*~) spawn_current::$0 ← (byte*) current_piece#6 + (byte) current_piece_orientation#9 - (byte*) current_piece_gfx#9 ← (byte*~) spawn_current::$0 - (byte) current_piece_color#6 ← (byte) GREEN#0 +spawn_current: scope:[spawn_current] from main::@22 play_move_down::@19 + *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0) + (byte) spawn_current::piece_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + to:spawn_current::@1 +spawn_current::@1: scope:[spawn_current] from spawn_current spawn_current::@7 + (byte) spawn_current::piece_idx#2 ← phi( spawn_current/(byte) spawn_current::piece_idx#0 spawn_current::@7/(byte) spawn_current::piece_idx#1 ) + (bool~) spawn_current::$0 ← (byte) spawn_current::piece_idx#2 == (byte/signed byte/word/signed word/dword/signed dword) 7 + if((bool~) spawn_current::$0) goto spawn_current::@2 + to:spawn_current::@3 +spawn_current::@2: scope:[spawn_current] from spawn_current::@1 + call sid_rnd + (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#1 + to:spawn_current::@7 +spawn_current::@7: scope:[spawn_current] from spawn_current::@2 + (byte) sid_rnd::return#4 ← phi( spawn_current::@2/(byte) sid_rnd::return#2 ) + (byte~) spawn_current::$1 ← (byte) sid_rnd::return#4 + (byte~) spawn_current::$2 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$2 + to:spawn_current::@1 +spawn_current::@3: scope:[spawn_current] from spawn_current::@1 + (byte) spawn_current::piece_idx#3 ← phi( spawn_current::@1/(byte) spawn_current::piece_idx#2 ) + *((byte*) BORDERCOL#0) ← -- *((byte*) BORDERCOL#0) + (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte*) current_piece#6 ← ((byte*)) *((word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte) current_orientation#9 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*~) spawn_current::$4 ← (byte*) current_piece#6 + (byte) current_orientation#9 + (byte*) current_piece_gfx#9 ← (byte*~) spawn_current::$4 (byte) current_xpos#10 ← (byte/signed byte/word/signed word/dword/signed dword) 3 (byte) current_ypos#7 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) current_piece_color#6 ← *((byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#3) to:spawn_current::@return -spawn_current::@return: scope:[spawn_current] from spawn_current - (byte) current_ypos#21 ← phi( spawn_current/(byte) current_ypos#7 ) - (byte) current_xpos#27 ← phi( spawn_current/(byte) current_xpos#10 ) - (byte) current_piece_color#15 ← phi( spawn_current/(byte) current_piece_color#6 ) - (byte*) current_piece_gfx#20 ← phi( spawn_current/(byte*) current_piece_gfx#9 ) - (byte) current_piece_orientation#24 ← phi( spawn_current/(byte) current_piece_orientation#9 ) - (byte*) current_piece#16 ← phi( spawn_current/(byte*) current_piece#6 ) +spawn_current::@return: scope:[spawn_current] from spawn_current::@3 + (byte) current_piece_color#15 ← phi( spawn_current::@3/(byte) current_piece_color#6 ) + (byte) current_ypos#21 ← phi( spawn_current::@3/(byte) current_ypos#7 ) + (byte) current_xpos#27 ← phi( spawn_current::@3/(byte) current_xpos#10 ) + (byte*) current_piece_gfx#20 ← phi( spawn_current::@3/(byte*) current_piece_gfx#9 ) + (byte) current_orientation#24 ← phi( spawn_current::@3/(byte) current_orientation#9 ) + (byte*) current_piece#16 ← phi( spawn_current::@3/(byte*) current_piece#6 ) (byte*) current_piece#7 ← (byte*) current_piece#16 - (byte) current_piece_orientation#10 ← (byte) current_piece_orientation#24 + (byte) current_orientation#10 ← (byte) current_orientation#24 (byte*) current_piece_gfx#10 ← (byte*) current_piece_gfx#20 - (byte) current_piece_color#7 ← (byte) current_piece_color#15 (byte) current_xpos#11 ← (byte) current_xpos#27 (byte) current_ypos#8 ← (byte) current_ypos#21 + (byte) current_piece_color#7 ← (byte) current_piece_color#15 return to:@return -init: scope:[init] from main - (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 ) +init: scope:[init] from main::@21 + (byte*) SCREEN#1 ← phi( main::@21/(byte*) SCREEN#2 ) (byte*) fill::start#0 ← (byte*) SCREEN#1 (word) fill::size#0 ← (word/signed word/dword/signed dword) 1000 (byte) fill::val#0 ← (byte/word/signed word/dword/signed dword) 160 @@ -1369,14 +1456,14 @@ init::@1: scope:[init] from init::@1 init::@10 (byte*) init::li#2 ← phi( init::@1/(byte*) init::li#1 init::@10/(byte*) init::li#0 ) (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@10/(byte) init::i#0 ) (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - *((byte*[$2]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 + *((byte*[$23]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 (byte) init::i#1 ← (byte) init::i#2 + rangenext(0,init::$4) (bool~) init::$6 ← (byte) init::i#1 != rangelast(0,init::$4) if((bool~) init::$6) goto init::@1 to:init::@5 init::@5: scope:[init] from init::@1 - (byte*) init::pli#0 ← (byte[$1]) playfield#0 + (byte*) init::pli#0 ← (byte[$22]) playfield#0 (byte/signed word/word/dword/signed dword~) init::$7 ← (byte) PLAYFIELD_LINES#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) init::j#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:init::@2 @@ -1423,7 +1510,7 @@ init::@7: scope:[init] from init::@4 init::@return: scope:[init] from init::@7 return to:@return -render_playfield: scope:[render_playfield] from main::@19 main::@22 +render_playfield: scope:[render_playfield] from main::@19 main::@23 (byte) render_playfield::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte/signed word/word/dword/signed dword~) render_playfield::$0 ← (byte) PLAYFIELD_LINES#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) render_playfield::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1432,7 +1519,7 @@ render_playfield::@1: scope:[render_playfield] from render_playfield render_pla (byte) render_playfield::i#3 ← phi( render_playfield/(byte) render_playfield::i#0 render_playfield::@3/(byte) render_playfield::i#4 ) (byte) render_playfield::l#2 ← phi( render_playfield/(byte) render_playfield::l#0 render_playfield::@3/(byte) render_playfield::l#1 ) (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte*) render_playfield::line#0 ← *((byte*[$2]) screen_lines#0 + (byte~) render_playfield::$1) + (byte*) render_playfield::line#0 ← *((byte*[$23]) screen_lines#0 + (byte~) render_playfield::$1) (byte/signed word/word/dword/signed dword~) render_playfield::$2 ← (byte) PLAYFIELD_COLS#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) render_playfield::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_playfield::@2 @@ -1441,7 +1528,7 @@ render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte) render_playfield::c#0 render_playfield::@2/(byte) render_playfield::c#1 ) (byte*) render_playfield::line#2 ← phi( render_playfield::@1/(byte*) render_playfield::line#0 render_playfield::@2/(byte*) render_playfield::line#1 ) (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) - *((byte*) render_playfield::line#2) ← *((byte[$1]) playfield#0 + (byte) render_playfield::i#2) + *((byte*) render_playfield::line#2) ← *((byte[$22]) playfield#0 + (byte) render_playfield::i#2) (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 (byte) render_playfield::c#1 ← (byte) render_playfield::c#2 + rangenext(0,render_playfield::$2) @@ -1458,21 +1545,21 @@ render_playfield::@3: scope:[render_playfield] from render_playfield::@2 render_playfield::@return: scope:[render_playfield] from render_playfield::@3 return to:@return -render_current: scope:[render_current] from main::@23 main::@30 - (byte) current_piece_color#63 ← phi( main::@23/(byte) current_piece_color#38 main::@30/(byte) current_piece_color#51 ) - (byte*) current_piece_gfx#61 ← phi( main::@23/(byte*) current_piece_gfx#53 main::@30/(byte*) current_piece_gfx#65 ) - (byte) current_xpos#62 ← phi( main::@23/(byte) current_xpos#65 main::@30/(byte) current_xpos#75 ) - (byte) current_ypos#22 ← phi( main::@23/(byte) current_ypos#38 main::@30/(byte) current_ypos#39 ) +render_current: scope:[render_current] from main::@24 main::@31 + (byte) current_piece_color#64 ← phi( main::@24/(byte) current_piece_color#39 main::@31/(byte) current_piece_color#52 ) + (byte*) current_piece_gfx#62 ← phi( main::@24/(byte*) current_piece_gfx#54 main::@31/(byte*) current_piece_gfx#66 ) + (byte) current_xpos#62 ← phi( main::@24/(byte) current_xpos#66 main::@31/(byte) current_xpos#76 ) + (byte) current_ypos#22 ← phi( main::@24/(byte) current_ypos#37 main::@31/(byte) current_ypos#38 ) (byte) render_current::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte~) render_current::$0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) render_current::ypos2#0 ← (byte~) render_current::$0 (byte) render_current::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_current::@1 render_current::@1: scope:[render_current] from render_current render_current::@2 - (byte) current_piece_color#56 ← phi( render_current/(byte) current_piece_color#63 render_current::@2/(byte) current_piece_color#64 ) + (byte) current_piece_color#57 ← phi( render_current/(byte) current_piece_color#64 render_current::@2/(byte) current_piece_color#65 ) (byte) render_current::i#5 ← phi( render_current/(byte) render_current::i#0 render_current::@2/(byte) render_current::i#8 ) - (byte*) current_piece_gfx#49 ← phi( render_current/(byte*) current_piece_gfx#61 render_current::@2/(byte*) current_piece_gfx#62 ) - (byte) current_xpos#45 ← phi( render_current/(byte) current_xpos#62 render_current::@2/(byte) current_xpos#63 ) + (byte*) current_piece_gfx#49 ← phi( render_current/(byte*) current_piece_gfx#62 render_current::@2/(byte*) current_piece_gfx#63 ) + (byte) current_xpos#46 ← phi( render_current/(byte) current_xpos#62 render_current::@2/(byte) current_xpos#63 ) (byte) render_current::l#3 ← phi( render_current/(byte) render_current::l#0 render_current::@2/(byte) render_current::l#1 ) (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@2/(byte) render_current::ypos2#1 ) (byte/signed word/word/dword/signed dword~) render_current::$1 ← (byte/signed byte/word/signed word/dword/signed dword) 2 * (byte) PLAYFIELD_LINES#0 @@ -1481,10 +1568,10 @@ render_current::@1: scope:[render_current] from render_current render_current:: if((bool~) render_current::$3) goto render_current::@2 to:render_current::@6 render_current::@2: scope:[render_current] from render_current::@1 render_current::@4 - (byte) current_piece_color#64 ← phi( render_current::@1/(byte) current_piece_color#56 render_current::@4/(byte) current_piece_color#47 ) + (byte) current_piece_color#65 ← phi( render_current::@1/(byte) current_piece_color#57 render_current::@4/(byte) current_piece_color#48 ) (byte) render_current::i#8 ← phi( render_current::@1/(byte) render_current::i#5 render_current::@4/(byte) render_current::i#3 ) - (byte*) current_piece_gfx#62 ← phi( render_current::@1/(byte*) current_piece_gfx#49 render_current::@4/(byte*) current_piece_gfx#34 ) - (byte) current_xpos#63 ← phi( render_current::@1/(byte) current_xpos#45 render_current::@4/(byte) current_xpos#76 ) + (byte*) current_piece_gfx#63 ← phi( render_current::@1/(byte*) current_piece_gfx#49 render_current::@4/(byte*) current_piece_gfx#34 ) + (byte) current_xpos#63 ← phi( render_current::@1/(byte) current_xpos#46 render_current::@4/(byte) current_xpos#77 ) (byte) render_current::l#2 ← phi( render_current::@1/(byte) render_current::l#3 render_current::@4/(byte) render_current::l#4 ) (byte) render_current::ypos2#3 ← phi( render_current::@1/(byte) render_current::ypos2#2 render_current::@4/(byte) render_current::ypos2#5 ) (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -1493,20 +1580,20 @@ render_current::@2: scope:[render_current] from render_current::@1 render_curre if((bool~) render_current::$9) goto render_current::@1 to:render_current::@return render_current::@6: scope:[render_current] from render_current::@1 - (byte) current_piece_color#48 ← phi( render_current::@1/(byte) current_piece_color#56 ) + (byte) current_piece_color#49 ← phi( render_current::@1/(byte) current_piece_color#57 ) (byte) render_current::l#8 ← phi( render_current::@1/(byte) render_current::l#3 ) (byte) render_current::i#4 ← phi( render_current::@1/(byte) render_current::i#5 ) (byte*) current_piece_gfx#35 ← phi( render_current::@1/(byte*) current_piece_gfx#49 ) - (byte) current_xpos#28 ← phi( render_current::@1/(byte) current_xpos#45 ) + (byte) current_xpos#28 ← phi( render_current::@1/(byte) current_xpos#46 ) (byte) render_current::ypos2#4 ← phi( render_current::@1/(byte) render_current::ypos2#2 ) - (byte*) render_current::screen_line#0 ← *((byte*[$2]) screen_lines#0 + (byte) render_current::ypos2#4) + (byte*) render_current::screen_line#0 ← *((byte*[$23]) screen_lines#0 + (byte) render_current::ypos2#4) (byte) render_current::xpos#0 ← (byte) current_xpos#28 (byte) render_current::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_current::@3 render_current::@3: scope:[render_current] from render_current::@4 render_current::@6 - (byte) current_xpos#81 ← phi( render_current::@4/(byte) current_xpos#76 render_current::@6/(byte) current_xpos#28 ) + (byte) current_xpos#82 ← phi( render_current::@4/(byte) current_xpos#77 render_current::@6/(byte) current_xpos#28 ) (byte*) render_current::screen_line#3 ← phi( render_current::@4/(byte*) render_current::screen_line#4 render_current::@6/(byte*) render_current::screen_line#0 ) - (byte) current_piece_color#36 ← phi( render_current::@4/(byte) current_piece_color#47 render_current::@6/(byte) current_piece_color#48 ) + (byte) current_piece_color#36 ← phi( render_current::@4/(byte) current_piece_color#48 render_current::@6/(byte) current_piece_color#49 ) (byte) render_current::l#5 ← phi( render_current::@4/(byte) render_current::l#4 render_current::@6/(byte) render_current::l#8 ) (byte) render_current::ypos2#6 ← phi( render_current::@4/(byte) render_current::ypos2#5 render_current::@6/(byte) render_current::ypos2#4 ) (byte) render_current::c#3 ← phi( render_current::@4/(byte) render_current::c#1 render_current::@6/(byte) render_current::c#0 ) @@ -1521,8 +1608,8 @@ render_current::@3: scope:[render_current] from render_current::@4 render_curre to:render_current::@7 render_current::@4: scope:[render_current] from render_current::@3 render_current::@5 render_current::@8 (byte*) render_current::screen_line#4 ← phi( render_current::@3/(byte*) render_current::screen_line#3 render_current::@5/(byte*) render_current::screen_line#5 render_current::@8/(byte*) render_current::screen_line#1 ) - (byte) current_piece_color#47 ← phi( render_current::@3/(byte) current_piece_color#36 render_current::@5/(byte) current_piece_color#57 render_current::@8/(byte) current_piece_color#16 ) - (byte) current_xpos#76 ← phi( render_current::@3/(byte) current_xpos#81 render_current::@5/(byte) current_xpos#82 render_current::@8/(byte) current_xpos#83 ) + (byte) current_piece_color#48 ← phi( render_current::@3/(byte) current_piece_color#36 render_current::@5/(byte) current_piece_color#58 render_current::@8/(byte) current_piece_color#16 ) + (byte) current_xpos#77 ← phi( render_current::@3/(byte) current_xpos#82 render_current::@5/(byte) current_xpos#83 render_current::@8/(byte) current_xpos#84 ) (byte) render_current::i#3 ← phi( render_current::@3/(byte) render_current::i#1 render_current::@5/(byte) render_current::i#6 render_current::@8/(byte) render_current::i#7 ) (byte*) current_piece_gfx#34 ← phi( render_current::@3/(byte*) current_piece_gfx#21 render_current::@5/(byte*) current_piece_gfx#50 render_current::@8/(byte*) current_piece_gfx#51 ) (byte) render_current::l#4 ← phi( render_current::@3/(byte) render_current::l#5 render_current::@5/(byte) render_current::l#6 render_current::@8/(byte) render_current::l#7 ) @@ -1535,9 +1622,9 @@ render_current::@4: scope:[render_current] from render_current::@3 render_curre if((bool~) render_current::$8) goto render_current::@3 to:render_current::@2 render_current::@7: scope:[render_current] from render_current::@3 - (byte) current_xpos#88 ← phi( render_current::@3/(byte) current_xpos#81 ) + (byte) current_xpos#89 ← phi( render_current::@3/(byte) current_xpos#82 ) (byte) render_current::i#9 ← phi( render_current::@3/(byte) render_current::i#1 ) - (byte*) current_piece_gfx#63 ← phi( render_current::@3/(byte*) current_piece_gfx#21 ) + (byte*) current_piece_gfx#64 ← phi( render_current::@3/(byte*) current_piece_gfx#21 ) (byte) render_current::l#9 ← phi( render_current::@3/(byte) render_current::l#5 ) (byte) render_current::ypos2#9 ← phi( render_current::@3/(byte) render_current::ypos2#6 ) (byte) render_current::c#6 ← phi( render_current::@3/(byte) render_current::c#3 ) @@ -1550,19 +1637,19 @@ render_current::@7: scope:[render_current] from render_current::@3 to:render_current::@8 render_current::@5: scope:[render_current] from render_current::@7 (byte*) render_current::screen_line#5 ← phi( render_current::@7/(byte*) render_current::screen_line#2 ) - (byte) current_piece_color#57 ← phi( render_current::@7/(byte) current_piece_color#25 ) - (byte) current_xpos#82 ← phi( render_current::@7/(byte) current_xpos#88 ) + (byte) current_piece_color#58 ← phi( render_current::@7/(byte) current_piece_color#25 ) + (byte) current_xpos#83 ← phi( render_current::@7/(byte) current_xpos#89 ) (byte) render_current::i#6 ← phi( render_current::@7/(byte) render_current::i#9 ) - (byte*) current_piece_gfx#50 ← phi( render_current::@7/(byte*) current_piece_gfx#63 ) + (byte*) current_piece_gfx#50 ← phi( render_current::@7/(byte*) current_piece_gfx#64 ) (byte) render_current::l#6 ← phi( render_current::@7/(byte) render_current::l#9 ) (byte) render_current::ypos2#7 ← phi( render_current::@7/(byte) render_current::ypos2#9 ) (byte) render_current::c#4 ← phi( render_current::@7/(byte) render_current::c#6 ) (byte) render_current::xpos#6 ← phi( render_current::@7/(byte) render_current::xpos#3 ) to:render_current::@4 render_current::@8: scope:[render_current] from render_current::@7 - (byte) current_xpos#83 ← phi( render_current::@7/(byte) current_xpos#88 ) + (byte) current_xpos#84 ← phi( render_current::@7/(byte) current_xpos#89 ) (byte) render_current::i#7 ← phi( render_current::@7/(byte) render_current::i#9 ) - (byte*) current_piece_gfx#51 ← phi( render_current::@7/(byte*) current_piece_gfx#63 ) + (byte*) current_piece_gfx#51 ← phi( render_current::@7/(byte*) current_piece_gfx#64 ) (byte) render_current::l#7 ← phi( render_current::@7/(byte) render_current::l#9 ) (byte) render_current::ypos2#8 ← phi( render_current::@7/(byte) render_current::ypos2#9 ) (byte) render_current::c#5 ← phi( render_current::@7/(byte) render_current::c#6 ) @@ -1574,53 +1661,70 @@ render_current::@8: scope:[render_current] from render_current::@7 render_current::@return: scope:[render_current] from render_current::@2 return to:@return -@21: scope:[] from @15 - (byte*) SCREEN#3 ← phi( @15/(byte*) SCREEN#4 ) - (byte) current_movedown_counter#20 ← phi( @15/(byte) current_movedown_counter#26 ) - (byte) keyboard_modifiers#25 ← phi( @15/(byte) keyboard_modifiers#32 ) - (byte) keyboard_events_size#28 ← phi( @15/(byte) keyboard_events_size#35 ) - (byte) current_ypos#40 ← phi( @15/(byte) current_ypos#52 ) - (byte) current_xpos#46 ← phi( @15/(byte) current_xpos#64 ) - (byte) current_piece_color#26 ← phi( @15/(byte) current_piece_color#37 ) - (byte*) current_piece_gfx#36 ← phi( @15/(byte*) current_piece_gfx#52 ) - (byte) current_piece_orientation#40 ← phi( @15/(byte) current_piece_orientation#50 ) - (byte*) current_piece#29 ← phi( @15/(byte*) current_piece#41 ) - (byte/signed byte/word/signed word/dword/signed dword~) $3 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte/signed word/word/dword/signed dword/signed byte~) $4 ← (byte/signed byte/word/signed word/dword/signed dword~) $3 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte[$4]) piece_t#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) 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 } +@23: scope:[] from @17 + (byte*) SCREEN#4 ← phi( @17/(byte*) SCREEN#5 ) + (byte) current_movedown_counter#20 ← phi( @17/(byte) current_movedown_counter#26 ) + (byte) keyboard_modifiers#25 ← phi( @17/(byte) keyboard_modifiers#32 ) + (byte) keyboard_events_size#28 ← phi( @17/(byte) keyboard_events_size#35 ) + (byte) current_piece_color#26 ← phi( @17/(byte) current_piece_color#37 ) + (byte) current_ypos#39 ← phi( @17/(byte) current_ypos#49 ) + (byte) current_xpos#47 ← phi( @17/(byte) current_xpos#64 ) + (byte*) current_piece_gfx#36 ← phi( @17/(byte*) current_piece_gfx#52 ) + (byte) current_orientation#40 ← phi( @17/(byte) current_orientation#50 ) + (byte*) current_piece#29 ← phi( @17/(byte*) current_piece#41 ) call main - to:@22 -@22: scope:[] from @21 - (byte) current_movedown_counter#13 ← phi( @21/(byte) current_movedown_counter#2 ) - (byte) keyboard_modifiers#17 ← phi( @21/(byte) keyboard_modifiers#8 ) - (byte) keyboard_events_size#20 ← phi( @21/(byte) keyboard_events_size#8 ) - (byte) current_ypos#23 ← phi( @21/(byte) current_ypos#3 ) - (byte) current_xpos#29 ← phi( @21/(byte) current_xpos#4 ) - (byte) current_piece_color#17 ← phi( @21/(byte) current_piece_color#3 ) - (byte*) current_piece_gfx#22 ← phi( @21/(byte*) current_piece_gfx#4 ) - (byte) current_piece_orientation#25 ← phi( @21/(byte) current_piece_orientation#4 ) - (byte*) current_piece#17 ← phi( @21/(byte*) current_piece#3 ) + to:@24 +@24: scope:[] from @23 + (byte) current_movedown_counter#13 ← phi( @23/(byte) current_movedown_counter#2 ) + (byte) keyboard_modifiers#17 ← phi( @23/(byte) keyboard_modifiers#8 ) + (byte) keyboard_events_size#20 ← phi( @23/(byte) keyboard_events_size#8 ) + (byte) current_piece_color#17 ← phi( @23/(byte) current_piece_color#3 ) + (byte) current_ypos#23 ← phi( @23/(byte) current_ypos#3 ) + (byte) current_xpos#29 ← phi( @23/(byte) current_xpos#4 ) + (byte*) current_piece_gfx#22 ← phi( @23/(byte*) current_piece_gfx#4 ) + (byte) current_orientation#25 ← phi( @23/(byte) current_orientation#4 ) + (byte*) current_piece#17 ← phi( @23/(byte*) current_piece#3 ) (byte*) current_piece#8 ← (byte*) current_piece#17 - (byte) current_piece_orientation#11 ← (byte) current_piece_orientation#25 + (byte) current_orientation#11 ← (byte) current_orientation#25 (byte*) current_piece_gfx#11 ← (byte*) current_piece_gfx#22 - (byte) current_piece_color#8 ← (byte) current_piece_color#17 (byte) current_xpos#12 ← (byte) current_xpos#29 (byte) current_ypos#9 ← (byte) current_ypos#23 + (byte) current_piece_color#8 ← (byte) current_piece_color#17 (byte) keyboard_events_size#9 ← (byte) keyboard_events_size#20 (byte) keyboard_modifiers#9 ← (byte) keyboard_modifiers#17 (byte) current_movedown_counter#6 ← (byte) current_movedown_counter#13 to:@end -@end: scope:[] from @22 +@end: scope:[] from @24 SYMBOL TABLE SSA -(byte~) $1 -(byte/signed word/word/dword/signed dword~) $2 +(byte/signed byte/word/signed word/dword/signed dword~) $1 +(byte/signed word/word/dword/signed dword/signed byte~) $10 +(byte/signed byte/word/signed word/dword/signed dword~) $11 +(byte/signed word/word/dword/signed dword/signed byte~) $12 +(byte/signed byte/word/signed word/dword/signed dword~) $13 +(byte/signed word/word/dword/signed dword/signed byte~) $14 +(word~) $15 +(word~) $16 +(word~) $17 +(word~) $18 +(word~) $19 +(byte/signed word/word/dword/signed dword/signed byte~) $2 +(word~) $20 +(word~) $21 +(byte~) $22 +(byte/signed word/word/dword/signed dword~) $23 (byte/signed byte/word/signed word/dword/signed dword~) $3 (byte/signed word/word/dword/signed dword/signed byte~) $4 +(byte/signed byte/word/signed word/dword/signed dword~) $5 +(byte/signed word/word/dword/signed dword/signed byte~) $6 +(byte/signed byte/word/signed word/dword/signed dword~) $7 +(byte/signed word/word/dword/signed dword/signed byte~) $8 +(byte/signed byte/word/signed word/dword/signed dword~) $9 (label) @11 -(label) @15 -(label) @21 -(label) @22 +(label) @13 +(label) @17 +(label) @23 +(label) @24 (label) @4 (label) @8 (label) @begin @@ -1675,6 +1779,26 @@ SYMBOL TABLE SSA (byte) KEY_X#0 (byte) KEY_Z (byte) KEY_Z#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(word[]) PIECES +(word[]) PIECES#0 +(byte[]) PIECES_COLORS +(byte[]) PIECES_COLORS#0 +(byte[$14]) PIECE_I +(byte[$14]) PIECE_I#0 +(byte[$10]) PIECE_J +(byte[$10]) PIECE_J#0 +(byte[$8]) PIECE_L +(byte[$8]) PIECE_L#0 +(byte[$12]) PIECE_O +(byte[$12]) PIECE_O#0 +(byte[$4]) PIECE_S +(byte[$4]) PIECE_S#0 +(byte[$2]) PIECE_T +(byte[$2]) PIECE_T#0 +(byte[$6]) PIECE_Z +(byte[$6]) PIECE_Z#0 (byte) PLAYFIELD_COLS (byte) PLAYFIELD_COLS#0 (byte) PLAYFIELD_LINES @@ -1687,6 +1811,17 @@ SYMBOL TABLE SSA (byte*) SCREEN#2 (byte*) SCREEN#3 (byte*) SCREEN#4 +(byte*) SCREEN#5 +(byte) SID_CONTROL_NOISE +(byte) SID_CONTROL_NOISE#0 +(byte*) SID_VOICE3_CONTROL +(byte*) SID_VOICE3_CONTROL#0 +(word*) SID_VOICE3_FREQ +(word*) SID_VOICE3_FREQ#0 +(byte*) SID_VOICE3_OSC +(byte*) SID_VOICE3_OSC#0 +(byte) WHITE +(byte) WHITE#0 (byte()) collision((byte) collision::xpos , (byte) collision::ypos , (byte) collision::orientation) (byte*~) collision::$0 (byte~) collision::$1 @@ -1878,15 +2013,88 @@ SYMBOL TABLE SSA (byte) current_movedown_counter#41 (byte) current_movedown_counter#42 (byte) current_movedown_counter#43 +(byte) current_movedown_counter#44 (byte) current_movedown_counter#5 (byte) current_movedown_counter#6 (byte) current_movedown_counter#7 (byte) current_movedown_counter#8 (byte) current_movedown_counter#9 -(byte) current_movedown_rate -(byte) current_movedown_rate#0 -(byte) current_movedown_rate_fast -(byte) current_movedown_rate_fast#0 +(byte) current_movedown_fast +(byte) current_movedown_fast#0 +(byte) current_movedown_slow +(byte) current_movedown_slow#0 +(byte) current_orientation +(byte) current_orientation#0 +(byte) current_orientation#1 +(byte) current_orientation#10 +(byte) current_orientation#11 +(byte) current_orientation#12 +(byte) current_orientation#13 +(byte) current_orientation#14 +(byte) current_orientation#15 +(byte) current_orientation#16 +(byte) current_orientation#17 +(byte) current_orientation#18 +(byte) current_orientation#19 +(byte) current_orientation#2 +(byte) current_orientation#20 +(byte) current_orientation#21 +(byte) current_orientation#22 +(byte) current_orientation#23 +(byte) current_orientation#24 +(byte) current_orientation#25 +(byte) current_orientation#26 +(byte) current_orientation#27 +(byte) current_orientation#28 +(byte) current_orientation#29 +(byte) current_orientation#3 +(byte) current_orientation#30 +(byte) current_orientation#31 +(byte) current_orientation#32 +(byte) current_orientation#33 +(byte) current_orientation#34 +(byte) current_orientation#35 +(byte) current_orientation#36 +(byte) current_orientation#37 +(byte) current_orientation#38 +(byte) current_orientation#39 +(byte) current_orientation#4 +(byte) current_orientation#40 +(byte) current_orientation#41 +(byte) current_orientation#42 +(byte) current_orientation#43 +(byte) current_orientation#44 +(byte) current_orientation#45 +(byte) current_orientation#46 +(byte) current_orientation#47 +(byte) current_orientation#48 +(byte) current_orientation#49 +(byte) current_orientation#5 +(byte) current_orientation#50 +(byte) current_orientation#51 +(byte) current_orientation#52 +(byte) current_orientation#53 +(byte) current_orientation#54 +(byte) current_orientation#55 +(byte) current_orientation#56 +(byte) current_orientation#57 +(byte) current_orientation#58 +(byte) current_orientation#59 +(byte) current_orientation#6 +(byte) current_orientation#60 +(byte) current_orientation#61 +(byte) current_orientation#62 +(byte) current_orientation#63 +(byte) current_orientation#64 +(byte) current_orientation#65 +(byte) current_orientation#66 +(byte) current_orientation#67 +(byte) current_orientation#68 +(byte) current_orientation#69 +(byte) current_orientation#7 +(byte) current_orientation#70 +(byte) current_orientation#8 +(byte) current_orientation#9 (byte*) current_piece (byte*) current_piece#0 (byte*) current_piece#1 @@ -1951,6 +2159,7 @@ SYMBOL TABLE SSA (byte*) current_piece#63 (byte*) current_piece#64 (byte*) current_piece#65 +(byte*) current_piece#66 (byte*) current_piece#7 (byte*) current_piece#8 (byte*) current_piece#9 @@ -2021,6 +2230,7 @@ SYMBOL TABLE SSA (byte) current_piece_color#66 (byte) current_piece_color#67 (byte) current_piece_color#68 +(byte) current_piece_color#69 (byte) current_piece_color#7 (byte) current_piece_color#8 (byte) current_piece_color#9 @@ -2105,78 +2315,8 @@ SYMBOL TABLE SSA (byte*) current_piece_gfx#79 (byte*) current_piece_gfx#8 (byte*) current_piece_gfx#80 +(byte*) current_piece_gfx#81 (byte*) current_piece_gfx#9 -(byte) current_piece_orientation -(byte) current_piece_orientation#0 -(byte) current_piece_orientation#1 -(byte) current_piece_orientation#10 -(byte) current_piece_orientation#11 -(byte) current_piece_orientation#12 -(byte) current_piece_orientation#13 -(byte) current_piece_orientation#14 -(byte) current_piece_orientation#15 -(byte) current_piece_orientation#16 -(byte) current_piece_orientation#17 -(byte) current_piece_orientation#18 -(byte) current_piece_orientation#19 -(byte) current_piece_orientation#2 -(byte) current_piece_orientation#20 -(byte) current_piece_orientation#21 -(byte) current_piece_orientation#22 -(byte) current_piece_orientation#23 -(byte) current_piece_orientation#24 -(byte) current_piece_orientation#25 -(byte) current_piece_orientation#26 -(byte) current_piece_orientation#27 -(byte) current_piece_orientation#28 -(byte) current_piece_orientation#29 -(byte) current_piece_orientation#3 -(byte) current_piece_orientation#30 -(byte) current_piece_orientation#31 -(byte) current_piece_orientation#32 -(byte) current_piece_orientation#33 -(byte) current_piece_orientation#34 -(byte) current_piece_orientation#35 -(byte) current_piece_orientation#36 -(byte) current_piece_orientation#37 -(byte) current_piece_orientation#38 -(byte) current_piece_orientation#39 -(byte) current_piece_orientation#4 -(byte) current_piece_orientation#40 -(byte) current_piece_orientation#41 -(byte) current_piece_orientation#42 -(byte) current_piece_orientation#43 -(byte) current_piece_orientation#44 -(byte) current_piece_orientation#45 -(byte) current_piece_orientation#46 -(byte) current_piece_orientation#47 -(byte) current_piece_orientation#48 -(byte) current_piece_orientation#49 -(byte) current_piece_orientation#5 -(byte) current_piece_orientation#50 -(byte) current_piece_orientation#51 -(byte) current_piece_orientation#52 -(byte) current_piece_orientation#53 -(byte) current_piece_orientation#54 -(byte) current_piece_orientation#55 -(byte) current_piece_orientation#56 -(byte) current_piece_orientation#57 -(byte) current_piece_orientation#58 -(byte) current_piece_orientation#59 -(byte) current_piece_orientation#6 -(byte) current_piece_orientation#60 -(byte) current_piece_orientation#61 -(byte) current_piece_orientation#62 -(byte) current_piece_orientation#63 -(byte) current_piece_orientation#64 -(byte) current_piece_orientation#65 -(byte) current_piece_orientation#66 -(byte) current_piece_orientation#67 -(byte) current_piece_orientation#68 -(byte) current_piece_orientation#69 -(byte) current_piece_orientation#7 -(byte) current_piece_orientation#8 -(byte) current_piece_orientation#9 (byte) current_xpos (byte) current_xpos#0 (byte) current_xpos#1 @@ -2269,6 +2409,7 @@ SYMBOL TABLE SSA (byte) current_xpos#89 (byte) current_xpos#9 (byte) current_xpos#90 +(byte) current_xpos#91 (byte) current_ypos (byte) current_ypos#0 (byte) current_ypos#1 @@ -2334,11 +2475,7 @@ SYMBOL TABLE SSA (byte) current_ypos#64 (byte) current_ypos#65 (byte) current_ypos#66 -(byte) current_ypos#67 -(byte) current_ypos#68 -(byte) current_ypos#69 (byte) current_ypos#7 -(byte) current_ypos#70 (byte) current_ypos#8 (byte) current_ypos#9 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) @@ -2645,6 +2782,8 @@ SYMBOL TABLE SSA (byte) keyboard_events_size#65 (byte) keyboard_events_size#66 (byte) keyboard_events_size#67 +(byte) keyboard_events_size#68 +(byte) keyboard_events_size#69 (byte) keyboard_events_size#7 (byte) keyboard_events_size#8 (byte) keyboard_events_size#9 @@ -2711,7 +2850,9 @@ SYMBOL TABLE SSA (byte) keyboard_modifiers#46 (byte) keyboard_modifiers#47 (byte) keyboard_modifiers#48 +(byte) keyboard_modifiers#49 (byte) keyboard_modifiers#5 +(byte) keyboard_modifiers#50 (byte) keyboard_modifiers#6 (byte) keyboard_modifiers#7 (byte) keyboard_modifiers#8 @@ -2720,12 +2861,10 @@ SYMBOL TABLE SSA (byte[8]) keyboard_scan_values#0 (void()) lock_current() (byte~) lock_current::$0 -(byte~) lock_current::$1 +(bool~) lock_current::$1 (bool~) lock_current::$2 (bool~) lock_current::$3 -(byte~) lock_current::$4 -(bool~) lock_current::$5 -(bool~) lock_current::$6 +(bool~) lock_current::$4 (label) lock_current::@1 (label) lock_current::@2 (label) lock_current::@3 @@ -2738,10 +2877,12 @@ SYMBOL TABLE SSA (byte) lock_current::c#2 (byte) lock_current::c#3 (byte) lock_current::c#4 -(byte) lock_current::cell -(byte) lock_current::cell#0 (byte) lock_current::col (byte) lock_current::col#0 +(byte) lock_current::col#1 +(byte) lock_current::col#2 +(byte) lock_current::col#3 +(byte) lock_current::col#4 (byte) lock_current::i (byte) lock_current::i#0 (byte) lock_current::i#1 @@ -2758,20 +2899,26 @@ SYMBOL TABLE SSA (byte) lock_current::l#4 (byte) lock_current::l#5 (byte) lock_current::l#6 -(byte) lock_current::line -(byte) lock_current::line#0 (byte*) lock_current::playfield_line (byte*) lock_current::playfield_line#0 (byte*) lock_current::playfield_line#1 (byte*) lock_current::playfield_line#2 (byte*) lock_current::playfield_line#3 +(byte) lock_current::ypos2 +(byte) lock_current::ypos2#0 +(byte) lock_current::ypos2#1 +(byte) lock_current::ypos2#2 +(byte) lock_current::ypos2#3 +(byte) lock_current::ypos2#4 +(byte) lock_current::ypos2#5 +(byte) lock_current::ypos2#6 (void()) main() (byte~) main::$10 -(bool~) main::$11 +(byte~) main::$11 (bool~) main::$12 -(bool~) main::$4 +(bool~) main::$13 (bool~) main::$5 -(byte~) main::$7 +(bool~) main::$6 (byte~) main::$8 (byte~) main::$9 (label) main::@1 @@ -2789,6 +2936,7 @@ SYMBOL TABLE SSA (label) main::@29 (label) main::@30 (label) main::@31 +(label) main::@32 (label) main::@4 (label) main::@5 (label) main::@7 @@ -2807,8 +2955,6 @@ SYMBOL TABLE SSA (byte) main::render#4 (byte) main::render#5 (byte) main::render#6 -(byte[$4]) piece_t -(byte[$4]) piece_t#0 (byte()) play_move_down((byte) play_move_down::key_event) (bool~) play_move_down::$0 (bool~) play_move_down::$1 @@ -2905,16 +3051,14 @@ SYMBOL TABLE SSA (byte()) play_move_rotate((byte) play_move_rotate::key_event) (bool~) play_move_rotate::$0 (bool~) play_move_rotate::$1 -(bool~) play_move_rotate::$10 -(byte*~) play_move_rotate::$11 (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 (byte/word/dword~) play_move_rotate::$3 (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 (byte/word/dword~) play_move_rotate::$5 (byte~) play_move_rotate::$6 -(byte~) play_move_rotate::$7 -(byte~) play_move_rotate::$8 -(bool~) play_move_rotate::$9 +(bool~) play_move_rotate::$7 +(bool~) play_move_rotate::$8 +(byte*~) play_move_rotate::$9 (label) play_move_rotate::@1 (label) play_move_rotate::@11 (label) play_move_rotate::@14 @@ -2943,8 +3087,8 @@ SYMBOL TABLE SSA (byte) play_move_rotate::return#4 (byte) play_move_rotate::return#5 (byte) play_move_rotate::return#6 -(byte[$1]) playfield -(byte[$1]) playfield#0 +(byte[$22]) playfield +(byte[$22]) playfield#0 (byte*[PLAYFIELD_LINES#0]) playfield_lines (byte*[PLAYFIELD_LINES#0]) playfield_lines#0 (void()) render_current() @@ -3055,11 +3199,34 @@ SYMBOL TABLE SSA (byte*) render_playfield::line#0 (byte*) render_playfield::line#1 (byte*) render_playfield::line#2 -(byte*[$2]) screen_lines -(byte*[$2]) screen_lines#0 +(byte*[$23]) screen_lines +(byte*[$23]) screen_lines#0 +(byte()) sid_rnd() +(label) sid_rnd::@return +(byte) sid_rnd::return +(byte) sid_rnd::return#0 +(byte) sid_rnd::return#1 +(byte) sid_rnd::return#2 +(byte) sid_rnd::return#3 +(byte) sid_rnd::return#4 +(void()) sid_rnd_init() +(label) sid_rnd_init::@return (void()) spawn_current() -(byte*~) spawn_current::$0 +(bool~) spawn_current::$0 +(byte~) spawn_current::$1 +(byte~) spawn_current::$2 +(byte~) spawn_current::$3 +(byte*~) spawn_current::$4 +(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#0 +(byte) spawn_current::piece_idx#1 +(byte) spawn_current::piece_idx#2 +(byte) spawn_current::piece_idx#3 Inversing boolean not (bool~) keyboard_event_scan::$6 ← (byte~) keyboard_event_scan::$4 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) keyboard_event_scan::$8 ← (byte) keyboard_events_size#10 == (byte/signed byte/word/signed word/dword/signed dword) 8 from (bool~) keyboard_event_scan::$7 ← (byte) keyboard_events_size#10 != (byte/signed byte/word/signed word/dword/signed dword) 8 @@ -3067,22 +3234,22 @@ Inversing boolean not (bool~) keyboard_event_scan::$16 ← (byte~) keyboard_even Inversing boolean not (bool~) keyboard_event_scan::$20 ← (byte~) keyboard_event_scan::$18 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) keyboard_event_scan::$19 ← (byte~) keyboard_event_scan::$18 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) keyboard_event_scan::$24 ← (byte~) keyboard_event_scan::$22 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) keyboard_event_scan::$23 ← (byte~) keyboard_event_scan::$22 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) keyboard_event_scan::$28 ← (byte~) keyboard_event_scan::$26 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) keyboard_event_scan::$27 ← (byte~) keyboard_event_scan::$26 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) main::$12 ← (byte) main::render#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$11 ← (byte) main::render#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) main::$13 ← (byte) main::render#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$12 ← (byte) main::render#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) play_move_down::$1 ← (byte) play_move_down::key_event#1 != (byte) KEY_SPACE#0 from (bool~) play_move_down::$0 ← (byte) play_move_down::key_event#1 == (byte) KEY_SPACE#0 Inversing boolean not (bool~) play_move_down::$4 ← (byte~) play_move_down::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_move_down::$3 ← (byte~) play_move_down::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) play_move_down::$8 ← (byte) current_movedown_counter#10 < (byte) current_movedown_rate#0 from (bool~) play_move_down::$7 ← (byte) current_movedown_counter#10 >= (byte) current_movedown_rate#0 -Inversing boolean not (bool~) play_move_down::$6 ← (byte) current_movedown_counter#11 < (byte) current_movedown_rate_fast#0 from (bool~) play_move_down::$5 ← (byte) current_movedown_counter#11 >= (byte) current_movedown_rate_fast#0 +Inversing boolean not (bool~) play_move_down::$8 ← (byte) current_movedown_counter#10 < (byte) current_movedown_slow#0 from (bool~) play_move_down::$7 ← (byte) current_movedown_counter#10 >= (byte) current_movedown_slow#0 +Inversing boolean not (bool~) play_move_down::$6 ← (byte) current_movedown_counter#11 < (byte) current_movedown_fast#0 from (bool~) play_move_down::$5 ← (byte) current_movedown_counter#11 >= (byte) current_movedown_fast#0 Inversing boolean not (bool~) play_move_down::$10 ← (byte) play_move_down::movedown#6 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_move_down::$9 ← (byte) play_move_down::movedown#6 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) play_move_leftright::$10 ← (byte~) play_move_leftright::$8 != (byte) COLLISION_NONE#0 from (bool~) play_move_leftright::$9 ← (byte~) play_move_leftright::$8 == (byte) COLLISION_NONE#0 Inversing boolean not (bool~) play_move_leftright::$2 ← (byte) play_move_leftright::key_event#2 != (byte) KEY_DOT#0 from (bool~) play_move_leftright::$1 ← (byte) play_move_leftright::key_event#2 == (byte) KEY_DOT#0 Inversing boolean not (bool~) play_move_leftright::$6 ← (byte~) play_move_leftright::$4 != (byte) COLLISION_NONE#0 from (bool~) play_move_leftright::$5 ← (byte~) play_move_leftright::$4 == (byte) COLLISION_NONE#0 -Inversing boolean not (bool~) play_move_rotate::$10 ← (byte~) play_move_rotate::$8 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_move_rotate::$9 ← (byte~) play_move_rotate::$8 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) play_move_rotate::$8 ← (byte~) play_move_rotate::$6 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_move_rotate::$7 ← (byte~) play_move_rotate::$6 == (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) collision::$3 ← *((byte*) collision::piece_gfx#1 + (byte) collision::i#2) == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) collision::$2 ← *((byte*) collision::piece_gfx#1 + (byte) collision::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) collision::$6 ← (byte) collision::ypos2#3 < (byte/signed word/word/dword/signed dword~) collision::$4 from (bool~) collision::$5 ← (byte) collision::ypos2#3 >= (byte/signed word/word/dword/signed dword~) collision::$4 Inversing boolean not (bool~) collision::$9 ← (byte~) collision::$7 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) collision::$8 ← (byte~) collision::$7 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) collision::$11 ← (byte) collision::col#4 < (byte) PLAYFIELD_COLS#0 from (bool~) collision::$10 ← (byte) collision::col#4 >= (byte) PLAYFIELD_COLS#0 Inversing boolean not (bool~) collision::$13 ← *((byte*) collision::playfield_line#1 + (byte) collision::col#5) == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) collision::$12 ← *((byte*) collision::playfield_line#1 + (byte) collision::col#5) != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) lock_current::$3 ← (byte) lock_current::cell#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) lock_current::$2 ← (byte) lock_current::cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) lock_current::$2 ← *((byte*) current_piece_gfx#19 + (byte) lock_current::i#2) == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) lock_current::$1 ← *((byte*) current_piece_gfx#19 + (byte) lock_current::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) render_current::$3 ← (byte) render_current::ypos2#2 >= (byte/signed word/word/dword/signed dword~) render_current::$1 from (bool~) render_current::$2 ← (byte) render_current::ypos2#2 < (byte/signed word/word/dword/signed dword~) render_current::$1 Inversing boolean not (bool~) render_current::$5 ← (byte) render_current::current_cell#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) render_current::$4 ← (byte) render_current::current_cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) render_current::$7 ← (byte) render_current::xpos#3 >= (byte) PLAYFIELD_COLS#0 from (bool~) render_current::$6 ← (byte) render_current::xpos#3 < (byte) PLAYFIELD_COLS#0 @@ -3093,7 +3260,7 @@ Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_p Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 Alias (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#3 (byte) keyboard_event_scan::row#8 (byte) keyboard_event_scan::row#7 Alias (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#7 (byte) keyboard_event_scan::keycode#12 (byte) keyboard_event_scan::keycode#3 -Alias (byte) keyboard_events_size#29 = (byte) keyboard_events_size#36 (byte) keyboard_events_size#45 (byte) keyboard_events_size#59 +Alias (byte) keyboard_events_size#29 = (byte) keyboard_events_size#36 (byte) keyboard_events_size#45 (byte) keyboard_events_size#60 Alias (byte) keyboard_event_scan::row_scan#0 = (byte~) keyboard_event_scan::$0 (byte) keyboard_event_scan::row_scan#4 Alias (byte) keyboard_event_scan::keycode#1 = (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$2 Alias (byte) keyboard_events_size#10 = (byte) keyboard_events_size#21 (byte) keyboard_events_size#37 (byte) keyboard_events_size#22 (byte) keyboard_events_size#11 (byte) keyboard_events_size#12 @@ -3105,17 +3272,17 @@ Alias (byte) keyboard_event_scan::event_type#0 = (byte~) keyboard_event_scan::$9 Alias (byte) keyboard_event_scan::row_scan#3 = (byte) keyboard_event_scan::row_scan#5 Alias (byte) keyboard_event_scan::row#6 = (byte) keyboard_event_scan::row#9 Alias (byte) keyboard_event_scan::keycode#15 = (byte) keyboard_event_scan::keycode#2 -Alias (byte) keyboard_events_size#30 = (byte) keyboard_events_size#60 -Alias (byte) keyboard_events_size#54 = (byte) keyboard_events_size#67 (byte) keyboard_events_size#66 (byte) keyboard_events_size#65 +Alias (byte) keyboard_events_size#30 = (byte) keyboard_events_size#61 +Alias (byte) keyboard_events_size#55 = (byte) keyboard_events_size#69 (byte) keyboard_events_size#68 (byte) keyboard_events_size#67 Alias (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#7 Alias (byte) keyboard_modifiers#1 = (byte) keyboard_modifiers#18 (byte) keyboard_modifiers#10 Alias (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#8 Alias (byte) keyboard_modifiers#11 = (byte) keyboard_modifiers#19 (byte) keyboard_modifiers#26 -Alias (byte) keyboard_events_size#61 = (byte) keyboard_events_size#62 (byte) keyboard_events_size#64 +Alias (byte) keyboard_events_size#62 = (byte) keyboard_events_size#63 (byte) keyboard_events_size#65 Alias (byte) keyboard_modifiers#2 = (byte~) keyboard_event_scan::$17 Alias (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#9 Alias (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#20 (byte) keyboard_modifiers#27 -Alias (byte) keyboard_events_size#46 = (byte) keyboard_events_size#47 (byte) keyboard_events_size#55 +Alias (byte) keyboard_events_size#46 = (byte) keyboard_events_size#47 (byte) keyboard_events_size#56 Alias (byte) keyboard_modifiers#3 = (byte~) keyboard_event_scan::$21 Alias (byte) keyboard_event_pressed::return#10 = (byte) keyboard_event_pressed::return#3 Alias (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#21 (byte) keyboard_modifiers#28 (byte) keyboard_modifiers#22 @@ -3128,122 +3295,124 @@ Alias (byte) keyboard_event_pressed::return#11 = (byte) keyboard_event_pressed:: Alias (byte) keyboard_events_size#14 = (byte) keyboard_events_size#25 (byte) keyboard_events_size#15 Alias (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#4 Alias (byte) keyboard_events_size#16 = (byte) keyboard_events_size#5 -Alias (byte) keyboard_events_size#0 = (byte) keyboard_events_size#44 (byte) keyboard_events_size#35 (byte) keyboard_events_size#28 -Alias (byte) keyboard_modifiers#0 = (byte) keyboard_modifiers#38 (byte) keyboard_modifiers#32 (byte) keyboard_modifiers#25 -Alias (byte*) current_piece#18 = (byte*) current_piece#30 -Alias (byte) current_piece_orientation#26 = (byte) current_piece_orientation#41 -Alias (byte*) current_piece_gfx#23 = (byte*) current_piece_gfx#37 -Alias (byte) current_piece_color#18 = (byte) current_piece_color#27 -Alias (byte) current_xpos#30 = (byte) current_xpos#47 -Alias (byte) current_ypos#24 = (byte) current_ypos#41 -Alias (byte) keyboard_events_size#33 = (byte) keyboard_events_size#56 (byte) keyboard_events_size#63 (byte) keyboard_events_size#48 (byte) keyboard_events_size#39 -Alias (byte) keyboard_modifiers#30 = (byte) keyboard_modifiers#44 (byte) keyboard_modifiers#47 (byte) keyboard_modifiers#39 (byte) keyboard_modifiers#33 -Alias (byte) current_movedown_counter#22 = (byte) current_movedown_counter#37 (byte) current_movedown_counter#41 (byte) current_movedown_counter#33 (byte) current_movedown_counter#27 -Alias (byte*) current_piece#1 = (byte*) current_piece#9 (byte*) current_piece#42 (byte*) current_piece#32 -Alias (byte) current_piece_orientation#1 = (byte) current_piece_orientation#12 (byte) current_piece_orientation#51 (byte) current_piece_orientation#43 -Alias (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#12 (byte*) current_piece_gfx#53 (byte*) current_piece_gfx#39 -Alias (byte) current_piece_color#1 = (byte) current_piece_color#9 (byte) current_piece_color#38 (byte) current_piece_color#29 -Alias (byte) current_xpos#1 = (byte) current_xpos#13 (byte) current_xpos#65 (byte) current_xpos#49 -Alias (byte) current_ypos#1 = (byte) current_ypos#10 (byte) current_ypos#38 (byte) current_ypos#43 -Alias (byte) keyboard_events_size#19 = (byte) keyboard_events_size#49 (byte) keyboard_events_size#27 (byte) keyboard_events_size#8 -Alias (byte) keyboard_modifiers#16 = (byte) keyboard_modifiers#40 (byte) keyboard_modifiers#24 (byte) keyboard_modifiers#8 +Alias (byte) keyboard_events_size#0 = (byte) keyboard_events_size#48 (byte) keyboard_events_size#44 (byte) keyboard_events_size#35 (byte) keyboard_events_size#28 +Alias (byte) keyboard_modifiers#0 = (byte) keyboard_modifiers#39 (byte) keyboard_modifiers#38 (byte) keyboard_modifiers#32 (byte) keyboard_modifiers#25 +Alias (byte) sid_rnd::return#0 = (byte) sid_rnd::return#3 (byte) sid_rnd::return#1 +Alias (byte*) SCREEN#2 = (byte*) SCREEN#3 +Alias (byte*) current_piece#18 = (byte*) current_piece#30 (byte*) current_piece#42 +Alias (byte) current_orientation#26 = (byte) current_orientation#41 (byte) current_orientation#51 +Alias (byte*) current_piece_gfx#23 = (byte*) current_piece_gfx#37 (byte*) current_piece_gfx#53 +Alias (byte) current_xpos#30 = (byte) current_xpos#48 (byte) current_xpos#65 +Alias (byte) current_ypos#24 = (byte) current_ypos#40 (byte) current_ypos#50 +Alias (byte) current_piece_color#18 = (byte) current_piece_color#27 (byte) current_piece_color#38 +Alias (byte) keyboard_events_size#33 = (byte) keyboard_events_size#64 (byte) keyboard_events_size#66 (byte) keyboard_events_size#57 (byte) keyboard_events_size#49 (byte) keyboard_events_size#39 +Alias (byte) keyboard_modifiers#30 = (byte) keyboard_modifiers#48 (byte) keyboard_modifiers#50 (byte) keyboard_modifiers#45 (byte) keyboard_modifiers#40 (byte) keyboard_modifiers#33 +Alias (byte) current_movedown_counter#22 = (byte) current_movedown_counter#41 (byte) current_movedown_counter#44 (byte) current_movedown_counter#37 (byte) current_movedown_counter#33 (byte) current_movedown_counter#27 +Alias (byte*) current_piece#1 = (byte*) current_piece#9 (byte*) current_piece#43 (byte*) current_piece#32 +Alias (byte) current_orientation#1 = (byte) current_orientation#12 (byte) current_orientation#52 (byte) current_orientation#43 +Alias (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#12 (byte*) current_piece_gfx#54 (byte*) current_piece_gfx#39 +Alias (byte) current_xpos#1 = (byte) current_xpos#13 (byte) current_xpos#66 (byte) current_xpos#50 +Alias (byte) current_ypos#1 = (byte) current_ypos#10 (byte) current_ypos#37 (byte) current_ypos#42 +Alias (byte) current_piece_color#1 = (byte) current_piece_color#9 (byte) current_piece_color#39 (byte) current_piece_color#29 +Alias (byte) keyboard_events_size#19 = (byte) keyboard_events_size#50 (byte) keyboard_events_size#27 (byte) keyboard_events_size#8 +Alias (byte) keyboard_modifiers#16 = (byte) keyboard_modifiers#41 (byte) keyboard_modifiers#24 (byte) keyboard_modifiers#8 Alias (byte) current_movedown_counter#15 = (byte) current_movedown_counter#42 (byte) current_movedown_counter#8 (byte) current_movedown_counter#2 -Alias (byte) current_ypos#12 = (byte) current_ypos#69 (byte) current_ypos#26 (byte) current_ypos#3 -Alias (byte*) current_piece#11 = (byte*) current_piece#62 (byte*) current_piece#20 (byte*) current_piece#3 -Alias (byte) current_piece_orientation#15 = (byte) current_piece_orientation#68 (byte) current_piece_orientation#29 (byte) current_piece_orientation#4 -Alias (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#77 (byte*) current_piece_gfx#26 (byte*) current_piece_gfx#4 -Alias (byte) current_piece_color#11 = (byte) current_piece_color#65 (byte) current_piece_color#20 (byte) current_piece_color#3 -Alias (byte) current_xpos#16 = (byte) current_xpos#89 (byte) current_xpos#32 (byte) current_xpos#4 -Alias (byte) keyboard_events_size#40 = (byte) keyboard_events_size#50 -Alias (byte) keyboard_modifiers#34 = (byte) keyboard_modifiers#41 +Alias (byte) current_ypos#12 = (byte) current_ypos#65 (byte) current_ypos#26 (byte) current_ypos#3 +Alias (byte*) current_piece#11 = (byte*) current_piece#63 (byte*) current_piece#20 (byte*) current_piece#3 +Alias (byte) current_orientation#15 = (byte) current_orientation#69 (byte) current_orientation#29 (byte) current_orientation#4 +Alias (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#78 (byte*) current_piece_gfx#26 (byte*) current_piece_gfx#4 +Alias (byte) current_xpos#16 = (byte) current_xpos#90 (byte) current_xpos#32 (byte) current_xpos#4 +Alias (byte) current_piece_color#11 = (byte) current_piece_color#66 (byte) current_piece_color#20 (byte) current_piece_color#3 +Alias (byte) keyboard_events_size#40 = (byte) keyboard_events_size#51 +Alias (byte) keyboard_modifiers#34 = (byte) keyboard_modifiers#42 Alias (byte) current_movedown_counter#38 = (byte) current_movedown_counter#43 -Alias (byte) current_ypos#65 = (byte) current_ypos#70 -Alias (byte*) current_piece#57 = (byte*) current_piece#63 -Alias (byte) current_piece_orientation#63 = (byte) current_piece_orientation#69 -Alias (byte*) current_piece_gfx#72 = (byte*) current_piece_gfx#78 -Alias (byte) current_piece_color#58 = (byte) current_piece_color#66 -Alias (byte) current_xpos#84 = (byte) current_xpos#90 +Alias (byte) current_ypos#61 = (byte) current_ypos#66 +Alias (byte*) current_piece#58 = (byte*) current_piece#64 +Alias (byte) current_orientation#64 = (byte) current_orientation#70 +Alias (byte*) current_piece_gfx#73 = (byte*) current_piece_gfx#79 +Alias (byte) current_xpos#85 = (byte) current_xpos#91 +Alias (byte) current_piece_color#59 = (byte) current_piece_color#67 Alias (byte) keyboard_events_size#26 = (byte) keyboard_events_size#41 (byte) keyboard_events_size#34 Alias (byte) keyboard_modifiers#23 = (byte) keyboard_modifiers#35 (byte) keyboard_modifiers#31 Alias (byte) current_movedown_counter#14 = (byte) current_movedown_counter#39 (byte) current_movedown_counter#34 (byte) current_movedown_counter#28 (byte) current_movedown_counter#23 -Alias (byte) current_ypos#25 = (byte) current_ypos#66 (byte) current_ypos#62 (byte) current_ypos#53 (byte) current_ypos#44 -Alias (byte*) current_piece#19 = (byte*) current_piece#58 (byte*) current_piece#51 (byte*) current_piece#43 (byte*) current_piece#33 -Alias (byte) current_piece_orientation#27 = (byte) current_piece_orientation#64 (byte) current_piece_orientation#59 (byte) current_piece_orientation#52 (byte) current_piece_orientation#44 -Alias (byte*) current_piece_gfx#24 = (byte*) current_piece_gfx#73 (byte*) current_piece_gfx#64 (byte*) current_piece_gfx#54 (byte*) current_piece_gfx#40 -Alias (byte) current_piece_color#19 = (byte) current_piece_color#59 (byte) current_piece_color#49 (byte) current_piece_color#39 (byte) current_piece_color#30 -Alias (byte) current_xpos#31 = (byte) current_xpos#85 (byte) current_xpos#77 (byte) current_xpos#66 (byte) current_xpos#50 +Alias (byte) current_ypos#25 = (byte) current_ypos#62 (byte) current_ypos#58 (byte) current_ypos#51 (byte) current_ypos#43 +Alias (byte*) current_piece#19 = (byte*) current_piece#59 (byte*) current_piece#52 (byte*) current_piece#44 (byte*) current_piece#33 +Alias (byte) current_orientation#27 = (byte) current_orientation#65 (byte) current_orientation#60 (byte) current_orientation#53 (byte) current_orientation#44 +Alias (byte*) current_piece_gfx#24 = (byte*) current_piece_gfx#74 (byte*) current_piece_gfx#65 (byte*) current_piece_gfx#55 (byte*) current_piece_gfx#40 +Alias (byte) current_xpos#31 = (byte) current_xpos#86 (byte) current_xpos#78 (byte) current_xpos#67 (byte) current_xpos#51 +Alias (byte) current_piece_color#19 = (byte) current_piece_color#60 (byte) current_piece_color#50 (byte) current_piece_color#40 (byte) current_piece_color#30 Alias (byte) keyboard_events_size#17 = (byte) keyboard_events_size#6 -Alias (byte) keyboard_modifiers#15 = (byte) keyboard_modifiers#7 (byte) keyboard_modifiers#48 (byte) keyboard_modifiers#45 (byte) keyboard_modifiers#42 (byte) keyboard_modifiers#36 (byte) keyboard_modifiers#46 (byte) keyboard_modifiers#43 (byte) keyboard_modifiers#37 +Alias (byte) keyboard_modifiers#15 = (byte) keyboard_modifiers#7 (byte) keyboard_modifiers#49 (byte) keyboard_modifiers#46 (byte) keyboard_modifiers#43 (byte) keyboard_modifiers#36 (byte) keyboard_modifiers#47 (byte) keyboard_modifiers#44 (byte) keyboard_modifiers#37 Alias (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#5 -Alias (byte) keyboard_events_size#18 = (byte) keyboard_events_size#7 (byte) keyboard_events_size#57 (byte) keyboard_events_size#51 (byte) keyboard_events_size#42 (byte) keyboard_events_size#58 (byte) keyboard_events_size#52 (byte) keyboard_events_size#43 -Alias (byte) main::key_event#0 = (byte~) main::$7 (byte) main::key_event#1 (byte) main::key_event#2 +Alias (byte) keyboard_events_size#18 = (byte) keyboard_events_size#7 (byte) keyboard_events_size#58 (byte) keyboard_events_size#52 (byte) keyboard_events_size#42 (byte) keyboard_events_size#59 (byte) keyboard_events_size#53 (byte) keyboard_events_size#43 +Alias (byte) main::key_event#0 = (byte~) main::$8 (byte) main::key_event#1 (byte) main::key_event#2 Alias (byte) play_move_down::return#0 = (byte) play_move_down::return#4 Alias (byte) main::render#0 = (byte) main::render#4 Alias (byte) current_movedown_counter#1 = (byte) current_movedown_counter#7 (byte) current_movedown_counter#35 (byte) current_movedown_counter#29 (byte) current_movedown_counter#40 (byte) current_movedown_counter#36 (byte) current_movedown_counter#30 -Alias (byte) current_ypos#11 = (byte) current_ypos#2 (byte) current_ypos#59 (byte) current_ypos#54 (byte) current_ypos#45 (byte) current_ypos#39 (byte) current_ypos#55 -Alias (byte*) current_piece#10 = (byte*) current_piece#2 (byte*) current_piece#52 (byte*) current_piece#44 (byte*) current_piece#59 (byte*) current_piece#53 (byte*) current_piece#45 -Alias (byte) current_piece_orientation#13 = (byte) current_piece_orientation#2 (byte) current_piece_orientation#28 +Alias (byte) current_ypos#11 = (byte) current_ypos#2 (byte) current_ypos#57 (byte) current_ypos#52 (byte) current_ypos#44 (byte) current_ypos#38 (byte) current_ypos#53 +Alias (byte*) current_piece#10 = (byte*) current_piece#2 (byte*) current_piece#53 (byte*) current_piece#45 (byte*) current_piece#60 (byte*) current_piece#54 (byte*) current_piece#46 +Alias (byte) current_orientation#13 = (byte) current_orientation#2 (byte) current_orientation#28 Alias (byte*) current_piece_gfx#13 = (byte*) current_piece_gfx#2 (byte*) current_piece_gfx#25 -Alias (byte) current_piece_color#10 = (byte) current_piece_color#2 (byte) current_piece_color#50 (byte) current_piece_color#40 (byte) current_piece_color#60 (byte) current_piece_color#51 (byte) current_piece_color#41 Alias (byte) current_xpos#14 = (byte) current_xpos#2 +Alias (byte) current_piece_color#10 = (byte) current_piece_color#2 (byte) current_piece_color#51 (byte) current_piece_color#41 (byte) current_piece_color#61 (byte) current_piece_color#52 (byte) current_piece_color#42 Alias (byte) play_move_leftright::return#0 = (byte) play_move_leftright::return#5 Alias (byte) main::render#1 = (byte) main::render#5 -Alias (byte) current_xpos#15 = (byte) current_xpos#3 (byte) current_xpos#67 (byte) current_xpos#78 (byte) current_xpos#75 (byte) current_xpos#68 +Alias (byte) current_xpos#15 = (byte) current_xpos#3 (byte) current_xpos#68 (byte) current_xpos#79 (byte) current_xpos#76 (byte) current_xpos#69 Alias (byte) play_move_rotate::return#0 = (byte) play_move_rotate::return#5 Alias (byte) main::render#2 = (byte) main::render#6 -Alias (byte) current_piece_orientation#14 = (byte) current_piece_orientation#3 (byte) current_piece_orientation#65 (byte) current_piece_orientation#60 (byte) current_piece_orientation#53 -Alias (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#3 (byte*) current_piece_gfx#74 (byte*) current_piece_gfx#65 (byte*) current_piece_gfx#55 +Alias (byte) current_orientation#14 = (byte) current_orientation#3 (byte) current_orientation#66 (byte) current_orientation#61 (byte) current_orientation#54 +Alias (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#3 (byte*) current_piece_gfx#75 (byte*) current_piece_gfx#66 (byte*) current_piece_gfx#56 Alias (byte) keyboard_event_pressed::return#12 = (byte) keyboard_event_pressed::return#6 Alias (byte) current_movedown_counter#11 = (byte) current_movedown_counter#17 (byte) current_movedown_counter#24 (byte) current_movedown_counter#18 (byte) current_movedown_counter#16 Alias (byte) play_move_down::movedown#10 = (byte) play_move_down::movedown#12 (byte) play_move_down::movedown#8 (byte) play_move_down::movedown#11 (byte) play_move_down::movedown#5 -Alias (byte) current_ypos#56 = (byte) current_ypos#57 (byte) current_ypos#63 (byte) current_ypos#64 (byte) current_ypos#58 -Alias (byte) current_xpos#69 = (byte) current_xpos#70 (byte) current_xpos#79 (byte) current_xpos#80 (byte) current_xpos#71 -Alias (byte) current_piece_orientation#54 = (byte) current_piece_orientation#55 (byte) current_piece_orientation#61 (byte) current_piece_orientation#62 (byte) current_piece_orientation#56 -Alias (byte*) current_piece#54 = (byte*) current_piece#55 (byte*) current_piece#60 (byte*) current_piece#61 (byte*) current_piece#56 -Alias (byte*) current_piece_gfx#66 = (byte*) current_piece_gfx#67 (byte*) current_piece_gfx#75 (byte*) current_piece_gfx#76 (byte*) current_piece_gfx#68 -Alias (byte) current_piece_color#52 = (byte) current_piece_color#53 (byte) current_piece_color#61 (byte) current_piece_color#62 (byte) current_piece_color#54 +Alias (byte) current_ypos#54 = (byte) current_ypos#55 (byte) current_ypos#59 (byte) current_ypos#60 (byte) current_ypos#56 +Alias (byte) current_xpos#70 = (byte) current_xpos#71 (byte) current_xpos#80 (byte) current_xpos#81 (byte) current_xpos#72 +Alias (byte) current_orientation#55 = (byte) current_orientation#56 (byte) current_orientation#62 (byte) current_orientation#63 (byte) current_orientation#57 +Alias (byte*) current_piece#55 = (byte*) current_piece#56 (byte*) current_piece#61 (byte*) current_piece#62 (byte*) current_piece#57 +Alias (byte*) current_piece_gfx#67 = (byte*) current_piece_gfx#68 (byte*) current_piece_gfx#76 (byte*) current_piece_gfx#77 (byte*) current_piece_gfx#69 +Alias (byte) current_piece_color#53 = (byte) current_piece_color#54 (byte) current_piece_color#62 (byte) current_piece_color#63 (byte) current_piece_color#55 Alias (byte) play_move_down::movedown#0 = (byte) play_move_down::movedown#4 Alias (byte) current_movedown_counter#3 = (byte) current_movedown_counter#31 -Alias (byte) current_ypos#67 = (byte) current_ypos#68 -Alias (byte) current_xpos#86 = (byte) current_xpos#87 -Alias (byte) current_piece_orientation#66 = (byte) current_piece_orientation#67 -Alias (byte*) current_piece#64 = (byte*) current_piece#65 -Alias (byte*) current_piece_gfx#79 = (byte*) current_piece_gfx#80 -Alias (byte) current_piece_color#67 = (byte) current_piece_color#68 +Alias (byte) current_ypos#63 = (byte) current_ypos#64 +Alias (byte) current_xpos#87 = (byte) current_xpos#88 +Alias (byte) current_orientation#67 = (byte) current_orientation#68 +Alias (byte*) current_piece#65 = (byte*) current_piece#66 +Alias (byte*) current_piece_gfx#80 = (byte*) current_piece_gfx#81 +Alias (byte) current_piece_color#68 = (byte) current_piece_color#69 Alias (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#9 -Alias (byte) current_ypos#46 = (byte) current_ypos#47 -Alias (byte) current_xpos#51 = (byte) current_xpos#52 -Alias (byte) current_piece_orientation#45 = (byte) current_piece_orientation#46 +Alias (byte) current_ypos#45 = (byte) current_ypos#46 +Alias (byte) current_xpos#52 = (byte) current_xpos#53 +Alias (byte) current_orientation#45 = (byte) current_orientation#46 Alias (byte) current_movedown_counter#10 = (byte) current_movedown_counter#32 -Alias (byte*) current_piece#46 = (byte*) current_piece#47 -Alias (byte*) current_piece_gfx#56 = (byte*) current_piece_gfx#57 -Alias (byte) current_piece_color#42 = (byte) current_piece_color#43 +Alias (byte*) current_piece#47 = (byte*) current_piece#48 +Alias (byte*) current_piece_gfx#57 = (byte*) current_piece_gfx#58 +Alias (byte) current_piece_color#43 = (byte) current_piece_color#44 Alias (byte) current_movedown_counter#19 = (byte) current_movedown_counter#25 -Alias (byte) current_ypos#13 = (byte) current_ypos#30 (byte) current_ypos#27 (byte) current_ypos#28 (byte) current_ypos#14 (byte) current_ypos#48 (byte) current_ypos#29 -Alias (byte*) current_piece#21 = (byte*) current_piece#22 (byte*) current_piece#34 (byte*) current_piece#25 (byte*) current_piece#48 (byte*) current_piece#36 (byte*) current_piece#35 -Alias (byte) current_piece_orientation#16 = (byte) current_piece_orientation#32 (byte) current_piece_orientation#30 (byte) current_piece_orientation#57 (byte) current_piece_orientation#48 (byte) current_piece_orientation#47 (byte) current_piece_orientation#31 -Alias (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#28 (byte*) current_piece_gfx#41 (byte*) current_piece_gfx#69 (byte*) current_piece_gfx#58 (byte*) current_piece_gfx#43 (byte*) current_piece_gfx#42 -Alias (byte) current_piece_color#21 = (byte) current_piece_color#22 (byte) current_piece_color#31 (byte) current_piece_color#55 (byte) current_piece_color#44 (byte) current_piece_color#33 (byte) current_piece_color#32 -Alias (byte) current_xpos#17 = (byte) current_xpos#35 (byte) current_xpos#33 (byte) current_xpos#72 (byte) current_xpos#54 (byte) current_xpos#53 (byte) current_xpos#34 +Alias (byte) current_ypos#13 = (byte) current_ypos#30 (byte) current_ypos#27 (byte) current_ypos#28 (byte) current_ypos#14 (byte) current_ypos#36 (byte) current_ypos#29 +Alias (byte*) current_piece#21 = (byte*) current_piece#22 (byte*) current_piece#34 (byte*) current_piece#25 (byte*) current_piece#49 (byte*) current_piece#36 (byte*) current_piece#35 +Alias (byte) current_orientation#16 = (byte) current_orientation#32 (byte) current_orientation#30 (byte) current_orientation#58 (byte) current_orientation#48 (byte) current_orientation#47 (byte) current_orientation#31 +Alias (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#28 (byte*) current_piece_gfx#41 (byte*) current_piece_gfx#70 (byte*) current_piece_gfx#59 (byte*) current_piece_gfx#43 (byte*) current_piece_gfx#42 +Alias (byte) current_xpos#17 = (byte) current_xpos#35 (byte) current_xpos#33 (byte) current_xpos#73 (byte) current_xpos#55 (byte) current_xpos#54 (byte) current_xpos#34 +Alias (byte) current_piece_color#21 = (byte) current_piece_color#22 (byte) current_piece_color#31 (byte) current_piece_color#56 (byte) current_piece_color#45 (byte) current_piece_color#33 (byte) current_piece_color#32 Alias (byte) collision::ypos#0 = (byte/signed word/word/dword/signed dword~) play_move_down::$11 Alias (byte) collision::return#0 = (byte) collision::return#10 Alias (byte*) current_piece#12 = (byte*) current_piece#4 -Alias (byte) current_piece_orientation#17 = (byte) current_piece_orientation#5 +Alias (byte) current_orientation#17 = (byte) current_orientation#5 Alias (byte*) current_piece_gfx#16 = (byte*) current_piece_gfx#5 -Alias (byte) current_piece_color#12 = (byte) current_piece_color#4 Alias (byte) current_xpos#18 = (byte) current_xpos#5 Alias (byte) current_ypos#15 = (byte) current_ypos#5 +Alias (byte) current_piece_color#12 = (byte) current_piece_color#4 Alias (byte) play_move_down::return#3 = (byte) play_move_down::return#5 Alias (byte) current_movedown_counter#12 = (byte) current_movedown_counter#5 Alias (byte) current_ypos#16 = (byte) current_ypos#6 Alias (byte*) current_piece#13 = (byte*) current_piece#5 -Alias (byte) current_piece_orientation#18 = (byte) current_piece_orientation#6 +Alias (byte) current_orientation#18 = (byte) current_orientation#6 Alias (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#6 -Alias (byte) current_piece_color#13 = (byte) current_piece_color#5 Alias (byte) current_xpos#19 = (byte) current_xpos#6 -Alias (byte) current_xpos#20 = (byte) current_xpos#37 (byte) current_xpos#41 (byte) current_xpos#38 (byte) current_xpos#55 (byte) current_xpos#21 (byte) current_xpos#39 (byte) current_xpos#56 (byte) current_xpos#22 (byte) current_xpos#57 (byte) current_xpos#24 +Alias (byte) current_piece_color#13 = (byte) current_piece_color#5 +Alias (byte) current_xpos#20 = (byte) current_xpos#37 (byte) current_xpos#41 (byte) current_xpos#38 (byte) current_xpos#56 (byte) current_xpos#21 (byte) current_xpos#39 (byte) current_xpos#57 (byte) current_xpos#22 (byte) current_xpos#58 (byte) current_xpos#24 Alias (byte) current_ypos#17 = (byte) current_ypos#32 (byte) current_ypos#33 (byte) current_ypos#18 -Alias (byte) current_piece_orientation#19 = (byte) current_piece_orientation#34 (byte) current_piece_orientation#35 (byte) current_piece_orientation#20 +Alias (byte) current_orientation#19 = (byte) current_orientation#34 (byte) current_orientation#35 (byte) current_orientation#20 Alias (byte*) current_piece#26 = (byte*) current_piece#37 (byte*) current_piece#38 (byte*) current_piece#27 Alias (byte) collision::xpos#1 = (byte/signed word/word/dword/signed dword~) play_move_leftright::$7 Alias (byte) collision::return#1 = (byte) collision::return#11 @@ -3252,31 +3421,31 @@ Alias (byte) collision::xpos#2 = (byte/signed word/word/dword/signed dword~) pla Alias (byte) collision::return#12 = (byte) collision::return#2 Alias (byte) play_move_leftright::return#2 = (byte) play_move_leftright::return#6 Alias (byte) current_xpos#23 = (byte) current_xpos#8 -Alias (byte) current_piece_orientation#21 = (byte) current_piece_orientation#36 (byte) current_piece_orientation#37 (byte) current_piece_orientation#22 (byte) current_piece_orientation#39 -Alias (byte) current_xpos#42 = (byte) current_xpos#58 (byte) current_xpos#59 (byte) current_xpos#43 -Alias (byte) current_ypos#34 = (byte) current_ypos#49 (byte) current_ypos#50 (byte) current_ypos#35 -Alias (byte*) current_piece#39 = (byte*) current_piece#49 (byte*) current_piece#50 (byte*) current_piece#40 -Alias (byte*) current_piece_gfx#31 = (byte*) current_piece_gfx#70 (byte*) current_piece_gfx#59 (byte*) current_piece_gfx#44 (byte*) current_piece_gfx#71 +Alias (byte) current_orientation#21 = (byte) current_orientation#36 (byte) current_orientation#37 (byte) current_orientation#22 (byte) current_orientation#39 +Alias (byte) current_xpos#42 = (byte) current_xpos#59 (byte) current_xpos#60 (byte) current_xpos#43 +Alias (byte) current_ypos#34 = (byte) current_ypos#47 (byte) current_ypos#48 (byte) current_ypos#35 +Alias (byte*) current_piece#39 = (byte*) current_piece#50 (byte*) current_piece#51 (byte*) current_piece#40 +Alias (byte*) current_piece_gfx#31 = (byte*) current_piece_gfx#71 (byte*) current_piece_gfx#60 (byte*) current_piece_gfx#44 (byte*) current_piece_gfx#72 Alias (byte) play_move_rotate::orientation#1 = (byte/word/dword~) play_move_rotate::$5 Alias (byte) play_move_rotate::key_event#1 = (byte) play_move_rotate::key_event#2 Alias (byte) play_move_rotate::orientation#2 = (byte/word/dword~) play_move_rotate::$3 Alias (byte) play_move_rotate::return#2 = (byte) play_move_rotate::return#6 -Alias (byte) current_piece_orientation#23 = (byte) current_piece_orientation#7 +Alias (byte) current_orientation#23 = (byte) current_orientation#7 Alias (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#7 Alias (byte) collision::return#13 = (byte) collision::return#3 Alias (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#5 (byte) play_move_rotate::orientation#4 Alias (byte*) current_piece#14 = (byte*) current_piece#24 (byte*) current_piece#28 -Alias (byte) current_piece_orientation#38 = (byte) current_piece_orientation#49 (byte) current_piece_orientation#58 -Alias (byte*) current_piece_gfx#30 = (byte*) current_piece_gfx#45 (byte*) current_piece_gfx#60 -Alias (byte*) current_piece_gfx#8 = (byte*~) play_move_rotate::$11 +Alias (byte) current_orientation#38 = (byte) current_orientation#49 (byte) current_orientation#59 +Alias (byte*) current_piece_gfx#30 = (byte*) current_piece_gfx#45 (byte*) current_piece_gfx#61 +Alias (byte*) current_piece_gfx#8 = (byte*~) play_move_rotate::$9 Alias (byte*) current_piece#0 = (byte*) current_piece#41 (byte*) current_piece#29 -Alias (byte) current_piece_orientation#0 = (byte) current_piece_orientation#50 (byte) current_piece_orientation#40 +Alias (byte) current_orientation#0 = (byte) current_orientation#50 (byte) current_orientation#40 Alias (byte*) current_piece_gfx#0 = (byte*) current_piece_gfx#52 (byte*) current_piece_gfx#36 +Alias (byte) current_xpos#0 = (byte) current_xpos#64 (byte) current_xpos#47 +Alias (byte) current_ypos#0 = (byte) current_ypos#49 (byte) current_ypos#39 Alias (byte) current_piece_color#0 = (byte) current_piece_color#37 (byte) current_piece_color#26 -Alias (byte) current_xpos#0 = (byte) current_xpos#64 (byte) current_xpos#46 -Alias (byte) current_ypos#0 = (byte) current_ypos#52 (byte) current_ypos#40 Alias (byte) current_movedown_counter#0 = (byte) current_movedown_counter#26 (byte) current_movedown_counter#20 -Alias (byte*) SCREEN#0 = (byte*) SCREEN#4 (byte*) SCREEN#3 +Alias (byte*) SCREEN#0 = (byte*) SCREEN#5 (byte*) SCREEN#4 Alias (byte*) collision::piece_gfx#0 = (byte*~) collision::$0 Alias (byte) collision::ypos2#0 = (byte~) collision::$1 Alias (byte) collision::col#0 = (byte) collision::xpos#4 @@ -3294,28 +3463,31 @@ Alias (byte) collision::l#2 = (byte) collision::l#3 Alias (byte) collision::xpos#6 = (byte) collision::xpos#7 Alias (byte*) collision::piece_gfx#3 = (byte*) collision::piece_gfx#4 Alias (byte) collision::i#4 = (byte) collision::i#5 -Alias (byte) lock_current::line#0 = (byte~) lock_current::$0 -Alias (byte) current_xpos#26 = (byte) current_xpos#44 -Alias (byte) lock_current::c#3 = (byte) lock_current::c#4 +Alias (byte) lock_current::ypos2#0 = (byte~) lock_current::$0 Alias (byte) current_piece_color#14 = (byte) current_piece_color#24 Alias (byte*) lock_current::playfield_line#1 = (byte*) lock_current::playfield_line#2 +Alias (byte) lock_current::col#3 = (byte) lock_current::col#4 +Alias (byte) lock_current::c#3 = (byte) lock_current::c#4 Alias (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#48 Alias (byte) lock_current::i#1 = (byte) lock_current::i#6 -Alias (byte) lock_current::l#5 = (byte) lock_current::l#6 -Alias (byte) current_ypos#60 = (byte) current_ypos#61 -Alias (byte) lock_current::col#0 = (byte~) lock_current::$4 -Alias (byte) lock_current::l#3 = (byte) lock_current::l#4 -Alias (byte) current_ypos#37 = (byte) current_ypos#51 +Alias (byte) lock_current::ypos2#5 = (byte) lock_current::ypos2#6 +Alias (byte) lock_current::l#4 = (byte) lock_current::l#5 +Alias (byte) current_xpos#74 = (byte) current_xpos#75 +Alias (byte) lock_current::ypos2#3 = (byte) lock_current::ypos2#4 +Alias (byte) lock_current::l#2 = (byte) lock_current::l#3 +Alias (byte) current_xpos#45 = (byte) current_xpos#61 Alias (byte*) current_piece_gfx#33 = (byte*) current_piece_gfx#47 Alias (byte) lock_current::i#4 = (byte) lock_current::i#5 -Alias (byte) current_xpos#61 = (byte) current_xpos#74 -Alias (byte) current_piece_color#35 = (byte) current_piece_color#46 -Alias (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#9 (byte*~) spawn_current::$0 (byte*) current_piece_gfx#20 +Alias (byte) current_piece_color#35 = (byte) current_piece_color#47 +Alias (byte) sid_rnd::return#2 = (byte) sid_rnd::return#4 +Alias (byte) spawn_current::piece_idx#1 = (byte~) spawn_current::$2 +Alias (byte) spawn_current::piece_idx#2 = (byte) spawn_current::piece_idx#3 +Alias (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#9 (byte*~) spawn_current::$4 (byte*) current_piece_gfx#20 Alias (byte*) current_piece#16 = (byte*) current_piece#6 (byte*) current_piece#7 -Alias (byte) current_piece_orientation#10 = (byte) current_piece_orientation#24 (byte) current_piece_orientation#9 -Alias (byte) current_piece_color#15 = (byte) current_piece_color#6 (byte) current_piece_color#7 +Alias (byte) current_orientation#10 = (byte) current_orientation#24 (byte) current_orientation#9 Alias (byte) current_xpos#10 = (byte) current_xpos#27 (byte) current_xpos#11 Alias (byte) current_ypos#21 = (byte) current_ypos#7 (byte) current_ypos#8 +Alias (byte) current_piece_color#15 = (byte) current_piece_color#6 (byte) current_piece_color#7 Alias (byte*) init::li#0 = (byte*~) init::$3 Alias (byte*) init::line#0 = (byte*~) init::$10 Alias (byte*) init::line#2 = (byte*) init::line#3 @@ -3324,26 +3496,26 @@ Alias (byte) render_playfield::l#3 = (byte) render_playfield::l#4 Alias (byte) render_playfield::i#1 = (byte) render_playfield::i#4 Alias (byte) render_current::ypos2#0 = (byte~) render_current::$0 Alias (byte) render_current::ypos2#2 = (byte) render_current::ypos2#4 -Alias (byte) current_xpos#28 = (byte) current_xpos#45 +Alias (byte) current_xpos#28 = (byte) current_xpos#46 Alias (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#49 Alias (byte) render_current::i#4 = (byte) render_current::i#5 Alias (byte) render_current::l#3 = (byte) render_current::l#8 -Alias (byte) current_piece_color#48 = (byte) current_piece_color#56 +Alias (byte) current_piece_color#49 = (byte) current_piece_color#57 Alias (byte) render_current::xpos#3 = (byte) render_current::xpos#5 (byte) render_current::xpos#6 (byte) render_current::xpos#4 -Alias (byte) current_piece_color#16 = (byte) current_piece_color#25 (byte) current_piece_color#36 (byte) current_piece_color#57 +Alias (byte) current_piece_color#16 = (byte) current_piece_color#25 (byte) current_piece_color#36 (byte) current_piece_color#58 Alias (byte*) render_current::screen_line#1 = (byte*) render_current::screen_line#2 (byte*) render_current::screen_line#3 (byte*) render_current::screen_line#5 Alias (byte) render_current::c#3 = (byte) render_current::c#6 (byte) render_current::c#4 (byte) render_current::c#5 Alias (byte) render_current::ypos2#6 = (byte) render_current::ypos2#9 (byte) render_current::ypos2#7 (byte) render_current::ypos2#8 Alias (byte) render_current::l#5 = (byte) render_current::l#9 (byte) render_current::l#6 (byte) render_current::l#7 -Alias (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#63 (byte*) current_piece_gfx#50 (byte*) current_piece_gfx#51 +Alias (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#64 (byte*) current_piece_gfx#50 (byte*) current_piece_gfx#51 Alias (byte) render_current::i#1 = (byte) render_current::i#9 (byte) render_current::i#6 (byte) render_current::i#7 -Alias (byte) current_xpos#81 = (byte) current_xpos#88 (byte) current_xpos#82 (byte) current_xpos#83 +Alias (byte) current_xpos#82 = (byte) current_xpos#89 (byte) current_xpos#83 (byte) current_xpos#84 Alias (byte*) current_piece#17 = (byte*) current_piece#8 -Alias (byte) current_piece_orientation#11 = (byte) current_piece_orientation#25 +Alias (byte) current_orientation#11 = (byte) current_orientation#25 Alias (byte*) current_piece_gfx#11 = (byte*) current_piece_gfx#22 -Alias (byte) current_piece_color#17 = (byte) current_piece_color#8 Alias (byte) current_xpos#12 = (byte) current_xpos#29 Alias (byte) current_ypos#23 = (byte) current_ypos#9 +Alias (byte) current_piece_color#17 = (byte) current_piece_color#8 Alias (byte) keyboard_events_size#20 = (byte) keyboard_events_size#9 Alias (byte) keyboard_modifiers#17 = (byte) keyboard_modifiers#9 Alias (byte) current_movedown_counter#13 = (byte) current_movedown_counter#6 @@ -3352,28 +3524,28 @@ Alias (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keyco Alias (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#3 Alias (byte) keyboard_event_scan::row_scan#1 = (byte) keyboard_event_scan::row_scan#3 Alias (byte) keyboard_event_scan::row#10 = (byte) keyboard_event_scan::row#6 -Alias (byte) keyboard_events_size#13 = (byte) keyboard_events_size#61 (byte) keyboard_events_size#54 (byte) keyboard_events_size#46 (byte) keyboard_events_size#23 +Alias (byte) keyboard_events_size#13 = (byte) keyboard_events_size#62 (byte) keyboard_events_size#55 (byte) keyboard_events_size#46 (byte) keyboard_events_size#23 Alias (byte*) current_piece#10 = (byte*) current_piece#31 -Alias (byte) current_piece_orientation#14 = (byte) current_piece_orientation#42 +Alias (byte) current_orientation#14 = (byte) current_orientation#42 Alias (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#38 +Alias (byte) current_xpos#15 = (byte) current_xpos#49 +Alias (byte) current_ypos#11 = (byte) current_ypos#41 Alias (byte) current_piece_color#10 = (byte) current_piece_color#28 -Alias (byte) current_xpos#15 = (byte) current_xpos#48 -Alias (byte) current_ypos#11 = (byte) current_ypos#42 Alias (byte) keyboard_events_size#18 = (byte) keyboard_events_size#32 Alias (byte) keyboard_modifiers#15 = (byte) keyboard_modifiers#29 Alias (byte) current_movedown_counter#1 = (byte) current_movedown_counter#21 Alias (byte) current_movedown_counter#10 = (byte) current_movedown_counter#11 (byte) current_movedown_counter#3 (byte) current_movedown_counter#19 -Alias (byte) current_ypos#13 = (byte) current_ypos#56 (byte) current_ypos#67 (byte) current_ypos#46 -Alias (byte) current_xpos#17 = (byte) current_xpos#69 (byte) current_xpos#86 (byte) current_xpos#51 -Alias (byte) current_piece_orientation#16 = (byte) current_piece_orientation#54 (byte) current_piece_orientation#66 (byte) current_piece_orientation#45 -Alias (byte*) current_piece#21 = (byte*) current_piece#54 (byte*) current_piece#64 (byte*) current_piece#46 -Alias (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#66 (byte*) current_piece_gfx#79 (byte*) current_piece_gfx#56 -Alias (byte) current_piece_color#21 = (byte) current_piece_color#52 (byte) current_piece_color#67 (byte) current_piece_color#42 +Alias (byte) current_ypos#13 = (byte) current_ypos#54 (byte) current_ypos#63 (byte) current_ypos#45 +Alias (byte) current_xpos#17 = (byte) current_xpos#70 (byte) current_xpos#87 (byte) current_xpos#52 +Alias (byte) current_orientation#16 = (byte) current_orientation#55 (byte) current_orientation#67 (byte) current_orientation#45 +Alias (byte*) current_piece#21 = (byte*) current_piece#55 (byte*) current_piece#65 (byte*) current_piece#47 +Alias (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#67 (byte*) current_piece_gfx#80 (byte*) current_piece_gfx#57 +Alias (byte) current_piece_color#21 = (byte) current_piece_color#53 (byte) current_piece_color#68 (byte) current_piece_color#43 Alias (byte) current_xpos#20 = (byte) current_xpos#40 Alias (byte) current_xpos#25 = (byte) current_xpos#42 Alias (byte) current_ypos#19 = (byte) current_ypos#34 Alias (byte*) current_piece#14 = (byte*) current_piece#39 -Alias (byte) current_piece_orientation#21 = (byte) current_piece_orientation#38 +Alias (byte) current_orientation#21 = (byte) current_orientation#38 Alias (byte*) current_piece_gfx#30 = (byte*) current_piece_gfx#31 Alias (byte) collision::col#2 = (byte) collision::col#3 Alias (byte) collision::c#2 = (byte) collision::c#3 @@ -3383,22 +3555,23 @@ Alias (byte) collision::ypos2#10 = (byte) collision::ypos2#4 Alias (byte) collision::l#10 = (byte) collision::l#2 Alias (byte) collision::xpos#10 = (byte) collision::xpos#6 Alias (byte*) collision::playfield_line#1 = (byte*) collision::playfield_line#6 +Alias (byte) lock_current::col#2 = (byte) lock_current::col#3 Alias (byte) lock_current::c#2 = (byte) lock_current::c#3 Alias (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#33 Alias (byte) lock_current::i#1 = (byte) lock_current::i#4 -Alias (byte) lock_current::l#3 = (byte) lock_current::l#5 -Alias (byte) current_xpos#26 = (byte) current_xpos#61 +Alias (byte) lock_current::ypos2#3 = (byte) lock_current::ypos2#5 +Alias (byte) lock_current::l#2 = (byte) lock_current::l#4 Alias (byte) current_piece_color#14 = (byte) current_piece_color#35 Alias (byte*) lock_current::playfield_line#1 = (byte*) lock_current::playfield_line#3 -Alias (byte) current_ypos#37 = (byte) current_ypos#60 +Alias (byte) current_xpos#45 = (byte) current_xpos#74 Alias (byte) render_current::xpos#2 = (byte) render_current::xpos#3 Alias (byte) render_current::c#2 = (byte) render_current::c#3 Alias (byte) render_current::ypos2#5 = (byte) render_current::ypos2#6 Alias (byte) render_current::l#4 = (byte) render_current::l#5 Alias (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#34 Alias (byte) render_current::i#1 = (byte) render_current::i#3 -Alias (byte) current_xpos#76 = (byte) current_xpos#81 -Alias (byte) current_piece_color#16 = (byte) current_piece_color#47 +Alias (byte) current_xpos#77 = (byte) current_xpos#82 +Alias (byte) current_piece_color#16 = (byte) current_piece_color#48 Alias (byte*) render_current::screen_line#1 = (byte*) render_current::screen_line#4 Successful SSA optimization Pass2AliasElimination Self Phi Eliminated (byte) fill::val#2 @@ -3408,32 +3581,32 @@ Self Phi Eliminated (byte) keyboard_event_scan::row#10 Self Phi Eliminated (byte) keyboard_events_size#40 Self Phi Eliminated (byte) keyboard_modifiers#34 Self Phi Eliminated (byte) current_movedown_counter#38 -Self Phi Eliminated (byte) current_ypos#65 -Self Phi Eliminated (byte*) current_piece#57 -Self Phi Eliminated (byte) current_piece_orientation#63 -Self Phi Eliminated (byte*) current_piece_gfx#72 -Self Phi Eliminated (byte) current_piece_color#58 -Self Phi Eliminated (byte) current_xpos#84 +Self Phi Eliminated (byte) current_ypos#61 +Self Phi Eliminated (byte*) current_piece#58 +Self Phi Eliminated (byte) current_orientation#64 +Self Phi Eliminated (byte*) current_piece_gfx#73 +Self Phi Eliminated (byte) current_xpos#85 +Self Phi Eliminated (byte) current_piece_color#59 Self Phi Eliminated (byte) keyboard_events_size#26 Self Phi Eliminated (byte) keyboard_modifiers#23 Self Phi Eliminated (byte) current_movedown_counter#14 Self Phi Eliminated (byte) current_ypos#25 Self Phi Eliminated (byte*) current_piece#19 -Self Phi Eliminated (byte) current_piece_orientation#27 +Self Phi Eliminated (byte) current_orientation#27 Self Phi Eliminated (byte*) current_piece_gfx#24 -Self Phi Eliminated (byte) current_piece_color#19 Self Phi Eliminated (byte) current_xpos#31 +Self Phi Eliminated (byte) current_piece_color#19 Self Phi Eliminated (byte*) collision::piece_gfx#1 Self Phi Eliminated (byte) collision::ypos2#10 Self Phi Eliminated (byte) collision::l#10 Self Phi Eliminated (byte) collision::xpos#10 Self Phi Eliminated (byte*) collision::playfield_line#1 Self Phi Eliminated (byte*) current_piece_gfx#19 -Self Phi Eliminated (byte) current_xpos#26 Self Phi Eliminated (byte) current_piece_color#14 Self Phi Eliminated (byte*) lock_current::playfield_line#1 -Self Phi Eliminated (byte) lock_current::l#3 -Self Phi Eliminated (byte) current_ypos#37 +Self Phi Eliminated (byte) lock_current::ypos2#3 +Self Phi Eliminated (byte) lock_current::l#2 +Self Phi Eliminated (byte) current_xpos#45 Self Phi Eliminated (byte*) init::line#2 Self Phi Eliminated (byte) init::l#2 Self Phi Eliminated (byte) render_playfield::l#3 @@ -3442,83 +3615,83 @@ Self Phi Eliminated (byte) render_current::ypos2#5 Self Phi Eliminated (byte) render_current::l#4 Self Phi Eliminated (byte) current_piece_color#16 Self Phi Eliminated (byte*) render_current::screen_line#1 -Self Phi Eliminated (byte) current_xpos#76 +Self Phi Eliminated (byte) current_xpos#77 Successful SSA optimization Pass2SelfPhiElimination Redundant Phi (byte) fill::val#2 (byte) fill::val#3 Redundant Phi (byte*) fill::end#1 (byte*) fill::end#0 Redundant Phi (byte) keyboard_matrix_read::rowid#1 (byte) keyboard_matrix_read::rowid#0 -Redundant Phi (byte) keyboard_events_size#53 (byte) keyboard_events_size#26 +Redundant Phi (byte) keyboard_events_size#54 (byte) keyboard_events_size#26 Redundant Phi (byte) keyboard_event_scan::row_scan#1 (byte) keyboard_event_scan::row_scan#0 Redundant Phi (byte) keyboard_event_scan::row#10 (byte) keyboard_event_scan::row#2 Redundant Phi (byte) keyboard_events_size#14 (byte) keyboard_events_size#17 Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0 Redundant Phi (byte*) current_piece#18 (byte*) current_piece#0 -Redundant Phi (byte) current_piece_orientation#26 (byte) current_piece_orientation#0 +Redundant Phi (byte) current_orientation#26 (byte) current_orientation#0 Redundant Phi (byte*) current_piece_gfx#23 (byte*) current_piece_gfx#0 -Redundant Phi (byte) current_piece_color#18 (byte) current_piece_color#0 Redundant Phi (byte) current_xpos#30 (byte) current_xpos#0 Redundant Phi (byte) current_ypos#24 (byte) current_ypos#0 +Redundant Phi (byte) current_piece_color#18 (byte) current_piece_color#0 Redundant Phi (byte) keyboard_events_size#33 (byte) keyboard_events_size#0 Redundant Phi (byte) keyboard_modifiers#30 (byte) keyboard_modifiers#0 Redundant Phi (byte) current_movedown_counter#22 (byte) current_movedown_counter#0 Redundant Phi (byte*) current_piece#1 (byte*) current_piece#16 -Redundant Phi (byte) current_piece_orientation#1 (byte) current_piece_orientation#10 +Redundant Phi (byte) current_orientation#1 (byte) current_orientation#10 Redundant Phi (byte*) current_piece_gfx#1 (byte*) current_piece_gfx#10 -Redundant Phi (byte) current_piece_color#1 (byte) current_piece_color#15 Redundant Phi (byte) current_xpos#1 (byte) current_xpos#10 Redundant Phi (byte) current_ypos#1 (byte) current_ypos#21 +Redundant Phi (byte) current_piece_color#1 (byte) current_piece_color#15 Redundant Phi (byte) keyboard_events_size#40 (byte) keyboard_events_size#19 Redundant Phi (byte) keyboard_modifiers#34 (byte) keyboard_modifiers#16 Redundant Phi (byte) current_movedown_counter#38 (byte) current_movedown_counter#15 -Redundant Phi (byte) current_ypos#65 (byte) current_ypos#12 -Redundant Phi (byte*) current_piece#57 (byte*) current_piece#11 -Redundant Phi (byte) current_piece_orientation#63 (byte) current_piece_orientation#15 -Redundant Phi (byte*) current_piece_gfx#72 (byte*) current_piece_gfx#15 -Redundant Phi (byte) current_piece_color#58 (byte) current_piece_color#11 -Redundant Phi (byte) current_xpos#84 (byte) current_xpos#16 +Redundant Phi (byte) current_ypos#61 (byte) current_ypos#12 +Redundant Phi (byte*) current_piece#58 (byte*) current_piece#11 +Redundant Phi (byte) current_orientation#64 (byte) current_orientation#15 +Redundant Phi (byte*) current_piece_gfx#73 (byte*) current_piece_gfx#15 +Redundant Phi (byte) current_xpos#85 (byte) current_xpos#16 +Redundant Phi (byte) current_piece_color#59 (byte) current_piece_color#11 Redundant Phi (byte) keyboard_events_size#26 (byte) keyboard_events_size#40 Redundant Phi (byte) keyboard_modifiers#23 (byte) keyboard_modifiers#34 Redundant Phi (byte) current_movedown_counter#14 (byte) current_movedown_counter#38 -Redundant Phi (byte) current_ypos#25 (byte) current_ypos#65 -Redundant Phi (byte*) current_piece#19 (byte*) current_piece#57 -Redundant Phi (byte) current_piece_orientation#27 (byte) current_piece_orientation#63 -Redundant Phi (byte*) current_piece_gfx#24 (byte*) current_piece_gfx#72 -Redundant Phi (byte) current_piece_color#19 (byte) current_piece_color#58 -Redundant Phi (byte) current_xpos#31 (byte) current_xpos#84 +Redundant Phi (byte) current_ypos#25 (byte) current_ypos#61 +Redundant Phi (byte*) current_piece#19 (byte*) current_piece#58 +Redundant Phi (byte) current_orientation#27 (byte) current_orientation#64 +Redundant Phi (byte*) current_piece_gfx#24 (byte*) current_piece_gfx#73 +Redundant Phi (byte) current_xpos#31 (byte) current_xpos#85 +Redundant Phi (byte) current_piece_color#19 (byte) current_piece_color#59 Redundant Phi (byte) keyboard_events_size#17 (byte) keyboard_events_size#13 Redundant Phi (byte) keyboard_modifiers#15 (byte) keyboard_modifiers#14 Redundant Phi (byte) keyboard_events_size#18 (byte) keyboard_events_size#16 Redundant Phi (byte) current_movedown_counter#1 (byte) current_movedown_counter#12 Redundant Phi (byte) current_ypos#11 (byte) current_ypos#16 Redundant Phi (byte*) current_piece#10 (byte*) current_piece#13 -Redundant Phi (byte) current_piece_orientation#13 (byte) current_piece_orientation#18 +Redundant Phi (byte) current_orientation#13 (byte) current_orientation#18 Redundant Phi (byte*) current_piece_gfx#13 (byte*) current_piece_gfx#17 -Redundant Phi (byte) current_piece_color#10 (byte) current_piece_color#13 Redundant Phi (byte) current_xpos#14 (byte) current_xpos#19 +Redundant Phi (byte) current_piece_color#10 (byte) current_piece_color#13 Redundant Phi (byte) current_xpos#15 (byte) current_xpos#23 -Redundant Phi (byte) current_piece_orientation#14 (byte) current_piece_orientation#23 +Redundant Phi (byte) current_orientation#14 (byte) current_orientation#23 Redundant Phi (byte*) current_piece_gfx#14 (byte*) current_piece_gfx#18 Redundant Phi (byte) current_movedown_counter#9 (byte) current_movedown_counter#14 Redundant Phi (byte) play_move_down::key_event#1 (byte) play_move_down::key_event#0 Redundant Phi (byte) current_ypos#13 (byte) current_ypos#25 Redundant Phi (byte) current_xpos#17 (byte) current_xpos#31 -Redundant Phi (byte) current_piece_orientation#16 (byte) current_piece_orientation#27 +Redundant Phi (byte) current_orientation#16 (byte) current_orientation#27 Redundant Phi (byte*) current_piece#21 (byte*) current_piece#19 Redundant Phi (byte*) current_piece_gfx#27 (byte*) current_piece_gfx#24 Redundant Phi (byte) current_piece_color#21 (byte) current_piece_color#19 Redundant Phi (byte*) current_piece#12 (byte*) current_piece#16 -Redundant Phi (byte) current_piece_orientation#17 (byte) current_piece_orientation#10 +Redundant Phi (byte) current_orientation#17 (byte) current_orientation#10 Redundant Phi (byte*) current_piece_gfx#16 (byte*) current_piece_gfx#10 -Redundant Phi (byte) current_piece_color#12 (byte) current_piece_color#15 Redundant Phi (byte) current_xpos#18 (byte) current_xpos#10 Redundant Phi (byte) current_ypos#15 (byte) current_ypos#21 +Redundant Phi (byte) current_piece_color#12 (byte) current_piece_color#15 Redundant Phi (byte) play_move_leftright::key_event#1 (byte) play_move_leftright::key_event#0 Redundant Phi (byte) current_xpos#20 (byte) current_xpos#14 Redundant Phi (byte) current_ypos#17 (byte) current_ypos#11 -Redundant Phi (byte) current_piece_orientation#19 (byte) current_piece_orientation#13 +Redundant Phi (byte) current_orientation#19 (byte) current_orientation#13 Redundant Phi (byte*) current_piece#26 (byte*) current_piece#10 Redundant Phi (byte) play_move_rotate::key_event#1 (byte) play_move_rotate::key_event#0 -Redundant Phi (byte) current_piece_orientation#21 (byte) current_piece_orientation#13 +Redundant Phi (byte) current_orientation#21 (byte) current_orientation#13 Redundant Phi (byte) current_xpos#25 (byte) current_xpos#15 Redundant Phi (byte) current_ypos#19 (byte) current_ypos#11 Redundant Phi (byte*) current_piece#14 (byte*) current_piece#10 @@ -3528,16 +3701,16 @@ Redundant Phi (byte) collision::ypos2#10 (byte) collision::ypos2#2 Redundant Phi (byte) collision::l#10 (byte) collision::l#6 Redundant Phi (byte) collision::xpos#10 (byte) collision::col#0 Redundant Phi (byte*) collision::playfield_line#1 (byte*) collision::playfield_line#0 -Redundant Phi (byte) current_ypos#36 (byte) current_ypos#13 +Redundant Phi (byte) current_ypos#20 (byte) current_ypos#13 +Redundant Phi (byte) current_xpos#44 (byte) current_xpos#17 Redundant Phi (byte*) current_piece_gfx#46 (byte*) current_piece_gfx#27 -Redundant Phi (byte) current_xpos#73 (byte) current_xpos#17 -Redundant Phi (byte) current_piece_color#45 (byte) current_piece_color#21 +Redundant Phi (byte) current_piece_color#46 (byte) current_piece_color#21 Redundant Phi (byte*) current_piece_gfx#19 (byte*) current_piece_gfx#32 -Redundant Phi (byte) current_xpos#26 (byte) current_xpos#60 Redundant Phi (byte) current_piece_color#14 (byte) current_piece_color#34 Redundant Phi (byte*) lock_current::playfield_line#1 (byte*) lock_current::playfield_line#0 -Redundant Phi (byte) lock_current::l#3 (byte) lock_current::l#2 -Redundant Phi (byte) current_ypos#37 (byte) current_ypos#20 +Redundant Phi (byte) lock_current::ypos2#3 (byte) lock_current::ypos2#2 +Redundant Phi (byte) lock_current::l#2 (byte) lock_current::l#6 +Redundant Phi (byte) current_xpos#45 (byte) current_xpos#26 Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2 Redundant Phi (byte*) init::line#2 (byte*) init::line#4 Redundant Phi (byte) init::l#2 (byte) init::l#4 @@ -3545,15 +3718,15 @@ Redundant Phi (byte) render_playfield::l#3 (byte) render_playfield::l#2 Redundant Phi (byte*) current_piece_gfx#21 (byte*) current_piece_gfx#35 Redundant Phi (byte) render_current::ypos2#5 (byte) render_current::ypos2#2 Redundant Phi (byte) render_current::l#4 (byte) render_current::l#3 -Redundant Phi (byte) current_piece_color#16 (byte) current_piece_color#48 +Redundant Phi (byte) current_piece_color#16 (byte) current_piece_color#49 Redundant Phi (byte*) render_current::screen_line#1 (byte*) render_current::screen_line#0 -Redundant Phi (byte) current_xpos#76 (byte) current_xpos#28 +Redundant Phi (byte) current_xpos#77 (byte) current_xpos#28 Redundant Phi (byte*) current_piece#17 (byte*) current_piece#11 -Redundant Phi (byte) current_piece_orientation#11 (byte) current_piece_orientation#15 +Redundant Phi (byte) current_orientation#11 (byte) current_orientation#15 Redundant Phi (byte*) current_piece_gfx#11 (byte*) current_piece_gfx#15 -Redundant Phi (byte) current_piece_color#17 (byte) current_piece_color#11 Redundant Phi (byte) current_xpos#12 (byte) current_xpos#16 Redundant Phi (byte) current_ypos#23 (byte) current_ypos#12 +Redundant Phi (byte) current_piece_color#17 (byte) current_piece_color#11 Redundant Phi (byte) keyboard_events_size#20 (byte) keyboard_events_size#19 Redundant Phi (byte) keyboard_modifiers#17 (byte) keyboard_modifiers#16 Redundant Phi (byte) current_movedown_counter#13 (byte) current_movedown_counter#15 @@ -3562,8 +3735,8 @@ Redundant Phi (byte) keyboard_event_scan::row#4 (byte) keyboard_event_scan::row# Redundant Phi (byte) render_current::ypos2#3 (byte) render_current::ypos2#2 Redundant Phi (byte) render_current::l#2 (byte) render_current::l#3 Redundant Phi (byte) current_xpos#63 (byte) current_xpos#28 -Redundant Phi (byte*) current_piece_gfx#62 (byte*) current_piece_gfx#35 -Redundant Phi (byte) current_piece_color#64 (byte) current_piece_color#48 +Redundant Phi (byte*) current_piece_gfx#63 (byte*) current_piece_gfx#35 +Redundant Phi (byte) current_piece_color#65 (byte) current_piece_color#49 Successful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) fill::$1 if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 Simple Condition (bool~) keyboard_event_scan::$1 if((byte) keyboard_event_scan::row_scan#0!=*((byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@2 @@ -3577,13 +3750,13 @@ Simple Condition (bool~) keyboard_event_scan::$20 if((byte~) keyboard_event_scan Simple Condition (bool~) keyboard_event_scan::$24 if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 Simple Condition (bool~) keyboard_event_scan::$28 if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@12 Simple Condition (bool~) keyboard_event_get::$0 if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@1 -Simple Condition (bool~) main::$4 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -Simple Condition (bool~) main::$5 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@8 -Simple Condition (bool~) main::$12 if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 +Simple Condition (bool~) main::$5 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 +Simple Condition (bool~) main::$6 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@8 +Simple Condition (bool~) main::$13 if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 Simple Condition (bool~) play_move_down::$1 if((byte) play_move_down::key_event#0!=(byte) KEY_SPACE#0) goto play_move_down::@1 Simple Condition (bool~) play_move_down::$4 if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -Simple Condition (bool~) play_move_down::$8 if((byte) current_movedown_counter#10<(byte) current_movedown_rate#0) goto play_move_down::@4 -Simple Condition (bool~) play_move_down::$6 if((byte) current_movedown_counter#10<(byte) current_movedown_rate_fast#0) goto play_move_down::@3 +Simple Condition (bool~) play_move_down::$8 if((byte) current_movedown_counter#10<(byte) current_movedown_slow#0) goto play_move_down::@4 +Simple Condition (bool~) play_move_down::$6 if((byte) current_movedown_counter#10<(byte) current_movedown_fast#0) goto play_move_down::@3 Simple Condition (bool~) play_move_down::$10 if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@5 Simple Condition (bool~) play_move_down::$13 if((byte~) play_move_down::$12==(byte) COLLISION_NONE#0) goto play_move_down::@6 Simple Condition (bool~) play_move_leftright::$0 if((byte) play_move_leftright::key_event#0==(byte) KEY_COMMA#0) goto play_move_leftright::@1 @@ -3592,7 +3765,7 @@ Simple Condition (bool~) play_move_leftright::$2 if((byte) play_move_leftright:: Simple Condition (bool~) play_move_leftright::$6 if((byte~) play_move_leftright::$4!=(byte) COLLISION_NONE#0) goto play_move_leftright::@3 Simple Condition (bool~) play_move_rotate::$0 if((byte) play_move_rotate::key_event#0==(byte) KEY_Z#0) goto play_move_rotate::@1 Simple Condition (bool~) play_move_rotate::$1 if((byte) play_move_rotate::key_event#0==(byte) KEY_X#0) goto play_move_rotate::@2 -Simple Condition (bool~) play_move_rotate::$10 if((byte~) play_move_rotate::$8!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@5 +Simple Condition (bool~) play_move_rotate::$8 if((byte~) play_move_rotate::$6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@5 Simple Condition (bool~) collision::$3 if(*((byte*) collision::piece_gfx#2 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 Simple Condition (bool~) collision::$14 if((byte) collision::c#1!=rangelast(0,3)) goto collision::@2 Simple Condition (bool~) collision::$6 if((byte) collision::ypos2#2<(byte/signed word/word/dword/signed dword~) collision::$4) goto collision::@4 @@ -3600,9 +3773,10 @@ Simple Condition (bool~) collision::$9 if((byte~) collision::$7==(byte/signed by Simple Condition (bool~) collision::$11 if((byte) collision::col#2<(byte) PLAYFIELD_COLS#0) goto collision::@6 Simple Condition (bool~) collision::$13 if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@7 Simple Condition (bool~) collision::$15 if((byte) collision::l#1!=rangelast(0,3)) goto collision::@1 -Simple Condition (bool~) lock_current::$3 if((byte) lock_current::cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -Simple Condition (bool~) lock_current::$5 if((byte) lock_current::c#1!=rangelast(0,3)) goto lock_current::@2 -Simple Condition (bool~) lock_current::$6 if((byte) lock_current::l#1!=rangelast(0,3)) goto lock_current::@1 +Simple Condition (bool~) lock_current::$2 if(*((byte*) current_piece_gfx#32 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 +Simple Condition (bool~) lock_current::$3 if((byte) lock_current::c#1!=rangelast(0,3)) goto lock_current::@2 +Simple Condition (bool~) lock_current::$4 if((byte) lock_current::l#1!=rangelast(0,3)) goto lock_current::@1 +Simple Condition (bool~) spawn_current::$0 if((byte) spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto spawn_current::@2 Simple Condition (bool~) init::$6 if((byte) init::i#1!=rangelast(0,init::$4)) goto init::@1 Simple Condition (bool~) init::$9 if((byte) init::j#1!=rangelast(0,init::$7)) goto init::@2 Simple Condition (bool~) init::$14 if((byte) init::c#1!=rangelast(0,init::$12)) goto init::@4 @@ -3621,8 +3795,10 @@ Constant (const byte*) COLS#0 = ((byte*))55296 Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 Constant (const byte) GREEN#0 = 5 Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) LIGHT_GREY#0 = 15 Constant (const byte) KEY_Z#0 = 12 Constant (const byte) KEY_LSHIFT#0 = 15 Constant (const byte) KEY_X#0 = 23 @@ -3647,18 +3823,36 @@ Constant (const byte) keyboard_event_scan::row#0 = 0 Constant (const byte) keyboard_event_scan::col#0 = 0 Constant (const byte) keyboard_modifiers#1 = 0 Constant (const byte) keyboard_event_get::return#0 = 255 -Constant (const byte*) SCREEN#0 = ((byte*))1024 +Constant (const word*) SID_VOICE3_FREQ#0 = ((word*))54286 +Constant (const byte*) SID_VOICE3_CONTROL#0 = ((byte*))54290 +Constant (const byte) SID_CONTROL_NOISE#0 = 128 +Constant (const byte*) SID_VOICE3_OSC#0 = ((byte*))54299 +Constant (const byte/signed byte/word/signed word/dword/signed dword) $1 = 4*4 +Constant (const byte[$2]) PIECE_T#0 = { 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 } +Constant (const byte/signed byte/word/signed word/dword/signed dword) $3 = 4*4 +Constant (const byte[$4]) PIECE_S#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, 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 } +Constant (const byte/signed byte/word/signed word/dword/signed dword) $5 = 4*4 +Constant (const byte[$6]) PIECE_Z#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, 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 } +Constant (const byte/signed byte/word/signed word/dword/signed dword) $7 = 4*4 +Constant (const byte[$8]) PIECE_L#0 = { 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 } +Constant (const byte/signed byte/word/signed word/dword/signed dword) $9 = 4*4 +Constant (const byte[$10]) PIECE_J#0 = { 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 } +Constant (const byte/signed byte/word/signed word/dword/signed dword) $11 = 4*4 +Constant (const byte[$12]) PIECE_O#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, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } +Constant (const byte/signed byte/word/signed word/dword/signed dword) $13 = 4*4 +Constant (const byte[$14]) PIECE_I#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, 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 } Constant (const byte) PLAYFIELD_LINES#0 = 22 Constant (const byte) PLAYFIELD_COLS#0 = 10 Constant (const byte*) current_piece#0 = ((byte*))0 -Constant (const byte) current_piece_orientation#0 = 0 +Constant (const byte) current_orientation#0 = 0 Constant (const byte*) current_piece_gfx#0 = ((byte*))0 Constant (const byte) current_piece_color#0 = 0 Constant (const byte) current_xpos#0 = 3 Constant (const byte) current_ypos#0 = 0 -Constant (const byte) current_movedown_rate#0 = 50 -Constant (const byte) current_movedown_rate_fast#0 = 5 +Constant (const byte) current_movedown_slow#0 = 50 +Constant (const byte) current_movedown_fast#0 = 5 Constant (const byte) current_movedown_counter#0 = 0 +Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte) main::render#0 = 0 Constant (const byte) play_move_down::movedown#0 = 0 Constant (const byte) play_move_down::return#1 = 0 @@ -3682,7 +3876,8 @@ Constant (const byte) collision::c#0 = 0 Constant (const byte) lock_current::i#0 = 0 Constant (const byte) lock_current::l#0 = 0 Constant (const byte) lock_current::c#0 = 0 -Constant (const byte) current_piece_orientation#10 = 0 +Constant (const byte) spawn_current::piece_idx#0 = 7 +Constant (const byte) current_orientation#10 = 0 Constant (const byte) current_xpos#10 = 3 Constant (const byte) current_ypos#21 = 0 Constant (const word) fill::size#0 = 1000 @@ -3698,28 +3893,38 @@ Constant (const byte) render_playfield::c#0 = 0 Constant (const byte) render_current::i#0 = 0 Constant (const byte) render_current::l#0 = 0 Constant (const byte) render_current::c#0 = 0 -Constant (const byte/signed byte/word/signed word/dword/signed dword) $3 = 4*4 -Constant (const byte[$4]) piece_t#0 = { 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 } Successful SSA optimization Pass2ConstantIdentification Constant (const byte) keyboard_event_pressed::keycode#0 = KEY_LSHIFT#0 Constant (const byte) keyboard_event_pressed::keycode#1 = KEY_RSHIFT#0 Constant (const byte) keyboard_modifiers#2 = keyboard_modifiers#1|KEY_MODIFIER_LSHIFT#0 Constant (const byte) keyboard_event_pressed::keycode#2 = KEY_CTRL#0 Constant (const byte) keyboard_event_pressed::keycode#3 = KEY_COMMODORE#0 -Constant (const byte) $1 = PLAYFIELD_LINES#0*PLAYFIELD_COLS#0 -Constant (const byte/signed word/word/dword/signed dword) $2 = PLAYFIELD_LINES#0+3 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $2 = $1*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $4 = $3*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $6 = $5*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $8 = $7*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $10 = $9*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $12 = $11*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $14 = $13*4 +Constant (const word) $15 = ((word))PIECE_T#0 +Constant (const word) $16 = ((word))PIECE_S#0 +Constant (const word) $17 = ((word))PIECE_Z#0 +Constant (const word) $18 = ((word))PIECE_J#0 +Constant (const word) $19 = ((word))PIECE_O#0 +Constant (const word) $20 = ((word))PIECE_I#0 +Constant (const word) $21 = ((word))PIECE_L#0 +Constant (const byte[]) PIECES_COLORS#0 = { WHITE#0, LIGHT_GREY#0, GREEN#0, LIGHT_GREY#0, WHITE#0, WHITE#0, GREEN#0 } +Constant (const byte) $22 = PLAYFIELD_LINES#0*PLAYFIELD_COLS#0 Constant (const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 = { fill( PLAYFIELD_LINES#0, 0) } +Constant (const byte/signed word/word/dword/signed dword) $23 = PLAYFIELD_LINES#0+3 Constant (const byte) keyboard_event_pressed::keycode#4 = KEY_SPACE#0 Constant (const byte) play_move_down::movedown#1 = ++play_move_down::movedown#0 -Constant (const byte) play_move_rotate::$7 = COLLISION_LEFT#0|COLLISION_RIGHT#0 Constant (const byte/signed word/word/dword/signed dword) collision::$4 = 2*PLAYFIELD_LINES#0 Constant (const byte) collision::return#4 = COLLISION_BOTTOM#0 Constant (const byte) collision::return#6 = COLLISION_LEFT#0 Constant (const byte) collision::return#7 = COLLISION_RIGHT#0 Constant (const byte) collision::return#8 = COLLISION_PLAYFIELD#0 Constant (const byte) collision::return#9 = COLLISION_NONE#0 -Constant (const byte*) current_piece#16 = piece_t#0 -Constant (const byte) current_piece_color#15 = GREEN#0 Constant (const byte*) fill::start#0 = SCREEN#0 Constant (const byte*) fill::start#1 = COLS#0 Constant (const byte) fill::val#1 = BLACK#0 @@ -3732,11 +3937,10 @@ Constant (const byte/signed word/word/dword/signed dword) init::$12 = PLAYFIELD_ Constant (const byte/signed word/word/dword/signed dword) render_playfield::$0 = PLAYFIELD_LINES#0-1 Constant (const byte/signed word/word/dword/signed dword) render_playfield::$2 = PLAYFIELD_COLS#0-1 Constant (const byte/signed word/word/dword/signed dword) render_current::$1 = 2*PLAYFIELD_LINES#0 -Constant (const byte/signed word/word/dword/signed dword/signed byte) $4 = $3*4 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte[$1]) playfield#0 = { fill( $1, 0) } -Constant (const byte*[$2]) screen_lines#0 = { fill( $2, 0) } -Constant (const byte*) current_piece_gfx#10 = current_piece#16+current_piece_orientation#10 +Constant (const word[]) PIECES#0 = { $15, $16, $17, $18, $19, $20, $21 } +Constant (const byte[$22]) playfield#0 = { fill( $22, 0) } +Constant (const byte*[$23]) screen_lines#0 = { fill( $23, 0) } Constant (const byte*) init::li#0 = init::$2+15 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) init::pli#0 = playfield#0 @@ -3753,6 +3957,8 @@ Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars +Eliminating Noop Cast (byte*) current_piece#16 ← ((byte*)) *((const word[]) PIECES#0 + (byte~) spawn_current::$3) +Successful SSA optimization Pass2NopCastElimination Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Resolved ranged next value keyboard_event_scan::row#1 ← ++ keyboard_event_scan::row#2 to ++ @@ -3765,7 +3971,7 @@ Resolved ranged next value collision::l#1 ← ++ collision::l#6 to ++ Resolved ranged comparison value if(collision::l#1!=rangelast(0,3)) goto collision::@1 to (byte/signed byte/word/signed word/dword/signed dword) 4 Resolved ranged next value lock_current::c#1 ← ++ lock_current::c#2 to ++ Resolved ranged comparison value if(lock_current::c#1!=rangelast(0,3)) goto lock_current::@2 to (byte/signed byte/word/signed word/dword/signed dword) 4 -Resolved ranged next value lock_current::l#1 ← ++ lock_current::l#2 to ++ +Resolved ranged next value lock_current::l#1 ← ++ lock_current::l#6 to ++ Resolved ranged comparison value if(lock_current::l#1!=rangelast(0,3)) goto lock_current::@1 to (byte/signed byte/word/signed word/dword/signed dword) 4 Resolved ranged next value init::i#1 ← ++ init::i#2 to ++ Resolved ranged comparison value if(init::i#1!=rangelast(0,init::$4)) goto init::@1 to (const byte/signed word/word/dword/signed dword) init::$4+(byte/signed byte/word/signed word/dword/signed dword) 1 @@ -3790,7 +3996,8 @@ Culled Empty Block (label) keyboard_event_scan::@6 Culled Empty Block (label) keyboard_event_scan::@12 Culled Empty Block (label) keyboard_event_get::@1 Culled Empty Block (label) @11 -Culled Empty Block (label) main::@24 +Culled Empty Block (label) @13 +Culled Empty Block (label) main::@25 Culled Empty Block (label) main::@2 Culled Empty Block (label) main::@5 Culled Empty Block (label) main::@8 @@ -3803,7 +4010,7 @@ Culled Empty Block (label) play_move_leftright::@4 Culled Empty Block (label) play_move_leftright::@5 Culled Empty Block (label) play_move_rotate::@7 Culled Empty Block (label) play_move_rotate::@5 -Culled Empty Block (label) @15 +Culled Empty Block (label) @17 Culled Empty Block (label) collision::@9 Culled Empty Block (label) collision::@11 Culled Empty Block (label) collision::@13 @@ -3814,27 +4021,25 @@ Culled Empty Block (label) init::@10 Culled Empty Block (label) init::@5 Culled Empty Block (label) init::@6 Culled Empty Block (label) render_current::@5 -Culled Empty Block (label) @22 +Culled Empty Block (label) @24 Successful SSA optimization Pass2CullEmptyBlocks Self Phi Eliminated (byte) collision::col#0 Self Phi Eliminated (byte*) collision::piece_gfx#2 -Self Phi Eliminated (byte) current_ypos#20 +Self Phi Eliminated (byte) current_xpos#26 Self Phi Eliminated (byte*) current_piece_gfx#32 -Self Phi Eliminated (byte) current_xpos#60 Self Phi Eliminated (byte) current_piece_color#34 Self Phi Eliminated (byte) current_xpos#28 Self Phi Eliminated (byte*) current_piece_gfx#35 -Self Phi Eliminated (byte) current_piece_color#48 +Self Phi Eliminated (byte) current_piece_color#49 Successful SSA optimization Pass2SelfPhiElimination Redundant Phi (byte) collision::col#0 (byte) collision::xpos#5 Redundant Phi (byte*) collision::piece_gfx#2 (byte*) collision::piece_gfx#0 -Redundant Phi (byte) current_ypos#20 (byte) current_ypos#12 +Redundant Phi (byte) current_xpos#26 (byte) current_xpos#16 Redundant Phi (byte*) current_piece_gfx#32 (byte*) current_piece_gfx#15 -Redundant Phi (byte) current_xpos#60 (byte) current_xpos#16 Redundant Phi (byte) current_piece_color#34 (byte) current_piece_color#11 Redundant Phi (byte) current_xpos#28 (byte) current_xpos#62 -Redundant Phi (byte*) current_piece_gfx#35 (byte*) current_piece_gfx#61 -Redundant Phi (byte) current_piece_color#48 (byte) current_piece_color#63 +Redundant Phi (byte*) current_piece_gfx#35 (byte*) current_piece_gfx#62 +Redundant Phi (byte) current_piece_color#49 (byte) current_piece_color#64 Successful SSA optimization Pass2RedundantPhiElimination Inlining constant with var siblings (const word) fill::size#0 Inlining constant with var siblings (const byte) fill::val#0 @@ -3871,6 +4076,7 @@ Inlining constant with var siblings (const byte) collision::return#9 Inlining constant with var siblings (const byte) lock_current::i#0 Inlining constant with var siblings (const byte) lock_current::l#0 Inlining constant with var siblings (const byte) lock_current::c#0 +Inlining constant with var siblings (const byte) spawn_current::piece_idx#0 Inlining constant with var siblings (const byte) init::i#0 Inlining constant with var siblings (const byte) init::j#0 Inlining constant with var siblings (const byte) init::l#0 @@ -3887,13 +4093,9 @@ Inlining constant with var siblings (const byte) render_current::c#0 Inlining constant with var siblings (const byte) keyboard_events_size#0 Inlining constant with var siblings (const byte) current_movedown_counter#0 Inlining constant with var siblings (const byte) current_movedown_counter#4 -Inlining constant with var siblings (const byte) current_piece_orientation#10 +Inlining constant with var siblings (const byte) current_orientation#10 Inlining constant with var siblings (const byte) current_xpos#10 Inlining constant with var siblings (const byte) current_ypos#21 -Inlining constant with var siblings (const byte*) current_piece#16 -Inlining constant with var siblings (const byte) current_piece_color#15 -Inlining constant with var siblings (const byte*) current_piece_gfx#10 -Constant inlined current_piece_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined current_xpos#10 = (byte/signed byte/word/signed word/dword/signed dword) 3 Constant inlined play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_move_rotate::return#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -3906,52 +4108,69 @@ Constant inlined init::$12 = (const byte) PLAYFIELD_COLS#0+(byte/signed byte/wor Constant inlined render_current::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined current_movedown_counter#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined init::$11 = (const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined $1 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0 -Constant inlined $2 = (const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 3 +Constant inlined $1 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $2 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined current_movedown_counter#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined $3 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined init::$7 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined $4 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $5 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $6 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined init::$4 = (const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2 +Constant inlined $7 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $8 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined fill::start#1 = (const byte*) COLS#0 +Constant inlined $9 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined fill::start#0 = (const byte*) SCREEN#0 Constant inlined render_playfield::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined spawn_current::piece_idx#0 = (byte/signed byte/word/signed word/dword/signed dword) 7 Constant inlined render_playfield::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined current_piece#16 = (const byte[4*4*4]) piece_t#0 Constant inlined play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined play_move_leftright::return#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined play_move_leftright::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined fill::size#1 = (word/signed word/dword/signed dword) 1000 Constant inlined fill::size#0 = (word/signed word/dword/signed dword) 1000 Constant inlined keyboard_event_scan::keycode#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined current_piece_color#15 = (const byte) GREEN#0 Constant inlined lock_current::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined init::$2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40 Constant inlined collision::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined current_piece_gfx#10 = (const byte[4*4*4]) piece_t#0+(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined init::pli#0 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 Constant inlined fill::val#0 = (byte/word/signed word/dword/signed dword) 160 Constant inlined init::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined collision::return#9 = (const byte) COLLISION_NONE#0 Constant inlined play_move_down::movedown#1 = ++(byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined play_move_rotate::$7 = (const byte) COLLISION_LEFT#0|(const byte) COLLISION_RIGHT#0 Constant inlined play_move_down::movedown#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined $10 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined render_current::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined $11 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $12 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined keyboard_event_scan::col#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_current::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined $13 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined init::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined $14 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined fill::val#1 = (const byte) BLACK#0 Constant inlined keyboard_event_scan::row#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_playfield::$2 = (const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined $15 = ((word))(const byte[4*4*4]) PIECE_T#0 +Constant inlined $16 = ((word))(const byte[4*4*4]) PIECE_S#0 Constant inlined render_playfield::$0 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined $17 = ((word))(const byte[4*4*4]) PIECE_Z#0 Constant inlined collision::return#4 = (const byte) COLLISION_BOTTOM#0 +Constant inlined $18 = ((word))(const byte[4*4*4]) PIECE_J#0 +Constant inlined $19 = ((word))(const byte[4*4*4]) PIECE_O#0 Constant inlined collision::return#6 = (const byte) COLLISION_LEFT#0 Constant inlined collision::return#8 = (const byte) COLLISION_PLAYFIELD#0 Constant inlined collision::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined collision::return#7 = (const byte) COLLISION_RIGHT#0 +Constant inlined current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_playfield::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined collision::$4 = (byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0 +Constant inlined $20 = ((word))(const byte[4*4*4]) PIECE_I#0 +Constant inlined $21 = ((word))(const byte[4*4*4]) PIECE_L#0 Constant inlined keyboard_event_pressed::keycode#4 = (const byte) KEY_SPACE#0 +Constant inlined $22 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0 +Constant inlined $23 = (const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 3 Constant inlined main::render#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined init::li#0 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 Constant inlined keyboard_event_pressed::keycode#3 = (const byte) KEY_COMMODORE#0 @@ -3969,10 +4188,7 @@ Constant inlined keyboard_events_size#0 = (byte/signed byte/word/signed word/dwo Successful SSA optimization Pass2ConstantInlining Identical Phi Values (word) fill::size#2 (word/signed word/dword/signed dword) 1000 Successful SSA optimization Pass2IdenticalPhiElimination -Simplifying constant plus zero piece_t#0+0 Simplifying constant integer increment ++0 -Simplifying constant plus zero piece_t#0+0 -Simplifying constant plus zero piece_t#0+0 Successful SSA optimization Pass2ConstantSimplification Added new block during phi lifting render_current::@11(between render_current::@2 and render_current::@1) Added new block during phi lifting render_current::@12(between render_current::@4 and render_current::@3) @@ -4013,18 +4229,17 @@ Added new block during phi lifting init::@13(between init::@7 and init::@3) Added new block during phi lifting init::@14(between init::@4 and init::@4) Added new block during phi lifting fill::@3(between fill::@1 and fill::@1) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @21 +Adding NOP phi() at start of @23 Adding NOP phi() at start of @end -Adding NOP phi() at start of main::@21 +Adding NOP phi() at start of main Adding NOP phi() at start of main::@22 Adding NOP phi() at start of main::@23 -Adding NOP phi() at start of main::@25 +Adding NOP phi() at start of main::@26 Adding NOP phi() at start of render_playfield Adding NOP phi() at start of play_move_down::@8 Adding NOP phi() at start of play_move_down::@13 Adding NOP phi() at start of play_move_down::@19 -Adding NOP phi() at start of spawn_current -Adding NOP phi() at start of lock_current +Adding NOP phi() at start of spawn_current::@2 Adding NOP phi() at start of keyboard_event_scan::@20 Adding NOP phi() at start of keyboard_event_scan::@21 Adding NOP phi() at start of keyboard_event_scan::@9 @@ -4037,141 +4252,153 @@ Adding NOP phi() at start of init Adding NOP phi() at start of init::@9 CALL GRAPH Calls in [] to main:2 -Calls in [main] to init:5 spawn_current:7 render_playfield:9 render_current:11 keyboard_event_scan:16 keyboard_event_get:18 play_move_down:22 play_move_leftright:27 play_move_rotate:32 render_playfield:38 render_current:43 -Calls in [play_move_rotate] to collision:122 -Calls in [play_move_leftright] to collision:175 collision:192 -Calls in [play_move_down] to keyboard_event_pressed:203 collision:223 lock_current:228 spawn_current:230 -Calls in [keyboard_event_scan] to keyboard_matrix_read:297 keyboard_event_pressed:308 keyboard_event_pressed:314 keyboard_event_pressed:320 keyboard_event_pressed:326 -Calls in [init] to fill:367 fill:369 +Calls in [main] to sid_rnd_init:5 init:7 spawn_current:9 render_playfield:11 render_current:14 keyboard_event_scan:22 keyboard_event_get:24 play_move_down:28 play_move_leftright:33 play_move_rotate:38 render_playfield:44 render_current:49 +Calls in [play_move_rotate] to collision:128 +Calls in [play_move_leftright] to collision:180 collision:197 +Calls in [play_move_down] to keyboard_event_pressed:208 collision:228 lock_current:233 spawn_current:235 +Calls in [spawn_current] to sid_rnd:274 +Calls in [keyboard_event_scan] to keyboard_matrix_read:322 keyboard_event_pressed:333 keyboard_event_pressed:339 keyboard_event_pressed:345 keyboard_event_pressed:351 +Calls in [init] to fill:392 fill:394 -Created 84 initial phi equivalence classes -Not coalescing [39] current_ypos#72 ← current_ypos#16 -Not coalescing [40] current_xpos#92 ← current_xpos#23 -Not coalescing [41] current_piece_gfx#82 ← current_piece_gfx#18 -Not coalescing [42] current_piece_color#70 ← current_piece_color#13 -Coalesced [46] current_piece#66 ← current_piece#13 -Coalesced [47] current_piece_orientation#70 ← current_piece_orientation#23 -Coalesced [48] current_piece_gfx#81 ← current_piece_gfx#18 -Coalesced [49] current_piece_color#69 ← current_piece_color#13 -Coalesced [50] current_xpos#91 ← current_xpos#23 -Coalesced [51] current_ypos#71 ← current_ypos#16 -Coalesced [52] keyboard_events_size#68 ← keyboard_events_size#16 -Coalesced [53] current_movedown_counter#44 ← current_movedown_counter#12 -Coalesced [56] render_current::ypos2#10 ← render_current::ypos2#0 -Coalesced [61] render_current::i#12 ← render_current::i#4 -Coalesced [62] render_current::xpos#8 ← render_current::xpos#0 -Coalesced [72] render_current::i#14 ← render_current::i#1 -Coalesced [78] render_current::ypos2#11 ← render_current::ypos2#1 -Coalesced [79] render_current::l#10 ← render_current::l#1 -Coalesced [80] render_current::i#10 ← render_current::i#8 -Coalesced (already) [81] render_current::i#11 ← render_current::i#1 -Coalesced [82] render_current::xpos#7 ← render_current::xpos#1 -Coalesced [83] render_current::c#7 ← render_current::c#1 -Coalesced (already) [84] render_current::i#13 ← render_current::i#4 -Coalesced [89] render_playfield::i#6 ← render_playfield::i#3 -Coalesced [90] render_playfield::line#3 ← render_playfield::line#0 -Coalesced [100] render_playfield::l#5 ← render_playfield::l#1 -Coalesced [101] render_playfield::i#5 ← render_playfield::i#1 -Coalesced (already) [102] render_playfield::i#7 ← render_playfield::i#1 -Coalesced [103] render_playfield::line#4 ← render_playfield::line#1 -Coalesced [104] render_playfield::c#3 ← render_playfield::c#1 -Coalesced [107] current_piece_orientation#73 ← current_piece_orientation#18 -Coalesced [108] current_piece_gfx#85 ← current_piece_gfx#17 -Coalesced [113] play_move_rotate::orientation#7 ← play_move_rotate::orientation#2 -Not coalescing [118] current_piece#70 ← current_piece#13 -Coalesced [119] collision::orientation#8 ← collision::orientation#3 -Coalesced [120] collision::ypos#8 ← collision::ypos#3 -Coalesced [121] collision::xpos#17 ← collision::xpos#3 -Coalesced [129] current_piece_orientation#71 ← current_piece_orientation#8 -Coalesced [130] current_piece_gfx#83 ← current_piece_gfx#8 -Coalesced (already) [131] current_piece_orientation#72 ← current_piece_orientation#18 -Coalesced (already) [132] current_piece_gfx#84 ← current_piece_gfx#17 -Coalesced [135] play_move_rotate::orientation#6 ← play_move_rotate::orientation#1 -Coalesced [139] collision::ypos2#11 ← collision::ypos2#0 -Coalesced [142] collision::i#12 ← collision::i#3 -Not coalescing [143] collision::col#9 ← collision::xpos#5 -Coalesced [160] collision::ypos2#12 ← collision::ypos2#1 -Not coalescing [161] collision::i#11 ← collision::i#1 -Coalesced [162] collision::l#11 ← collision::l#1 -Not coalescing [163] collision::i#13 ← collision::i#1 -Coalesced [164] collision::col#10 ← collision::col#1 -Coalesced [165] collision::c#9 ← collision::c#1 -Not coalescing [171] current_piece#69 ← current_piece#13 -Coalesced [172] collision::orientation#7 ← collision::orientation#2 -Coalesced [173] collision::ypos#7 ← collision::ypos#2 -Coalesced [174] collision::xpos#16 ← collision::xpos#2 -Coalesced [180] current_xpos#95 ← current_xpos#7 -Coalesced [183] current_xpos#94 ← current_xpos#19 -Coalesced (already) [184] current_xpos#97 ← current_xpos#19 -Not coalescing [188] current_piece#68 ← current_piece#13 -Coalesced [189] collision::orientation#6 ← collision::orientation#1 -Coalesced [190] collision::ypos#6 ← collision::ypos#1 -Coalesced [191] collision::xpos#15 ← collision::xpos#1 -Coalesced [197] current_xpos#93 ← current_xpos#9 -Coalesced (already) [198] current_xpos#96 ← current_xpos#19 -Coalesced [209] play_move_down::movedown#13 ← play_move_down::movedown#2 -Coalesced [213] play_move_down::movedown#16 ← play_move_down::movedown#3 -Not coalescing [219] current_piece#67 ← current_piece#11 -Coalesced [220] collision::orientation#5 ← collision::orientation#0 -Coalesced [221] collision::ypos#5 ← collision::ypos#0 -Coalesced [222] collision::xpos#14 ← collision::xpos#0 -Coalesced [232] current_ypos#75 ← current_ypos#31 -Coalesced [233] current_piece#73 ← current_piece#23 -Coalesced [234] current_piece_orientation#76 ← current_piece_orientation#33 -Coalesced [235] current_piece_gfx#88 ← current_piece_gfx#29 -Coalesced [236] current_piece_color#73 ← current_piece_color#23 -Coalesced [237] current_xpos#100 ← current_xpos#36 -Coalesced [241] current_ypos#73 ← current_ypos#4 -Coalesced (already) [242] current_piece#71 ← current_piece#11 -Coalesced (already) [243] current_piece_orientation#74 ← current_piece_orientation#15 -Coalesced (already) [244] current_piece_gfx#86 ← current_piece_gfx#15 -Coalesced (already) [245] current_piece_color#71 ← current_piece_color#11 -Coalesced (already) [246] current_xpos#98 ← current_xpos#16 -Coalesced [247] current_movedown_counter#45 ← current_movedown_counter#10 -Coalesced (already) [248] current_ypos#74 ← current_ypos#12 -Coalesced (already) [249] current_piece#72 ← current_piece#11 -Coalesced (already) [250] current_piece_orientation#75 ← current_piece_orientation#15 -Coalesced (already) [251] current_piece_gfx#87 ← current_piece_gfx#15 -Coalesced (already) [252] current_piece_color#72 ← current_piece_color#11 +Created 87 initial phi equivalence classes +Not coalescing [12] current_piece_gfx#84 ← current_piece_gfx#10 +Not coalescing [13] current_piece_color#72 ← current_piece_color#15 +Coalesced [16] current_piece_gfx#83 ← current_piece_gfx#10 +Coalesced [17] current_piece_color#71 ← current_piece_color#15 +Not coalescing [45] current_ypos#68 ← current_ypos#16 +Not coalescing [46] current_xpos#93 ← current_xpos#23 +Not coalescing [47] current_piece_gfx#85 ← current_piece_gfx#18 +Not coalescing [48] current_piece_color#73 ← current_piece_color#13 +Coalesced [52] current_piece#67 ← current_piece#13 +Coalesced [53] current_orientation#71 ← current_orientation#23 +Coalesced [54] current_piece_gfx#82 ← current_piece_gfx#18 +Coalesced [55] current_xpos#92 ← current_xpos#23 +Coalesced [56] current_ypos#67 ← current_ypos#16 +Coalesced [57] current_piece_color#70 ← current_piece_color#13 +Coalesced [58] keyboard_events_size#70 ← keyboard_events_size#16 +Coalesced [59] current_movedown_counter#45 ← current_movedown_counter#12 +Coalesced [62] render_current::ypos2#10 ← render_current::ypos2#0 +Coalesced [67] render_current::i#12 ← render_current::i#4 +Coalesced [68] render_current::xpos#8 ← render_current::xpos#0 +Coalesced [78] render_current::i#14 ← render_current::i#1 +Coalesced [84] render_current::ypos2#11 ← render_current::ypos2#1 +Coalesced [85] render_current::l#10 ← render_current::l#1 +Coalesced [86] render_current::i#10 ← render_current::i#8 +Coalesced (already) [87] render_current::i#11 ← render_current::i#1 +Coalesced [88] render_current::xpos#7 ← render_current::xpos#1 +Coalesced [89] render_current::c#7 ← render_current::c#1 +Coalesced (already) [90] render_current::i#13 ← render_current::i#4 +Coalesced [95] render_playfield::i#6 ← render_playfield::i#3 +Coalesced [96] render_playfield::line#3 ← render_playfield::line#0 +Coalesced [106] render_playfield::l#5 ← render_playfield::l#1 +Coalesced [107] render_playfield::i#5 ← render_playfield::i#1 +Coalesced (already) [108] render_playfield::i#7 ← render_playfield::i#1 +Coalesced [109] render_playfield::line#4 ← render_playfield::line#1 +Coalesced [110] render_playfield::c#3 ← render_playfield::c#1 +Coalesced [113] current_orientation#74 ← current_orientation#18 +Coalesced [114] current_piece_gfx#88 ← current_piece_gfx#17 +Coalesced [119] play_move_rotate::orientation#7 ← play_move_rotate::orientation#2 +Not coalescing [124] current_piece#72 ← current_piece#13 +Coalesced [125] collision::orientation#8 ← collision::orientation#3 +Coalesced [126] collision::ypos#8 ← collision::ypos#3 +Coalesced [127] collision::xpos#17 ← collision::xpos#3 +Coalesced [134] current_orientation#72 ← current_orientation#8 +Coalesced [135] current_piece_gfx#86 ← current_piece_gfx#8 +Coalesced (already) [136] current_orientation#73 ← current_orientation#18 +Coalesced (already) [137] current_piece_gfx#87 ← current_piece_gfx#17 +Coalesced [140] play_move_rotate::orientation#6 ← play_move_rotate::orientation#1 +Coalesced [144] collision::ypos2#11 ← collision::ypos2#0 +Coalesced [147] collision::i#12 ← collision::i#3 +Not coalescing [148] collision::col#9 ← collision::xpos#5 +Coalesced [165] collision::ypos2#12 ← collision::ypos2#1 +Not coalescing [166] collision::i#11 ← collision::i#1 +Coalesced [167] collision::l#11 ← collision::l#1 +Not coalescing [168] collision::i#13 ← collision::i#1 +Coalesced [169] collision::col#10 ← collision::col#1 +Coalesced [170] collision::c#9 ← collision::c#1 +Not coalescing [176] current_piece#71 ← current_piece#13 +Coalesced [177] collision::orientation#7 ← collision::orientation#2 +Coalesced [178] collision::ypos#7 ← collision::ypos#2 +Coalesced [179] collision::xpos#16 ← collision::xpos#2 +Coalesced [185] current_xpos#96 ← current_xpos#7 +Coalesced [188] current_xpos#95 ← current_xpos#19 +Coalesced (already) [189] current_xpos#98 ← current_xpos#19 +Not coalescing [193] current_piece#70 ← current_piece#13 +Coalesced [194] collision::orientation#6 ← collision::orientation#1 +Coalesced [195] collision::ypos#6 ← collision::ypos#1 +Coalesced [196] collision::xpos#15 ← collision::xpos#1 +Coalesced [202] current_xpos#94 ← current_xpos#9 +Coalesced (already) [203] current_xpos#97 ← current_xpos#19 +Coalesced [214] play_move_down::movedown#13 ← play_move_down::movedown#2 +Coalesced [218] play_move_down::movedown#16 ← play_move_down::movedown#3 +Not coalescing [224] current_piece#69 ← current_piece#11 +Coalesced [225] collision::orientation#5 ← collision::orientation#0 +Coalesced [226] collision::ypos#5 ← collision::ypos#0 +Coalesced [227] collision::xpos#14 ← collision::xpos#0 +Coalesced [237] current_piece_gfx#89 ← current_piece_gfx#10 +Coalesced [238] current_piece_color#74 ← current_piece_color#15 +Coalesced [240] current_ypos#71 ← current_ypos#31 +Coalesced [241] current_piece#76 ← current_piece#23 +Coalesced [242] current_orientation#77 ← current_orientation#33 +Coalesced (already) [243] current_piece_gfx#92 ← current_piece_gfx#29 +Coalesced [244] current_xpos#101 ← current_xpos#36 +Coalesced (already) [245] current_piece_color#77 ← current_piece_color#23 +Coalesced [249] current_ypos#69 ← current_ypos#4 +Coalesced (already) [250] current_piece#74 ← current_piece#11 +Coalesced (already) [251] current_orientation#75 ← current_orientation#15 +Coalesced (already) [252] current_piece_gfx#90 ← current_piece_gfx#15 Coalesced (already) [253] current_xpos#99 ← current_xpos#16 -Coalesced [254] play_move_down::movedown#17 ← play_move_down::movedown#7 -Coalesced [255] play_move_down::movedown#15 ← play_move_down::movedown#10 -Coalesced (already) [256] play_move_down::movedown#14 ← play_move_down::movedown#10 -Coalesced [264] lock_current::i#8 ← lock_current::i#3 -Coalesced [276] lock_current::l#7 ← lock_current::l#1 -Coalesced [277] lock_current::i#7 ← lock_current::i#1 -Coalesced (already) [278] lock_current::i#9 ← lock_current::i#1 -Coalesced [279] lock_current::c#5 ← lock_current::c#1 -Coalesced [289] keyboard_event_get::return#6 ← keyboard_event_get::return#1 -Coalesced [290] keyboard_events_size#70 ← keyboard_events_size#4 -Coalesced [293] keyboard_events_size#69 ← keyboard_events_size#13 -Coalesced [294] keyboard_events_size#71 ← keyboard_events_size#19 -Coalesced [302] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 -Coalesced (already) [303] keyboard_events_size#73 ← keyboard_events_size#29 -Coalesced [332] keyboard_event_scan::row#15 ← keyboard_event_scan::row#1 -Coalesced [333] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 -Coalesced (already) [334] keyboard_events_size#72 ← keyboard_events_size#13 -Coalesced [335] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 -Coalesced [336] keyboard_events_size#75 ← keyboard_events_size#29 -Coalesced [346] keyboard_events_size#77 ← keyboard_events_size#2 -Coalesced [352] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#15 -Coalesced [353] keyboard_events_size#74 ← keyboard_events_size#30 -Coalesced [354] keyboard_event_scan::col#9 ← keyboard_event_scan::col#1 -Coalesced (already) [355] keyboard_event_scan::keycode#20 ← keyboard_event_scan::keycode#15 -Coalesced (already) [356] keyboard_events_size#76 ← keyboard_events_size#30 -Coalesced [360] keyboard_events_size#80 ← keyboard_events_size#1 -Coalesced (already) [361] keyboard_events_size#79 ← keyboard_events_size#10 -Coalesced (already) [362] keyboard_events_size#78 ← keyboard_events_size#10 -Coalesced [392] init::line#5 ← init::line#1 -Coalesced [393] init::l#5 ← init::l#1 -Coalesced [394] init::c#3 ← init::c#1 -Coalesced [395] init::j#3 ← init::j#1 -Coalesced [396] init::pli#3 ← init::pli#1 -Coalesced [397] init::i#3 ← init::i#1 -Coalesced [398] init::li#3 ← init::li#1 -Coalesced [401] fill::addr#3 ← fill::addr#0 -Coalesced [407] fill::addr#4 ← fill::addr#1 -Coalesced down to 54 phi equivalence classes +Coalesced (already) [254] current_piece_color#75 ← current_piece_color#11 +Coalesced [255] current_movedown_counter#46 ← current_movedown_counter#10 +Coalesced (already) [256] current_ypos#70 ← current_ypos#12 +Coalesced (already) [257] current_piece#75 ← current_piece#11 +Coalesced (already) [258] current_orientation#76 ← current_orientation#15 +Coalesced (already) [259] current_piece_gfx#91 ← current_piece_gfx#15 +Coalesced (already) [260] current_xpos#100 ← current_xpos#16 +Coalesced (already) [261] current_piece_color#76 ← current_piece_color#11 +Coalesced [262] play_move_down::movedown#17 ← play_move_down::movedown#7 +Coalesced [263] play_move_down::movedown#15 ← play_move_down::movedown#10 +Coalesced (already) [264] play_move_down::movedown#14 ← play_move_down::movedown#10 +Coalesced [278] spawn_current::piece_idx#4 ← spawn_current::piece_idx#1 +Coalesced [282] lock_current::ypos2#7 ← lock_current::ypos2#0 +Coalesced [286] lock_current::i#8 ← lock_current::i#3 +Coalesced [287] lock_current::col#5 ← lock_current::col#0 +Coalesced [299] lock_current::ypos2#8 ← lock_current::ypos2#1 +Not coalescing [300] lock_current::i#7 ← lock_current::i#1 +Coalesced [301] lock_current::l#7 ← lock_current::l#1 +Not coalescing [302] lock_current::i#9 ← lock_current::i#1 +Coalesced [303] lock_current::col#6 ← lock_current::col#1 +Coalesced [304] lock_current::c#5 ← lock_current::c#1 +Coalesced [314] keyboard_event_get::return#6 ← keyboard_event_get::return#1 +Coalesced [315] keyboard_events_size#72 ← keyboard_events_size#4 +Coalesced [318] keyboard_events_size#71 ← keyboard_events_size#13 +Coalesced [319] keyboard_events_size#73 ← keyboard_events_size#19 +Coalesced [327] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 +Coalesced (already) [328] keyboard_events_size#75 ← keyboard_events_size#29 +Coalesced [357] keyboard_event_scan::row#15 ← keyboard_event_scan::row#1 +Coalesced [358] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 +Coalesced (already) [359] keyboard_events_size#74 ← keyboard_events_size#13 +Coalesced [360] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 +Coalesced [361] keyboard_events_size#77 ← keyboard_events_size#29 +Coalesced [371] keyboard_events_size#79 ← keyboard_events_size#2 +Coalesced [377] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#15 +Coalesced [378] keyboard_events_size#76 ← keyboard_events_size#30 +Coalesced [379] keyboard_event_scan::col#9 ← keyboard_event_scan::col#1 +Coalesced (already) [380] keyboard_event_scan::keycode#20 ← keyboard_event_scan::keycode#15 +Coalesced (already) [381] keyboard_events_size#78 ← keyboard_events_size#30 +Coalesced [385] keyboard_events_size#82 ← keyboard_events_size#1 +Coalesced (already) [386] keyboard_events_size#81 ← keyboard_events_size#10 +Coalesced (already) [387] keyboard_events_size#80 ← keyboard_events_size#10 +Coalesced [417] init::line#5 ← init::line#1 +Coalesced [418] init::l#5 ← init::l#1 +Coalesced [419] init::c#3 ← init::c#1 +Coalesced [420] init::j#3 ← init::j#1 +Coalesced [421] init::pli#3 ← init::pli#1 +Coalesced [422] init::i#3 ← init::i#1 +Coalesced [423] init::li#3 ← init::li#1 +Coalesced [426] fill::addr#3 ← fill::addr#0 +Coalesced [432] fill::addr#4 ← fill::addr#1 +Coalesced down to 58 phi equivalence classes Culled Empty Block (label) render_current::@14 Culled Empty Block (label) render_current::@11 Culled Empty Block (label) render_current::@12 @@ -4187,8 +4414,6 @@ Culled Empty Block (label) play_move_down::@24 Culled Empty Block (label) play_move_down::@23 Culled Empty Block (label) play_move_down::@22 Culled Empty Block (label) play_move_down::@21 -Culled Empty Block (label) lock_current::@7 -Culled Empty Block (label) lock_current::@8 Culled Empty Block (label) keyboard_event_get::@7 Culled Empty Block (label) keyboard_event_scan::@30 Culled Empty Block (label) keyboard_event_scan::@32 @@ -4201,18 +4426,17 @@ Culled Empty Block (label) init::@12 Culled Empty Block (label) init::@11 Culled Empty Block (label) fill::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @21 +Adding NOP phi() at start of @23 Adding NOP phi() at start of @end -Adding NOP phi() at start of main::@21 +Adding NOP phi() at start of main Adding NOP phi() at start of main::@22 Adding NOP phi() at start of main::@23 -Adding NOP phi() at start of main::@25 +Adding NOP phi() at start of main::@26 Adding NOP phi() at start of render_playfield Adding NOP phi() at start of play_move_down::@8 Adding NOP phi() at start of play_move_down::@13 Adding NOP phi() at start of play_move_down::@19 -Adding NOP phi() at start of spawn_current -Adding NOP phi() at start of lock_current +Adding NOP phi() at start of spawn_current::@2 Adding NOP phi() at start of keyboard_event_scan Adding NOP phi() at start of keyboard_event_scan::@20 Adding NOP phi() at start of keyboard_event_scan::@21 @@ -4228,609 +4452,654 @@ Adding NOP phi() at start of init::@9 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@21 -@21: scope:[] from @begin + to:@23 +@23: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @21 +@end: scope:[] from @23 [3] phi() -main: scope:[main] from @21 - asm { sei } - [5] call init +main: scope:[main] from @23 + [4] phi() + [5] call sid_rnd_init to:main::@21 main::@21: scope:[main] from main - [6] phi() - [7] call spawn_current + asm { sei } + [7] call init to:main::@22 main::@22: scope:[main] from main::@21 [8] phi() - [9] call render_playfield + [9] call spawn_current to:main::@23 main::@23: scope:[main] from main::@22 [10] phi() - [11] call render_current + [11] call render_playfield + to:main::@24 +main::@24: scope:[main] from main::@23 + [12] (byte*~) current_piece_gfx#84 ← (byte*) current_piece_gfx#10 + [13] (byte~) current_piece_color#72 ← (byte) current_piece_color#15 + [14] call render_current + [15] (byte*~) current_piece#68 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) to:main::@1 -main::@1: scope:[main] from main::@10 main::@23 - [12] (byte) current_movedown_counter#15 ← phi( main::@10/(byte) current_movedown_counter#12 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [12] (byte) keyboard_events_size#19 ← phi( main::@10/(byte) keyboard_events_size#16 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [12] (byte) current_ypos#12 ← phi( main::@10/(byte) current_ypos#16 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [12] (byte) current_xpos#16 ← phi( main::@10/(byte) current_xpos#23 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 3 ) - [12] (byte) current_piece_color#11 ← phi( main::@10/(byte) current_piece_color#13 main::@23/(const byte) GREEN#0 ) - [12] (byte*) current_piece_gfx#15 ← phi( main::@10/(byte*) current_piece_gfx#18 main::@23/(const byte[4*4*4]) piece_t#0 ) - [12] (byte) current_piece_orientation#15 ← phi( main::@10/(byte) current_piece_orientation#23 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [12] (byte*) current_piece#11 ← phi( main::@10/(byte*) current_piece#13 main::@23/(const byte[4*4*4]) piece_t#0 ) +main::@1: scope:[main] from main::@10 main::@24 + [16] (byte) current_movedown_counter#15 ← phi( main::@10/(byte) current_movedown_counter#12 main::@24/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [16] (byte) keyboard_events_size#19 ← phi( main::@10/(byte) keyboard_events_size#16 main::@24/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [16] (byte) current_piece_color#11 ← phi( main::@10/(byte) current_piece_color#13 main::@24/(byte) current_piece_color#15 ) + [16] (byte) current_ypos#12 ← phi( main::@10/(byte) current_ypos#16 main::@24/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [16] (byte) current_xpos#16 ← phi( main::@10/(byte) current_xpos#23 main::@24/(byte/signed byte/word/signed word/dword/signed dword) 3 ) + [16] (byte*) current_piece_gfx#15 ← phi( main::@10/(byte*) current_piece_gfx#18 main::@24/(byte*) current_piece_gfx#10 ) + [16] (byte) current_orientation#15 ← phi( main::@10/(byte) current_orientation#23 main::@24/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [16] (byte*) current_piece#11 ← phi( main::@10/(byte*) current_piece#13 main::@24/(byte*~) current_piece#68 ) to:main::@4 main::@4: scope:[main] from main::@1 main::@4 - [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 + [17] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 main::@7 - [14] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 + [18] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 to:main::@9 main::@9: scope:[main] from main::@7 - [15] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) - [16] call keyboard_event_scan - to:main::@25 -main::@25: scope:[main] from main::@9 - [17] phi() - [18] call keyboard_event_get - [19] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + [19] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + [20] call keyboard_event_scan to:main::@26 -main::@26: scope:[main] from main::@25 - [20] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 - [21] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 - [22] call play_move_down - [23] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 +main::@26: scope:[main] from main::@9 + [21] phi() + [22] call keyboard_event_get + [23] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 to:main::@27 main::@27: scope:[main] from main::@26 - [24] (byte~) main::$8 ← (byte) play_move_down::return#0 - [25] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$8 - [26] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 - [27] call play_move_leftright - [28] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + [24] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 + [25] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 + [26] call play_move_down + [27] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 to:main::@28 main::@28: scope:[main] from main::@27 - [29] (byte~) main::$9 ← (byte) play_move_leftright::return#0 - [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 - [31] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 - [32] call play_move_rotate - [33] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + [28] (byte~) main::$9 ← (byte) play_move_down::return#0 + [29] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$9 + [30] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 + [31] call play_move_leftright + [32] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 to:main::@29 main::@29: scope:[main] from main::@28 - [34] (byte~) main::$10 ← (byte) play_move_rotate::return#0 - [35] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$10 - [36] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 - to:main::@19 -main::@19: scope:[main] from main::@29 - [37] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) - [38] call render_playfield + [33] (byte~) main::$10 ← (byte) play_move_leftright::return#0 + [34] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$10 + [35] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 + [36] call play_move_rotate + [37] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 to:main::@30 -main::@30: scope:[main] from main::@19 - [39] (byte~) current_ypos#72 ← (byte) current_ypos#16 - [40] (byte~) current_xpos#92 ← (byte) current_xpos#23 - [41] (byte*~) current_piece_gfx#82 ← (byte*) current_piece_gfx#18 - [42] (byte~) current_piece_color#70 ← (byte) current_piece_color#13 - [43] call render_current +main::@30: scope:[main] from main::@29 + [38] (byte~) main::$11 ← (byte) play_move_rotate::return#0 + [39] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$11 + [40] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 + to:main::@19 +main::@19: scope:[main] from main::@30 + [41] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + [42] call render_playfield to:main::@31 -main::@31: scope:[main] from main::@30 - [44] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) +main::@31: scope:[main] from main::@19 + [43] (byte~) current_ypos#68 ← (byte) current_ypos#16 + [44] (byte~) current_xpos#93 ← (byte) current_xpos#23 + [45] (byte*~) current_piece_gfx#85 ← (byte*) current_piece_gfx#18 + [46] (byte~) current_piece_color#73 ← (byte) current_piece_color#13 + [47] call render_current + to:main::@32 +main::@32: scope:[main] from main::@31 + [48] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) to:main::@10 -main::@10: scope:[main] from main::@29 main::@31 - [45] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) +main::@10: scope:[main] from main::@30 main::@32 + [49] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) to:main::@1 -render_current: scope:[render_current] from main::@23 main::@30 - [46] (byte) current_piece_color#63 ← phi( main::@23/(const byte) GREEN#0 main::@30/(byte~) current_piece_color#70 ) - [46] (byte*) current_piece_gfx#61 ← phi( main::@23/(const byte[4*4*4]) piece_t#0 main::@30/(byte*~) current_piece_gfx#82 ) - [46] (byte) current_xpos#62 ← phi( main::@23/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@30/(byte~) current_xpos#92 ) - [46] (byte) current_ypos#22 ← phi( main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@30/(byte~) current_ypos#72 ) - [47] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 +render_current: scope:[render_current] from main::@24 main::@31 + [50] (byte) current_piece_color#64 ← phi( main::@24/(byte~) current_piece_color#72 main::@31/(byte~) current_piece_color#73 ) + [50] (byte*) current_piece_gfx#62 ← phi( main::@24/(byte*~) current_piece_gfx#84 main::@31/(byte*~) current_piece_gfx#85 ) + [50] (byte) current_xpos#62 ← phi( main::@24/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@31/(byte~) current_xpos#93 ) + [50] (byte) current_ypos#22 ← phi( main::@24/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@31/(byte~) current_ypos#68 ) + [51] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:render_current::@1 render_current::@1: scope:[render_current] from render_current render_current::@2 - [48] (byte) render_current::i#4 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::i#8 ) - [48] (byte) render_current::l#3 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::l#1 ) - [48] (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@2/(byte) render_current::ypos2#1 ) - [49] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 + [52] (byte) render_current::i#4 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::i#8 ) + [52] (byte) render_current::l#3 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::l#1 ) + [52] (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@2/(byte) render_current::ypos2#1 ) + [53] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 to:render_current::@6 render_current::@6: scope:[render_current] from render_current::@1 - [50] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) - [51] (byte) render_current::xpos#0 ← (byte) current_xpos#62 + [54] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) + [55] (byte) render_current::xpos#0 ← (byte) current_xpos#62 to:render_current::@3 render_current::@3: scope:[render_current] from render_current::@4 render_current::@6 - [52] (byte) render_current::c#2 ← phi( render_current::@4/(byte) render_current::c#1 render_current::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [52] (byte) render_current::xpos#2 ← phi( render_current::@4/(byte) render_current::xpos#1 render_current::@6/(byte) render_current::xpos#0 ) - [52] (byte) render_current::i#2 ← phi( render_current::@4/(byte) render_current::i#1 render_current::@6/(byte) render_current::i#4 ) - [53] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#61 + (byte) render_current::i#2) - [54] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 - [55] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 + [56] (byte) render_current::c#2 ← phi( render_current::@4/(byte) render_current::c#1 render_current::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [56] (byte) render_current::xpos#2 ← phi( render_current::@4/(byte) render_current::xpos#1 render_current::@6/(byte) render_current::xpos#0 ) + [56] (byte) render_current::i#2 ← phi( render_current::@4/(byte) render_current::i#1 render_current::@6/(byte) render_current::i#4 ) + [57] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#62 + (byte) render_current::i#2) + [58] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 + [59] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 to:render_current::@7 render_current::@7: scope:[render_current] from render_current::@3 - [56] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 + [60] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 to:render_current::@8 render_current::@8: scope:[render_current] from render_current::@7 - [57] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#63 + [61] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#64 to:render_current::@4 render_current::@4: scope:[render_current] from render_current::@3 render_current::@7 render_current::@8 - [58] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 - [59] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 - [60] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 + [62] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 + [63] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 + [64] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 to:render_current::@2 render_current::@2: scope:[render_current] from render_current::@1 render_current::@4 - [61] (byte) render_current::i#8 ← phi( render_current::@1/(byte) render_current::i#4 render_current::@4/(byte) render_current::i#1 ) - [62] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [63] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 - [64] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 + [65] (byte) render_current::i#8 ← phi( render_current::@1/(byte) render_current::i#4 render_current::@4/(byte) render_current::i#1 ) + [66] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [67] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 + [68] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 to:render_current::@return render_current::@return: scope:[render_current] from render_current::@2 - [65] return + [69] return to:@return -render_playfield: scope:[render_playfield] from main::@19 main::@22 - [66] phi() +render_playfield: scope:[render_playfield] from main::@19 main::@23 + [70] phi() to:render_playfield::@1 render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3 - [67] (byte) render_playfield::i#3 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::i#1 ) - [67] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::l#1 ) - [68] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [69] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) + [71] (byte) render_playfield::i#3 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::i#1 ) + [71] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::l#1 ) + [72] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [73] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) to:render_playfield::@2 render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2 - [70] (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@2/(byte) render_playfield::c#1 ) - [70] (byte*) render_playfield::line#2 ← phi( render_playfield::@1/(byte*) render_playfield::line#0 render_playfield::@2/(byte*) render_playfield::line#1 ) - [70] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) - [71] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) - [72] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 - [73] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 - [74] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 - [75] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 + [74] (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@2/(byte) render_playfield::c#1 ) + [74] (byte*) render_playfield::line#2 ← phi( render_playfield::@1/(byte*) render_playfield::line#0 render_playfield::@2/(byte*) render_playfield::line#1 ) + [74] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) + [75] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) + [76] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 + [77] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 + [78] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 + [79] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 to:render_playfield::@3 render_playfield::@3: scope:[render_playfield] from render_playfield::@2 - [76] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 - [77] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 + [80] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 + [81] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 to:render_playfield::@return render_playfield::@return: scope:[render_playfield] from render_playfield::@3 - [78] return - to:@return -play_move_rotate: scope:[play_move_rotate] from main::@28 - [79] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 - to:play_move_rotate::@6 -play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate - [80] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 - to:play_move_rotate::@return -play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@11 play_move_rotate::@14 play_move_rotate::@6 - [81] (byte*) current_piece_gfx#18 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#8 play_move_rotate::@14/(byte*) current_piece_gfx#17 play_move_rotate::@6/(byte*) current_piece_gfx#17 ) - [81] (byte) current_piece_orientation#23 ← phi( play_move_rotate::@11/(byte) current_piece_orientation#8 play_move_rotate::@14/(byte) current_piece_orientation#18 play_move_rotate::@6/(byte) current_piece_orientation#18 ) - [81] (byte) play_move_rotate::return#2 ← phi( play_move_rotate::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [82] return to:@return +play_move_rotate: scope:[play_move_rotate] from main::@29 + [83] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 + to:play_move_rotate::@6 +play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate + [84] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 + to:play_move_rotate::@return +play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@11 play_move_rotate::@14 play_move_rotate::@6 + [85] (byte*) current_piece_gfx#18 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#8 play_move_rotate::@14/(byte*) current_piece_gfx#17 play_move_rotate::@6/(byte*) current_piece_gfx#17 ) + [85] (byte) current_orientation#23 ← phi( play_move_rotate::@11/(byte) current_orientation#8 play_move_rotate::@14/(byte) current_orientation#18 play_move_rotate::@6/(byte) current_orientation#18 ) + [85] (byte) play_move_rotate::return#2 ← phi( play_move_rotate::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [86] return + to:@return play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@6 - [83] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 - [84] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 + [87] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 + [88] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 to:play_move_rotate::@4 play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2 - [85] (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) - [86] (byte) collision::xpos#3 ← (byte) current_xpos#23 - [87] (byte) collision::ypos#3 ← (byte) current_ypos#16 - [88] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 - [89] (byte*~) current_piece#70 ← (byte*) current_piece#13 - [90] call collision - [91] (byte) collision::return#13 ← (byte) collision::return#14 + [89] (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) + [90] (byte) collision::xpos#3 ← (byte) current_xpos#23 + [91] (byte) collision::ypos#3 ← (byte) current_ypos#16 + [92] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + [93] (byte*~) current_piece#72 ← (byte*) current_piece#13 + [94] call collision + [95] (byte) collision::return#13 ← (byte) collision::return#14 to:play_move_rotate::@14 play_move_rotate::@14: scope:[play_move_rotate] from play_move_rotate::@4 - [92] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 - [93] (byte~) play_move_rotate::$8 ← (byte~) play_move_rotate::$6 & (const byte) COLLISION_LEFT#0|(const byte) COLLISION_RIGHT#0 - [94] if((byte~) play_move_rotate::$8!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@return + [96] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 + [97] if((byte~) play_move_rotate::$6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@return to:play_move_rotate::@11 play_move_rotate::@11: scope:[play_move_rotate] from play_move_rotate::@14 - [95] (byte) current_piece_orientation#8 ← (byte) play_move_rotate::orientation#3 - [96] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_piece_orientation#8 + [98] (byte) current_orientation#8 ← (byte) play_move_rotate::orientation#3 + [99] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 to:play_move_rotate::@return play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate - [97] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 - [98] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 + [100] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 + [101] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 to:play_move_rotate::@4 collision: scope:[collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 - [99] (byte) collision::xpos#5 ← phi( play_move_down::@12/(byte) collision::xpos#0 play_move_leftright::@1/(byte) collision::xpos#1 play_move_leftright::@7/(byte) collision::xpos#2 play_move_rotate::@4/(byte) collision::xpos#3 ) - [99] (byte) collision::ypos#4 ← phi( play_move_down::@12/(byte) collision::ypos#0 play_move_leftright::@1/(byte) collision::ypos#1 play_move_leftright::@7/(byte) collision::ypos#2 play_move_rotate::@4/(byte) collision::ypos#3 ) - [99] (byte) collision::orientation#4 ← phi( play_move_down::@12/(byte) collision::orientation#0 play_move_leftright::@1/(byte) collision::orientation#1 play_move_leftright::@7/(byte) collision::orientation#2 play_move_rotate::@4/(byte) collision::orientation#3 ) - [99] (byte*) current_piece#15 ← phi( play_move_down::@12/(byte*~) current_piece#67 play_move_leftright::@1/(byte*~) current_piece#68 play_move_leftright::@7/(byte*~) current_piece#69 play_move_rotate::@4/(byte*~) current_piece#70 ) - [100] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 - [101] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [102] (byte) collision::xpos#5 ← phi( play_move_down::@12/(byte) collision::xpos#0 play_move_leftright::@1/(byte) collision::xpos#1 play_move_leftright::@7/(byte) collision::xpos#2 play_move_rotate::@4/(byte) collision::xpos#3 ) + [102] (byte) collision::ypos#4 ← phi( play_move_down::@12/(byte) collision::ypos#0 play_move_leftright::@1/(byte) collision::ypos#1 play_move_leftright::@7/(byte) collision::ypos#2 play_move_rotate::@4/(byte) collision::ypos#3 ) + [102] (byte) collision::orientation#4 ← phi( play_move_down::@12/(byte) collision::orientation#0 play_move_leftright::@1/(byte) collision::orientation#1 play_move_leftright::@7/(byte) collision::orientation#2 play_move_rotate::@4/(byte) collision::orientation#3 ) + [102] (byte*) current_piece#15 ← phi( play_move_down::@12/(byte*~) current_piece#69 play_move_leftright::@1/(byte*~) current_piece#70 play_move_leftright::@7/(byte*~) current_piece#71 play_move_rotate::@4/(byte*~) current_piece#72 ) + [103] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 + [104] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:collision::@1 collision::@1: scope:[collision] from collision collision::@20 - [102] (byte) collision::l#6 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte) collision::l#1 ) - [102] (byte) collision::i#3 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte~) collision::i#11 ) - [102] (byte) collision::ypos2#2 ← phi( collision/(byte) collision::ypos2#0 collision::@20/(byte) collision::ypos2#1 ) - [103] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) - [104] (byte~) collision::col#9 ← (byte) collision::xpos#5 + [105] (byte) collision::l#6 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte) collision::l#1 ) + [105] (byte) collision::i#3 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte~) collision::i#11 ) + [105] (byte) collision::ypos2#2 ← phi( collision/(byte) collision::ypos2#0 collision::@20/(byte) collision::ypos2#1 ) + [106] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) + [107] (byte~) collision::col#9 ← (byte) collision::xpos#5 to:collision::@2 collision::@2: scope:[collision] from collision::@1 collision::@21 - [105] (byte) collision::c#2 ← phi( collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@21/(byte) collision::c#1 ) - [105] (byte) collision::col#2 ← phi( collision::@1/(byte~) collision::col#9 collision::@21/(byte) collision::col#1 ) - [105] (byte) collision::i#2 ← phi( collision::@1/(byte) collision::i#3 collision::@21/(byte~) collision::i#13 ) - [106] (byte) collision::i#1 ← ++ (byte) collision::i#2 - [107] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 + [108] (byte) collision::c#2 ← phi( collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@21/(byte) collision::c#1 ) + [108] (byte) collision::col#2 ← phi( collision::@1/(byte~) collision::col#9 collision::@21/(byte) collision::col#1 ) + [108] (byte) collision::i#2 ← phi( collision::@1/(byte) collision::i#3 collision::@21/(byte~) collision::i#13 ) + [109] (byte) collision::i#1 ← ++ (byte) collision::i#2 + [110] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 to:collision::@8 collision::@8: scope:[collision] from collision::@2 - [108] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 + [111] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 to:collision::@return collision::@return: scope:[collision] from collision::@17 collision::@4 collision::@5 collision::@6 collision::@8 - [109] (byte) collision::return#14 ← phi( collision::@4/(const byte) COLLISION_LEFT#0 collision::@5/(const byte) COLLISION_RIGHT#0 collision::@6/(const byte) COLLISION_PLAYFIELD#0 collision::@17/(const byte) COLLISION_NONE#0 collision::@8/(const byte) COLLISION_BOTTOM#0 ) - [110] return + [112] (byte) collision::return#14 ← phi( collision::@4/(const byte) COLLISION_LEFT#0 collision::@5/(const byte) COLLISION_RIGHT#0 collision::@6/(const byte) COLLISION_PLAYFIELD#0 collision::@17/(const byte) COLLISION_NONE#0 collision::@8/(const byte) COLLISION_BOTTOM#0 ) + [113] return to:@return collision::@4: scope:[collision] from collision::@8 - [111] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 - [112] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 + [114] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 + [115] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 to:collision::@return collision::@5: scope:[collision] from collision::@4 - [113] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 + [116] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 to:collision::@return collision::@6: scope:[collision] from collision::@5 - [114] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 + [117] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 to:collision::@return collision::@3: scope:[collision] from collision::@2 collision::@6 - [115] (byte) collision::col#1 ← ++ (byte) collision::col#2 - [116] (byte) collision::c#1 ← ++ (byte) collision::c#2 - [117] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 + [118] (byte) collision::col#1 ← ++ (byte) collision::col#2 + [119] (byte) collision::c#1 ← ++ (byte) collision::c#2 + [120] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 to:collision::@17 collision::@17: scope:[collision] from collision::@3 - [118] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [119] (byte) collision::l#1 ← ++ (byte) collision::l#6 - [120] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 + [121] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [122] (byte) collision::l#1 ← ++ (byte) collision::l#6 + [123] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 to:collision::@return collision::@20: scope:[collision] from collision::@17 - [121] (byte~) collision::i#11 ← (byte) collision::i#1 + [124] (byte~) collision::i#11 ← (byte) collision::i#1 to:collision::@1 collision::@21: scope:[collision] from collision::@3 - [122] (byte~) collision::i#13 ← (byte) collision::i#1 + [125] (byte~) collision::i#13 ← (byte) collision::i#1 to:collision::@2 -play_move_leftright: scope:[play_move_leftright] from main::@27 - [123] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 +play_move_leftright: scope:[play_move_leftright] from main::@28 + [126] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 to:play_move_leftright::@6 play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright - [124] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return + [127] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return to:play_move_leftright::@7 play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@6 - [125] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [126] (byte) collision::ypos#2 ← (byte) current_ypos#16 - [127] (byte) collision::orientation#2 ← (byte) current_piece_orientation#18 - [128] (byte*~) current_piece#69 ← (byte*) current_piece#13 - [129] call collision - [130] (byte) collision::return#12 ← (byte) collision::return#14 + [128] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [129] (byte) collision::ypos#2 ← (byte) current_ypos#16 + [130] (byte) collision::orientation#2 ← (byte) current_orientation#18 + [131] (byte*~) current_piece#71 ← (byte*) current_piece#13 + [132] call collision + [133] (byte) collision::return#12 ← (byte) collision::return#14 to:play_move_leftright::@15 play_move_leftright::@15: scope:[play_move_leftright] from play_move_leftright::@7 - [131] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 - [132] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [134] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 + [135] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@8 play_move_leftright::@8: scope:[play_move_leftright] from play_move_leftright::@15 - [133] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 + [136] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 to:play_move_leftright::@return play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@11 play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 play_move_leftright::@8 - [134] (byte) current_xpos#23 ← phi( play_move_leftright::@11/(byte) current_xpos#9 play_move_leftright::@15/(byte) current_xpos#19 play_move_leftright::@8/(byte) current_xpos#7 play_move_leftright::@14/(byte) current_xpos#19 play_move_leftright::@6/(byte) current_xpos#19 ) - [134] (byte) play_move_leftright::return#2 ← phi( play_move_leftright::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@15/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [135] return + [137] (byte) current_xpos#23 ← phi( play_move_leftright::@11/(byte) current_xpos#9 play_move_leftright::@15/(byte) current_xpos#19 play_move_leftright::@8/(byte) current_xpos#7 play_move_leftright::@14/(byte) current_xpos#19 play_move_leftright::@6/(byte) current_xpos#19 ) + [137] (byte) play_move_leftright::return#2 ← phi( play_move_leftright::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@15/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [138] return to:@return play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright - [136] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 - [137] (byte) collision::ypos#1 ← (byte) current_ypos#16 - [138] (byte) collision::orientation#1 ← (byte) current_piece_orientation#18 - [139] (byte*~) current_piece#68 ← (byte*) current_piece#13 - [140] call collision - [141] (byte) collision::return#1 ← (byte) collision::return#14 + [139] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 + [140] (byte) collision::ypos#1 ← (byte) current_ypos#16 + [141] (byte) collision::orientation#1 ← (byte) current_orientation#18 + [142] (byte*~) current_piece#70 ← (byte*) current_piece#13 + [143] call collision + [144] (byte) collision::return#1 ← (byte) collision::return#14 to:play_move_leftright::@14 play_move_leftright::@14: scope:[play_move_leftright] from play_move_leftright::@1 - [142] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 - [143] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + [145] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 + [146] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return to:play_move_leftright::@11 play_move_leftright::@11: scope:[play_move_leftright] from play_move_leftright::@14 - [144] (byte) current_xpos#9 ← -- (byte) current_xpos#19 + [147] (byte) current_xpos#9 ← -- (byte) current_xpos#19 to:play_move_leftright::@return -play_move_down: scope:[play_move_down] from main::@26 - [145] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 - [146] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 +play_move_down: scope:[play_move_down] from main::@27 + [148] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 + [149] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 to:play_move_down::@8 play_move_down::@8: scope:[play_move_down] from play_move_down - [147] phi() + [150] phi() to:play_move_down::@1 play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@8 - [148] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [149] call keyboard_event_pressed - [150] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + [151] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [152] call keyboard_event_pressed + [153] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 to:play_move_down::@17 play_move_down::@17: scope:[play_move_down] from play_move_down::@1 - [151] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - [152] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 + [154] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + [155] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 to:play_move_down::@9 play_move_down::@9: scope:[play_move_down] from play_move_down::@17 - [153] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate_fast#0) goto play_move_down::@2 + [156] if((byte) current_movedown_counter#10<(const byte) current_movedown_fast#0) goto play_move_down::@2 to:play_move_down::@10 play_move_down::@10: scope:[play_move_down] from play_move_down::@9 - [154] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 + [157] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 to:play_move_down::@2 play_move_down::@2: scope:[play_move_down] from play_move_down::@10 play_move_down::@17 play_move_down::@9 - [155] (byte) play_move_down::movedown#7 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@9/(byte) play_move_down::movedown#10 ) - [156] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate#0) goto play_move_down::@4 + [158] (byte) play_move_down::movedown#7 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@9/(byte) play_move_down::movedown#10 ) + [159] if((byte) current_movedown_counter#10<(const byte) current_movedown_slow#0) goto play_move_down::@4 to:play_move_down::@11 play_move_down::@11: scope:[play_move_down] from play_move_down::@2 - [157] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 + [160] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 to:play_move_down::@4 play_move_down::@4: scope:[play_move_down] from play_move_down::@11 play_move_down::@2 - [158] (byte) play_move_down::movedown#6 ← phi( play_move_down::@11/(byte) play_move_down::movedown#3 play_move_down::@2/(byte) play_move_down::movedown#7 ) - [159] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return + [161] (byte) play_move_down::movedown#6 ← phi( play_move_down::@11/(byte) play_move_down::movedown#3 play_move_down::@2/(byte) play_move_down::movedown#7 ) + [162] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return to:play_move_down::@12 play_move_down::@12: scope:[play_move_down] from play_move_down::@4 - [160] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [161] (byte) collision::xpos#0 ← (byte) current_xpos#16 - [162] (byte) collision::orientation#0 ← (byte) current_piece_orientation#15 - [163] (byte*~) current_piece#67 ← (byte*) current_piece#11 - [164] call collision - [165] (byte) collision::return#0 ← (byte) collision::return#14 + [163] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [164] (byte) collision::xpos#0 ← (byte) current_xpos#16 + [165] (byte) collision::orientation#0 ← (byte) current_orientation#15 + [166] (byte*~) current_piece#69 ← (byte*) current_piece#11 + [167] call collision + [168] (byte) collision::return#0 ← (byte) collision::return#14 to:play_move_down::@18 play_move_down::@18: scope:[play_move_down] from play_move_down::@12 - [166] (byte~) play_move_down::$12 ← (byte) collision::return#0 - [167] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 + [169] (byte~) play_move_down::$12 ← (byte) collision::return#0 + [170] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 to:play_move_down::@13 play_move_down::@13: scope:[play_move_down] from play_move_down::@18 - [168] phi() - [169] call lock_current + [171] phi() + [172] call lock_current to:play_move_down::@19 play_move_down::@19: scope:[play_move_down] from play_move_down::@13 - [170] phi() - [171] call spawn_current + [173] phi() + [174] call spawn_current + [175] (byte*~) current_piece#73 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) to:play_move_down::@7 play_move_down::@7: scope:[play_move_down] from play_move_down::@19 play_move_down::@6 - [172] (byte) current_xpos#36 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 3 play_move_down::@6/(byte) current_xpos#16 ) - [172] (byte) current_piece_color#23 ← phi( play_move_down::@19/(const byte) GREEN#0 play_move_down::@6/(byte) current_piece_color#11 ) - [172] (byte*) current_piece_gfx#29 ← phi( play_move_down::@19/(const byte[4*4*4]) piece_t#0 play_move_down::@6/(byte*) current_piece_gfx#15 ) - [172] (byte) current_piece_orientation#33 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_piece_orientation#15 ) - [172] (byte*) current_piece#23 ← phi( play_move_down::@19/(const byte[4*4*4]) piece_t#0 play_move_down::@6/(byte*) current_piece#11 ) - [172] (byte) current_ypos#31 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_ypos#4 ) + [176] (byte) current_piece_color#23 ← phi( play_move_down::@19/(byte) current_piece_color#15 play_move_down::@6/(byte) current_piece_color#11 ) + [176] (byte) current_xpos#36 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 3 play_move_down::@6/(byte) current_xpos#16 ) + [176] (byte*) current_piece_gfx#29 ← phi( play_move_down::@19/(byte*) current_piece_gfx#10 play_move_down::@6/(byte*) current_piece_gfx#15 ) + [176] (byte) current_orientation#33 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_orientation#15 ) + [176] (byte*) current_piece#23 ← phi( play_move_down::@19/(byte*~) current_piece#73 play_move_down::@6/(byte*) current_piece#11 ) + [176] (byte) current_ypos#31 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_ypos#4 ) to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@4 play_move_down::@7 - [173] (byte) current_xpos#19 ← phi( play_move_down::@4/(byte) current_xpos#16 play_move_down::@7/(byte) current_xpos#36 ) - [173] (byte) current_piece_color#13 ← phi( play_move_down::@4/(byte) current_piece_color#11 play_move_down::@7/(byte) current_piece_color#23 ) - [173] (byte*) current_piece_gfx#17 ← phi( play_move_down::@4/(byte*) current_piece_gfx#15 play_move_down::@7/(byte*) current_piece_gfx#29 ) - [173] (byte) current_piece_orientation#18 ← phi( play_move_down::@4/(byte) current_piece_orientation#15 play_move_down::@7/(byte) current_piece_orientation#33 ) - [173] (byte*) current_piece#13 ← phi( play_move_down::@4/(byte*) current_piece#11 play_move_down::@7/(byte*) current_piece#23 ) - [173] (byte) current_ypos#16 ← phi( play_move_down::@4/(byte) current_ypos#12 play_move_down::@7/(byte) current_ypos#31 ) - [173] (byte) current_movedown_counter#12 ← phi( play_move_down::@4/(byte) current_movedown_counter#10 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [173] (byte) play_move_down::return#3 ← phi( play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [174] return + [177] (byte) current_piece_color#13 ← phi( play_move_down::@4/(byte) current_piece_color#11 play_move_down::@7/(byte) current_piece_color#23 ) + [177] (byte) current_xpos#19 ← phi( play_move_down::@4/(byte) current_xpos#16 play_move_down::@7/(byte) current_xpos#36 ) + [177] (byte*) current_piece_gfx#17 ← phi( play_move_down::@4/(byte*) current_piece_gfx#15 play_move_down::@7/(byte*) current_piece_gfx#29 ) + [177] (byte) current_orientation#18 ← phi( play_move_down::@4/(byte) current_orientation#15 play_move_down::@7/(byte) current_orientation#33 ) + [177] (byte*) current_piece#13 ← phi( play_move_down::@4/(byte*) current_piece#11 play_move_down::@7/(byte*) current_piece#23 ) + [177] (byte) current_ypos#16 ← phi( play_move_down::@4/(byte) current_ypos#12 play_move_down::@7/(byte) current_ypos#31 ) + [177] (byte) current_movedown_counter#12 ← phi( play_move_down::@4/(byte) current_movedown_counter#10 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [177] (byte) play_move_down::return#3 ← phi( play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [178] return to:@return play_move_down::@6: scope:[play_move_down] from play_move_down::@18 - [175] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 + [179] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 to:play_move_down::@7 -spawn_current: scope:[spawn_current] from main::@21 play_move_down::@19 - [176] phi() +spawn_current: scope:[spawn_current] from main::@22 play_move_down::@19 + [180] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + to:spawn_current::@1 +spawn_current::@1: scope:[spawn_current] from spawn_current spawn_current::@7 + [181] (byte) spawn_current::piece_idx#2 ← phi( spawn_current/(byte/signed byte/word/signed word/dword/signed dword) 7 spawn_current::@7/(byte) spawn_current::piece_idx#1 ) + [182] if((byte) spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto spawn_current::@2 + to:spawn_current::@3 +spawn_current::@3: scope:[spawn_current] from spawn_current::@1 + [183] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) + [184] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [185] (byte*) current_piece_gfx#10 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 + [186] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) to:spawn_current::@return -spawn_current::@return: scope:[spawn_current] from spawn_current - [177] return +spawn_current::@return: scope:[spawn_current] from spawn_current::@3 + [187] return + to:@return +spawn_current::@2: scope:[spawn_current] from spawn_current::@1 + [188] phi() + [189] call sid_rnd + [190] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + to:spawn_current::@7 +spawn_current::@7: scope:[spawn_current] from spawn_current::@2 + [191] (byte~) spawn_current::$1 ← (byte) sid_rnd::return#2 + [192] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 + to:spawn_current::@1 +sid_rnd: scope:[sid_rnd] from spawn_current::@2 + [193] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) + to:sid_rnd::@return +sid_rnd::@return: scope:[sid_rnd] from sid_rnd + [194] return to:@return lock_current: scope:[lock_current] from play_move_down::@13 - [178] phi() + [195] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:lock_current::@1 -lock_current::@1: scope:[lock_current] from lock_current lock_current::@5 - [179] (byte) lock_current::i#3 ← phi( lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@5/(byte) lock_current::i#1 ) - [179] (byte) lock_current::l#2 ← phi( lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@5/(byte) lock_current::l#1 ) - [180] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 - [181] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [182] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) +lock_current::@1: scope:[lock_current] from lock_current lock_current::@7 + [196] (byte) lock_current::l#6 ← phi( lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@7/(byte) lock_current::l#1 ) + [196] (byte) lock_current::i#3 ← phi( lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@7/(byte~) lock_current::i#7 ) + [196] (byte) lock_current::ypos2#2 ← phi( lock_current/(byte) lock_current::ypos2#0 lock_current::@7/(byte) lock_current::ypos2#1 ) + [197] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) + [198] (byte) lock_current::col#0 ← (byte) current_xpos#16 to:lock_current::@2 -lock_current::@2: scope:[lock_current] from lock_current::@1 lock_current::@3 - [183] (byte) lock_current::c#2 ← phi( lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@3/(byte) lock_current::c#1 ) - [183] (byte) lock_current::i#2 ← phi( lock_current::@1/(byte) lock_current::i#3 lock_current::@3/(byte) lock_current::i#1 ) - [184] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#15 + (byte) lock_current::i#2) - [185] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 - [186] if((byte) lock_current::cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 +lock_current::@2: scope:[lock_current] from lock_current::@1 lock_current::@8 + [199] (byte) lock_current::c#2 ← phi( lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@8/(byte) lock_current::c#1 ) + [199] (byte) lock_current::col#2 ← phi( lock_current::@1/(byte) lock_current::col#0 lock_current::@8/(byte) lock_current::col#1 ) + [199] (byte) lock_current::i#2 ← phi( lock_current::@1/(byte) lock_current::i#3 lock_current::@8/(byte~) lock_current::i#9 ) + [200] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 + [201] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 to:lock_current::@4 lock_current::@4: scope:[lock_current] from lock_current::@2 - [187] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 - [188] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 + [202] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 to:lock_current::@3 lock_current::@3: scope:[lock_current] from lock_current::@2 lock_current::@4 - [189] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 - [190] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@2 + [203] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 + [204] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 + [205] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@8 to:lock_current::@5 lock_current::@5: scope:[lock_current] from lock_current::@3 - [191] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#2 - [192] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@1 + [206] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [207] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 + [208] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@7 to:lock_current::@return lock_current::@return: scope:[lock_current] from lock_current::@5 - [193] return + [209] return to:@return +lock_current::@7: scope:[lock_current] from lock_current::@5 + [210] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 + to:lock_current::@1 +lock_current::@8: scope:[lock_current] from lock_current::@3 + [211] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 + to:lock_current::@2 keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@10 keyboard_event_scan::@11 keyboard_event_scan::@20 keyboard_event_scan::@9 play_move_down::@1 - [194] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@10/(const byte) KEY_CTRL#0 keyboard_event_scan::@11/(const byte) KEY_COMMODORE#0 keyboard_event_scan::@20/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@9/(const byte) KEY_RSHIFT#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) - [195] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 - [196] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) - [197] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [198] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) + [212] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@10/(const byte) KEY_CTRL#0 keyboard_event_scan::@11/(const byte) KEY_COMMODORE#0 keyboard_event_scan::@20/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@9/(const byte) KEY_RSHIFT#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) + [213] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 + [214] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) + [215] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [216] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) to:keyboard_event_pressed::@return keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed - [199] return + [217] return to:@return -keyboard_event_get: scope:[keyboard_event_get] from main::@25 - [200] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return +keyboard_event_get: scope:[keyboard_event_get] from main::@26 + [218] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return to:keyboard_event_get::@3 keyboard_event_get::@3: scope:[keyboard_event_get] from keyboard_event_get - [201] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 - [202] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) + [219] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 + [220] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) to:keyboard_event_get::@return keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@3 - [203] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) - [203] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) - [204] return + [221] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) + [221] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) + [222] return to:@return keyboard_event_scan: scope:[keyboard_event_scan] from main::@9 - [205] phi() + [223] phi() to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@3 - [206] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) - [206] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) - [206] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) - [207] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 - [208] call keyboard_matrix_read - [209] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + [224] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) + [224] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) + [224] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) + [225] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 + [226] call keyboard_matrix_read + [227] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 to:keyboard_event_scan::@25 keyboard_event_scan::@25: scope:[keyboard_event_scan] from keyboard_event_scan::@1 - [210] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 - [211] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 + [228] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 + [229] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 to:keyboard_event_scan::@13 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@25 - [212] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 + [230] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 to:keyboard_event_scan::@3 keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@19 - [213] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) - [213] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) - [214] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 - [215] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 + [231] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) + [231] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) + [232] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 + [233] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 to:keyboard_event_scan::@20 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - [216] phi() - [217] call keyboard_event_pressed - [218] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 - to:keyboard_event_scan::@26 -keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - [219] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 - [220] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 - to:keyboard_event_scan::@21 -keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26 - [221] phi() - to:keyboard_event_scan::@9 -keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - [222] phi() - [223] call keyboard_event_pressed - [224] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 - to:keyboard_event_scan::@27 -keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - [225] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 - [226] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 - to:keyboard_event_scan::@22 -keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 - [227] phi() - to:keyboard_event_scan::@10 -keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 - [228] phi() - [229] call keyboard_event_pressed - [230] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 - to:keyboard_event_scan::@28 -keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - [231] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 - [232] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 - to:keyboard_event_scan::@23 -keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28 - [233] phi() - to:keyboard_event_scan::@11 -keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28 [234] phi() [235] call keyboard_event_pressed - [236] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + [236] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + to:keyboard_event_scan::@26 +keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20 + [237] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + [238] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 + to:keyboard_event_scan::@21 +keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26 + [239] phi() + to:keyboard_event_scan::@9 +keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 + [240] phi() + [241] call keyboard_event_pressed + [242] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + to:keyboard_event_scan::@27 +keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9 + [243] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + [244] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 + to:keyboard_event_scan::@22 +keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 + [245] phi() + to:keyboard_event_scan::@10 +keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 + [246] phi() + [247] call keyboard_event_pressed + [248] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + to:keyboard_event_scan::@28 +keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10 + [249] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + [250] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 + to:keyboard_event_scan::@23 +keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28 + [251] phi() + to:keyboard_event_scan::@11 +keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28 + [252] phi() + [253] call keyboard_event_pressed + [254] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@29 keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan::@11 - [237] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 - [238] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return + [255] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + [256] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return to:keyboard_event_scan::@24 keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@29 - [239] phi() + [257] phi() to:keyboard_event_scan::@return keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@24 keyboard_event_scan::@29 - [240] return + [258] return to:@return keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@25 keyboard_event_scan::@5 - [241] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) - [241] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) - [241] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) - [242] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) - [243] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [244] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 + [259] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) + [259] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) + [259] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) + [260] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) + [261] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [262] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 to:keyboard_event_scan::@15 keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@4 - [245] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 + [263] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 to:keyboard_event_scan::@16 keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@15 - [246] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [247] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 + [264] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [265] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 to:keyboard_event_scan::@17 keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [248] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 - [249] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 + [266] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 + [267] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 - [250] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) - [251] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 - [252] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 - [253] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 + [268] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) + [269] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 + [270] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 + [271] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 to:keyboard_event_scan::@19 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@5 - [254] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 + [272] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 to:keyboard_event_scan::@3 keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [255] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 - [256] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 - [257] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 + [273] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 + [274] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 + [275] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@1 - [258] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) - [259] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) + [276] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) + [277] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) to:keyboard_matrix_read::@return keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read - [260] return + [278] return to:@return -init: scope:[init] from main - [261] phi() - [262] call fill +init: scope:[init] from main::@21 + [279] phi() + [280] call fill to:init::@9 init::@9: scope:[init] from init - [263] phi() - [264] call fill + [281] phi() + [282] call fill to:init::@1 init::@1: scope:[init] from init::@1 init::@9 - [265] (byte*) init::li#2 ← phi( init::@1/(byte*) init::li#1 init::@9/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 ) - [265] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [266] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [267] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 - [268] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [269] (byte) init::i#1 ← ++ (byte) init::i#2 - [270] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 + [283] (byte*) init::li#2 ← phi( init::@1/(byte*) init::li#1 init::@9/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 ) + [283] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [284] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [285] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 + [286] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [287] (byte) init::i#1 ← ++ (byte) init::i#2 + [288] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 to:init::@2 init::@2: scope:[init] from init::@1 init::@2 - [271] (byte*) init::pli#2 ← phi( init::@2/(byte*) init::pli#1 init::@1/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 ) - [271] (byte) init::j#2 ← phi( init::@2/(byte) init::j#1 init::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [272] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [273] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 - [274] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 - [275] (byte) init::j#1 ← ++ (byte) init::j#2 - [276] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 + [289] (byte*) init::pli#2 ← phi( init::@2/(byte*) init::pli#1 init::@1/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 ) + [289] (byte) init::j#2 ← phi( init::@2/(byte) init::j#1 init::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [290] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [291] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 + [292] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 + [293] (byte) init::j#1 ← ++ (byte) init::j#2 + [294] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 to:init::@3 init::@3: scope:[init] from init::@2 init::@7 - [277] (byte) init::l#4 ← phi( init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@7/(byte) init::l#1 ) - [277] (byte*) init::line#4 ← phi( init::@2/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 init::@7/(byte*) init::line#1 ) + [295] (byte) init::l#4 ← phi( init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@7/(byte) init::l#1 ) + [295] (byte*) init::line#4 ← phi( init::@2/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 init::@7/(byte*) init::line#1 ) to:init::@4 init::@4: scope:[init] from init::@3 init::@4 - [278] (byte) init::c#2 ← phi( init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@4/(byte) init::c#1 ) - [279] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 - [280] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 - [281] (byte) init::c#1 ← ++ (byte) init::c#2 - [282] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 + [296] (byte) init::c#2 ← phi( init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@4/(byte) init::c#1 ) + [297] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 + [298] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 + [299] (byte) init::c#1 ← ++ (byte) init::c#2 + [300] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 to:init::@7 init::@7: scope:[init] from init::@4 - [283] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [284] (byte) init::l#1 ← ++ (byte) init::l#4 - [285] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 + [301] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [302] (byte) init::l#1 ← ++ (byte) init::l#4 + [303] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 to:init::@return init::@return: scope:[init] from init::@7 - [286] return + [304] return to:@return fill: scope:[fill] from init init::@9 - [287] (byte) fill::val#3 ← phi( init/(byte/word/signed word/dword/signed dword) 160 init::@9/(const byte) BLACK#0 ) - [287] (byte*) fill::addr#0 ← phi( init/(const byte*) SCREEN#0 init::@9/(const byte*) COLS#0 ) - [288] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 + [305] (byte) fill::val#3 ← phi( init/(byte/word/signed word/dword/signed dword) 160 init::@9/(const byte) BLACK#0 ) + [305] (byte*) fill::addr#0 ← phi( init/(const byte*) SCREEN#0 init::@9/(const byte*) COLS#0 ) + [306] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 to:fill::@1 fill::@1: scope:[fill] from fill fill::@1 - [289] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) - [290] *((byte*) fill::addr#2) ← (byte) fill::val#3 - [291] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [292] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 + [307] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) + [308] *((byte*) fill::addr#2) ← (byte) fill::val#3 + [309] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [310] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [293] return + [311] return + to:@return +sid_rnd_init: scope:[sid_rnd_init] from main + [312] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 + [313] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 + to:sid_rnd_init::@return +sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init + [314] return to:@return @@ -4860,10 +5129,25 @@ VARIABLE REGISTER WEIGHTS (byte) KEY_SPACE (byte) KEY_X (byte) KEY_Z +(byte) LIGHT_GREY +(word[]) PIECES +(byte[]) PIECES_COLORS +(byte[4*4*4]) PIECE_I +(byte[4*4*4]) PIECE_J +(byte[4*4*4]) PIECE_L +(byte[4*4*4]) PIECE_O +(byte[4*4*4]) PIECE_S +(byte[4*4*4]) PIECE_T +(byte[4*4*4]) PIECE_Z (byte) PLAYFIELD_COLS (byte) PLAYFIELD_LINES (byte*) RASTER (byte*) SCREEN +(byte) SID_CONTROL_NOISE +(byte*) SID_VOICE3_CONTROL +(word*) SID_VOICE3_FREQ +(byte*) SID_VOICE3_OSC +(byte) WHITE (byte()) collision((byte) collision::xpos , (byte) collision::ypos , (byte) collision::orientation) (byte~) collision::$7 2002.0 (byte) collision::c @@ -4918,53 +5202,59 @@ VARIABLE REGISTER WEIGHTS (byte) current_movedown_counter#10 0.5333333333333333 (byte) current_movedown_counter#12 0.5 (byte) current_movedown_counter#15 1.3 -(byte) current_movedown_rate -(byte) current_movedown_rate_fast +(byte) current_movedown_fast +(byte) current_movedown_slow +(byte) current_orientation +(byte) current_orientation#15 0.5 +(byte) current_orientation#18 0.32653061224489793 +(byte) current_orientation#23 1.0625 +(byte) current_orientation#33 4.0 +(byte) current_orientation#8 3.0 (byte*) current_piece -(byte*) current_piece#11 0.5 -(byte*) current_piece#13 0.3382352941176471 +(byte*) current_piece#11 0.5588235294117647 +(byte*) current_piece#13 0.3432835820895522 (byte*) current_piece#15 10.0 -(byte*) current_piece#23 4.0 -(byte*~) current_piece#67 4.0 +(byte*) current_piece#23 6.0 (byte*~) current_piece#68 4.0 (byte*~) current_piece#69 4.0 (byte*~) current_piece#70 4.0 +(byte*~) current_piece#71 4.0 +(byte*~) current_piece#72 4.0 +(byte*~) current_piece#73 4.0 (byte) current_piece_color -(byte) current_piece_color#11 20.32 +(byte) current_piece_color#11 19.96078431372549 (byte) current_piece_color#13 1.0 -(byte) current_piece_color#23 4.0 -(byte) current_piece_color#63 53.26315789473684 -(byte~) current_piece_color#70 22.0 +(byte) current_piece_color#15 0.7272727272727273 +(byte) current_piece_color#23 6.0 +(byte) current_piece_color#64 53.368421052631575 +(byte~) current_piece_color#72 4.0 +(byte~) current_piece_color#73 22.0 (byte*) current_piece_gfx -(byte*) current_piece_gfx#15 20.32 -(byte*) current_piece_gfx#17 0.2857142857142857 +(byte*) current_piece_gfx#10 0.6666666666666666 +(byte*) current_piece_gfx#15 19.96078431372549 +(byte*) current_piece_gfx#17 0.2962962962962963 (byte*) current_piece_gfx#18 1.75 -(byte*) current_piece_gfx#29 4.0 -(byte*) current_piece_gfx#61 53.26315789473684 +(byte*) current_piece_gfx#29 6.0 +(byte*) current_piece_gfx#62 53.368421052631575 (byte*) current_piece_gfx#8 4.0 -(byte*~) current_piece_gfx#82 11.0 -(byte) current_piece_orientation -(byte) current_piece_orientation#15 0.5 -(byte) current_piece_orientation#18 0.32 -(byte) current_piece_orientation#23 1.0625 -(byte) current_piece_orientation#33 4.0 -(byte) current_piece_orientation#8 3.0 +(byte*~) current_piece_gfx#84 2.0 +(byte*~) current_piece_gfx#85 11.0 (byte) current_xpos -(byte) current_xpos#16 20.36 +(byte) current_xpos#16 2.313725490196078 (byte) current_xpos#19 0.72 -(byte) current_xpos#23 0.8292682926829271 +(byte) current_xpos#23 0.8500000000000003 (byte) current_xpos#36 4.0 (byte) current_xpos#62 5.894736842105264 (byte) current_xpos#7 4.0 (byte) current_xpos#9 4.0 -(byte~) current_xpos#92 7.333333333333333 +(byte~) current_xpos#93 7.333333333333333 (byte) current_ypos -(byte) current_ypos#12 2.4081632653061225 -(byte) current_ypos#16 0.4705882352941177 +(byte) current_ypos#12 0.5588235294117647 +(byte) current_ypos#16 0.47761194029850734 (byte) current_ypos#22 13.0 (byte) current_ypos#31 4.0 (byte) current_ypos#4 4.0 -(byte~) current_ypos#72 5.5 +(byte~) current_ypos#68 5.5 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (byte*) fill::addr (byte*) fill::addr#0 2.0 @@ -5067,28 +5357,31 @@ VARIABLE REGISTER WEIGHTS (byte) keyboard_modifiers (byte[8]) keyboard_scan_values (void()) lock_current() -(byte~) lock_current::$1 202.0 (byte) lock_current::c -(byte) lock_current::c#1 1501.5 -(byte) lock_current::c#2 500.5 -(byte) lock_current::cell -(byte) lock_current::cell#0 1001.0 +(byte) lock_current::c#1 1001.0 +(byte) lock_current::c#2 400.4 (byte) lock_current::col -(byte) lock_current::col#0 2002.0 +(byte) lock_current::col#0 202.0 +(byte) lock_current::col#1 500.5 +(byte) lock_current::col#2 776.0 (byte) lock_current::i -(byte) lock_current::i#1 262.875 +(byte) lock_current::i#1 233.66666666666669 (byte) lock_current::i#2 1552.0 -(byte) lock_current::i#3 50.5 +(byte) lock_current::i#3 67.33333333333333 +(byte~) lock_current::i#7 202.0 +(byte~) lock_current::i#9 2002.0 (byte) lock_current::l -(byte) lock_current::l#1 151.5 -(byte) lock_current::l#2 25.25 -(byte) lock_current::line -(byte) lock_current::line#0 202.0 +(byte) lock_current::l#1 101.0 +(byte) lock_current::l#6 16.833333333333332 (byte*) lock_current::playfield_line -(byte*) lock_current::playfield_line#0 122.44444444444446 +(byte*) lock_current::playfield_line#0 110.19999999999999 +(byte) lock_current::ypos2 +(byte) lock_current::ypos2#0 4.0 +(byte) lock_current::ypos2#1 50.5 +(byte) lock_current::ypos2#2 27.727272727272727 (void()) main() (byte~) main::$10 22.0 -(byte~) main::$8 22.0 +(byte~) main::$11 22.0 (byte~) main::$9 22.0 (byte) main::key_event (byte) main::key_event#0 4.0 @@ -5096,7 +5389,6 @@ VARIABLE REGISTER WEIGHTS (byte) main::render#1 4.4 (byte) main::render#2 4.4 (byte) main::render#3 22.0 -(byte[4*4*4]) piece_t (byte()) play_move_down((byte) play_move_down::key_event) (byte~) play_move_down::$12 4.0 (byte~) play_move_down::$2 4.0 @@ -5123,13 +5415,12 @@ VARIABLE REGISTER WEIGHTS (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 4.0 (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 4.0 (byte~) play_move_rotate::$6 4.0 -(byte~) play_move_rotate::$8 4.0 (byte) play_move_rotate::key_event (byte) play_move_rotate::key_event#0 7.5 (byte) play_move_rotate::orientation (byte) play_move_rotate::orientation#1 4.0 (byte) play_move_rotate::orientation#2 4.0 -(byte) play_move_rotate::orientation#3 0.8 +(byte) play_move_rotate::orientation#3 0.8888888888888888 (byte) play_move_rotate::return (byte) play_move_rotate::return#0 22.0 (byte) play_move_rotate::return#2 3.6666666666666665 @@ -5176,15 +5467,25 @@ VARIABLE REGISTER WEIGHTS (byte*) render_playfield::line#1 500.5 (byte*) render_playfield::line#2 1552.0 (byte*[PLAYFIELD_LINES#0+3]) screen_lines +(byte()) sid_rnd() +(byte) sid_rnd::return +(byte) sid_rnd::return#0 34.33333333333333 +(byte) sid_rnd::return#2 202.0 +(void()) sid_rnd_init() (void()) spawn_current() +(byte~) spawn_current::$1 202.0 +(byte~) spawn_current::$3 0.18181818181818182 +(byte) spawn_current::piece_idx +(byte) spawn_current::piece_idx#1 202.0 +(byte) spawn_current::piece_idx#2 41.199999999999996 Initial phi equivalence classes [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] -[ current_ypos#22 current_ypos#72 ] -[ current_xpos#62 current_xpos#92 ] -[ current_piece_gfx#61 current_piece_gfx#82 ] -[ current_piece_color#63 current_piece_color#70 ] +[ current_ypos#22 current_ypos#68 ] +[ current_xpos#62 current_xpos#93 ] +[ current_piece_gfx#62 current_piece_gfx#84 current_piece_gfx#85 ] +[ current_piece_color#64 current_piece_color#72 current_piece_color#73 ] [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] [ render_current::l#3 render_current::l#1 ] [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] @@ -5196,7 +5497,7 @@ Initial phi equivalence classes [ render_playfield::c#2 render_playfield::c#1 ] [ play_move_rotate::return#2 ] [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -[ current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 ] +[ current_piece#15 current_piece#69 current_piece#70 current_piece#71 current_piece#72 ] [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] @@ -5208,14 +5509,17 @@ Initial phi equivalence classes [ collision::return#14 ] [ play_move_leftright::return#2 ] [ 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 ] -[ current_piece#23 current_piece#11 current_piece#13 ] -[ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] -[ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#8 current_piece_gfx#17 ] -[ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] +[ current_piece#23 current_piece#73 current_piece#11 current_piece#13 current_piece#68 ] +[ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] +[ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#8 current_piece_gfx#17 ] [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +[ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] [ play_move_down::return#3 ] -[ lock_current::l#2 lock_current::l#1 ] -[ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] +[ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] +[ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] +[ lock_current::l#6 lock_current::l#1 ] +[ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] +[ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] [ lock_current::c#2 lock_current::c#1 ] [ keyboard_event_pressed::keycode#5 ] [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] @@ -5236,15 +5540,15 @@ Added variable keyboard_event_get::return#3 to zero page equivalence class [ key Added variable main::key_event#0 to zero page equivalence class [ main::key_event#0 ] Added variable play_move_down::key_event#0 to zero page equivalence class [ play_move_down::key_event#0 ] Added variable play_move_down::return#0 to zero page equivalence class [ play_move_down::return#0 ] -Added variable main::$8 to zero page equivalence class [ main::$8 ] +Added variable main::$9 to zero page equivalence class [ main::$9 ] Added variable main::render#1 to zero page equivalence class [ main::render#1 ] Added variable play_move_leftright::key_event#0 to zero page equivalence class [ play_move_leftright::key_event#0 ] Added variable play_move_leftright::return#0 to zero page equivalence class [ play_move_leftright::return#0 ] -Added variable main::$9 to zero page equivalence class [ main::$9 ] +Added variable main::$10 to zero page equivalence class [ main::$10 ] Added variable main::render#2 to zero page equivalence class [ main::render#2 ] Added variable play_move_rotate::key_event#0 to zero page equivalence class [ play_move_rotate::key_event#0 ] Added variable play_move_rotate::return#0 to zero page equivalence class [ play_move_rotate::return#0 ] -Added variable main::$10 to zero page equivalence class [ main::$10 ] +Added variable main::$11 to zero page equivalence class [ main::$11 ] Added variable main::render#3 to zero page equivalence class [ main::render#3 ] Added variable render_current::screen_line#0 to zero page equivalence class [ render_current::screen_line#0 ] Added variable render_current::current_cell#0 to zero page equivalence class [ render_current::current_cell#0 ] @@ -5252,7 +5556,6 @@ Added variable render_playfield::$1 to zero page equivalence class [ render_play Added variable play_move_rotate::$2 to zero page equivalence class [ play_move_rotate::$2 ] Added variable collision::return#13 to zero page equivalence class [ collision::return#13 ] Added variable play_move_rotate::$6 to zero page equivalence class [ play_move_rotate::$6 ] -Added variable play_move_rotate::$8 to zero page equivalence class [ play_move_rotate::$8 ] Added variable play_move_rotate::$4 to zero page equivalence class [ play_move_rotate::$4 ] Added variable collision::piece_gfx#0 to zero page equivalence class [ collision::piece_gfx#0 ] Added variable collision::playfield_line#0 to zero page equivalence class [ collision::playfield_line#0 ] @@ -5266,11 +5569,12 @@ Added variable keyboard_event_pressed::return#12 to zero page equivalence class Added variable play_move_down::$2 to zero page equivalence class [ play_move_down::$2 ] Added variable collision::return#0 to zero page equivalence class [ collision::return#0 ] Added variable play_move_down::$12 to zero page equivalence class [ play_move_down::$12 ] -Added variable lock_current::line#0 to zero page equivalence class [ lock_current::line#0 ] -Added variable lock_current::$1 to zero page equivalence class [ lock_current::$1 ] +Added variable spawn_current::$3 to zero page equivalence class [ spawn_current::$3 ] +Added variable sid_rnd::return#2 to zero page equivalence class [ sid_rnd::return#2 ] +Added variable spawn_current::$1 to zero page equivalence class [ spawn_current::$1 ] +Added variable sid_rnd::return#0 to zero page equivalence class [ sid_rnd::return#0 ] Added variable lock_current::playfield_line#0 to zero page equivalence class [ lock_current::playfield_line#0 ] -Added variable lock_current::cell#0 to zero page equivalence class [ lock_current::cell#0 ] -Added variable lock_current::col#0 to zero page equivalence class [ lock_current::col#0 ] +Added variable lock_current::i#1 to zero page equivalence class [ lock_current::i#1 ] Added variable keyboard_event_pressed::$0 to zero page equivalence class [ keyboard_event_pressed::$0 ] Added variable keyboard_event_pressed::row_bits#0 to zero page equivalence class [ keyboard_event_pressed::row_bits#0 ] Added variable keyboard_event_pressed::$1 to zero page equivalence class [ keyboard_event_pressed::$1 ] @@ -5298,10 +5602,10 @@ Added variable fill::end#0 to zero page equivalence class [ fill::end#0 ] Complete equivalence classes [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] -[ current_ypos#22 current_ypos#72 ] -[ current_xpos#62 current_xpos#92 ] -[ current_piece_gfx#61 current_piece_gfx#82 ] -[ current_piece_color#63 current_piece_color#70 ] +[ current_ypos#22 current_ypos#68 ] +[ current_xpos#62 current_xpos#93 ] +[ current_piece_gfx#62 current_piece_gfx#84 current_piece_gfx#85 ] +[ current_piece_color#64 current_piece_color#72 current_piece_color#73 ] [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] [ render_current::l#3 render_current::l#1 ] [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] @@ -5313,7 +5617,7 @@ Complete equivalence classes [ render_playfield::c#2 render_playfield::c#1 ] [ play_move_rotate::return#2 ] [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -[ current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 ] +[ current_piece#15 current_piece#69 current_piece#70 current_piece#71 current_piece#72 ] [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] @@ -5325,14 +5629,17 @@ Complete equivalence classes [ collision::return#14 ] [ play_move_leftright::return#2 ] [ 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 ] -[ current_piece#23 current_piece#11 current_piece#13 ] -[ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] -[ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#8 current_piece_gfx#17 ] -[ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] +[ current_piece#23 current_piece#73 current_piece#11 current_piece#13 current_piece#68 ] +[ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] +[ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#8 current_piece_gfx#17 ] [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +[ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] [ play_move_down::return#3 ] -[ lock_current::l#2 lock_current::l#1 ] -[ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] +[ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] +[ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] +[ lock_current::l#6 lock_current::l#1 ] +[ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] +[ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] [ lock_current::c#2 lock_current::c#1 ] [ keyboard_event_pressed::keycode#5 ] [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] @@ -5353,15 +5660,15 @@ Complete equivalence classes [ main::key_event#0 ] [ play_move_down::key_event#0 ] [ play_move_down::return#0 ] -[ main::$8 ] +[ main::$9 ] [ main::render#1 ] [ play_move_leftright::key_event#0 ] [ play_move_leftright::return#0 ] -[ main::$9 ] +[ main::$10 ] [ main::render#2 ] [ play_move_rotate::key_event#0 ] [ play_move_rotate::return#0 ] -[ main::$10 ] +[ main::$11 ] [ main::render#3 ] [ render_current::screen_line#0 ] [ render_current::current_cell#0 ] @@ -5369,7 +5676,6 @@ Complete equivalence classes [ play_move_rotate::$2 ] [ collision::return#13 ] [ play_move_rotate::$6 ] -[ play_move_rotate::$8 ] [ play_move_rotate::$4 ] [ collision::piece_gfx#0 ] [ collision::playfield_line#0 ] @@ -5383,11 +5689,12 @@ Complete equivalence classes [ play_move_down::$2 ] [ collision::return#0 ] [ play_move_down::$12 ] -[ lock_current::line#0 ] -[ lock_current::$1 ] +[ spawn_current::$3 ] +[ sid_rnd::return#2 ] +[ spawn_current::$1 ] +[ sid_rnd::return#0 ] [ lock_current::playfield_line#0 ] -[ lock_current::cell#0 ] -[ lock_current::col#0 ] +[ lock_current::i#1 ] [ keyboard_event_pressed::$0 ] [ keyboard_event_pressed::row_bits#0 ] [ keyboard_event_pressed::$1 ] @@ -5414,10 +5721,10 @@ Complete equivalence classes [ fill::end#0 ] Allocated zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] Allocated zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] -Allocated zp ZP_BYTE:4 [ current_ypos#22 current_ypos#72 ] -Allocated zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 ] -Allocated zp ZP_WORD:6 [ current_piece_gfx#61 current_piece_gfx#82 ] -Allocated zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 ] +Allocated zp ZP_BYTE:4 [ current_ypos#22 current_ypos#68 ] +Allocated zp ZP_BYTE:5 [ current_xpos#62 current_xpos#93 ] +Allocated zp ZP_WORD:6 [ current_piece_gfx#62 current_piece_gfx#84 current_piece_gfx#85 ] +Allocated zp ZP_BYTE:8 [ current_piece_color#64 current_piece_color#72 current_piece_color#73 ] Allocated zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] Allocated zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] Allocated zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] @@ -5429,7 +5736,7 @@ Allocated zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 rend Allocated zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] Allocated zp ZP_BYTE:19 [ play_move_rotate::return#2 ] Allocated zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Allocated zp ZP_WORD:21 [ current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 ] +Allocated zp ZP_WORD:21 [ current_piece#15 current_piece#69 current_piece#70 current_piece#71 current_piece#72 ] Allocated zp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] Allocated zp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] Allocated zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] @@ -5441,93 +5748,96 @@ Allocated zp ZP_BYTE:30 [ collision::c#2 collision::c#1 ] Allocated zp ZP_BYTE:31 [ collision::return#14 ] Allocated zp ZP_BYTE:32 [ play_move_leftright::return#2 ] Allocated zp ZP_BYTE:33 [ 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 ] -Allocated zp ZP_WORD:34 [ current_piece#23 current_piece#11 current_piece#13 ] -Allocated zp ZP_BYTE:36 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] -Allocated zp ZP_WORD:37 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#8 current_piece_gfx#17 ] -Allocated zp ZP_BYTE:39 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] -Allocated zp ZP_BYTE:40 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +Allocated zp ZP_WORD:34 [ current_piece#23 current_piece#73 current_piece#11 current_piece#13 current_piece#68 ] +Allocated zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] +Allocated zp ZP_WORD:37 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#8 current_piece_gfx#17 ] +Allocated zp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +Allocated zp ZP_BYTE:40 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] Allocated zp ZP_BYTE:41 [ play_move_down::return#3 ] -Allocated zp ZP_BYTE:42 [ lock_current::l#2 lock_current::l#1 ] -Allocated zp ZP_BYTE:43 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] -Allocated zp ZP_BYTE:44 [ lock_current::c#2 lock_current::c#1 ] -Allocated zp ZP_BYTE:45 [ keyboard_event_pressed::keycode#5 ] -Allocated zp ZP_BYTE:46 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Allocated zp ZP_BYTE:47 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Allocated zp ZP_BYTE:48 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Allocated zp ZP_BYTE:49 [ 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 ] -Allocated zp ZP_BYTE:50 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] -Allocated zp ZP_BYTE:51 [ init::i#2 init::i#1 ] -Allocated zp ZP_WORD:52 [ init::li#2 init::li#1 ] -Allocated zp ZP_BYTE:54 [ init::j#2 init::j#1 ] -Allocated zp ZP_WORD:55 [ init::pli#2 init::pli#1 ] -Allocated zp ZP_WORD:57 [ init::line#4 init::line#1 ] -Allocated zp ZP_BYTE:59 [ init::l#4 init::l#1 ] -Allocated zp ZP_BYTE:60 [ init::c#2 init::c#1 ] -Allocated zp ZP_BYTE:61 [ fill::val#3 ] -Allocated zp ZP_WORD:62 [ fill::addr#2 fill::addr#0 fill::addr#1 ] -Allocated zp ZP_BYTE:64 [ keyboard_event_get::return#3 ] -Allocated zp ZP_BYTE:65 [ main::key_event#0 ] -Allocated zp ZP_BYTE:66 [ play_move_down::key_event#0 ] -Allocated zp ZP_BYTE:67 [ play_move_down::return#0 ] -Allocated zp ZP_BYTE:68 [ main::$8 ] -Allocated zp ZP_BYTE:69 [ main::render#1 ] -Allocated zp ZP_BYTE:70 [ play_move_leftright::key_event#0 ] -Allocated zp ZP_BYTE:71 [ play_move_leftright::return#0 ] -Allocated zp ZP_BYTE:72 [ main::$9 ] -Allocated zp ZP_BYTE:73 [ main::render#2 ] -Allocated zp ZP_BYTE:74 [ play_move_rotate::key_event#0 ] -Allocated zp ZP_BYTE:75 [ play_move_rotate::return#0 ] -Allocated zp ZP_BYTE:76 [ main::$10 ] -Allocated zp ZP_BYTE:77 [ main::render#3 ] -Allocated zp ZP_WORD:78 [ render_current::screen_line#0 ] -Allocated zp ZP_BYTE:80 [ render_current::current_cell#0 ] -Allocated zp ZP_BYTE:81 [ render_playfield::$1 ] -Allocated zp ZP_BYTE:82 [ play_move_rotate::$2 ] -Allocated zp ZP_BYTE:83 [ collision::return#13 ] -Allocated zp ZP_BYTE:84 [ play_move_rotate::$6 ] -Allocated zp ZP_BYTE:85 [ play_move_rotate::$8 ] -Allocated zp ZP_BYTE:86 [ play_move_rotate::$4 ] -Allocated zp ZP_WORD:87 [ collision::piece_gfx#0 ] -Allocated zp ZP_WORD:89 [ collision::playfield_line#0 ] -Allocated zp ZP_BYTE:91 [ collision::i#1 ] -Allocated zp ZP_BYTE:92 [ collision::$7 ] -Allocated zp ZP_BYTE:93 [ collision::return#12 ] -Allocated zp ZP_BYTE:94 [ play_move_leftright::$4 ] -Allocated zp ZP_BYTE:95 [ collision::return#1 ] -Allocated zp ZP_BYTE:96 [ play_move_leftright::$8 ] -Allocated zp ZP_BYTE:97 [ keyboard_event_pressed::return#12 ] -Allocated zp ZP_BYTE:98 [ play_move_down::$2 ] -Allocated zp ZP_BYTE:99 [ collision::return#0 ] -Allocated zp ZP_BYTE:100 [ play_move_down::$12 ] -Allocated zp ZP_BYTE:101 [ lock_current::line#0 ] -Allocated zp ZP_BYTE:102 [ lock_current::$1 ] -Allocated zp ZP_WORD:103 [ lock_current::playfield_line#0 ] -Allocated zp ZP_BYTE:105 [ lock_current::cell#0 ] -Allocated zp ZP_BYTE:106 [ lock_current::col#0 ] -Allocated zp ZP_BYTE:107 [ keyboard_event_pressed::$0 ] -Allocated zp ZP_BYTE:108 [ keyboard_event_pressed::row_bits#0 ] -Allocated zp ZP_BYTE:109 [ keyboard_event_pressed::$1 ] -Allocated zp ZP_BYTE:110 [ keyboard_event_pressed::return#11 ] -Allocated zp ZP_BYTE:111 [ keyboard_matrix_read::rowid#0 ] -Allocated zp ZP_BYTE:112 [ keyboard_matrix_read::return#2 ] -Allocated zp ZP_BYTE:113 [ keyboard_event_scan::row_scan#0 ] -Allocated zp ZP_BYTE:114 [ keyboard_event_pressed::return#0 ] -Allocated zp ZP_BYTE:115 [ keyboard_event_scan::$14 ] -Allocated zp ZP_BYTE:116 [ keyboard_event_pressed::return#1 ] -Allocated zp ZP_BYTE:117 [ keyboard_event_scan::$18 ] -Allocated zp ZP_BYTE:118 [ keyboard_event_pressed::return#2 ] -Allocated zp ZP_BYTE:119 [ keyboard_event_scan::$22 ] -Allocated zp ZP_BYTE:120 [ keyboard_event_pressed::return#10 ] -Allocated zp ZP_BYTE:121 [ keyboard_event_scan::$26 ] -Allocated zp ZP_BYTE:122 [ keyboard_event_scan::$3 ] -Allocated zp ZP_BYTE:123 [ keyboard_event_scan::$4 ] -Allocated zp ZP_BYTE:124 [ keyboard_event_scan::event_type#0 ] -Allocated zp ZP_BYTE:125 [ keyboard_event_scan::$11 ] -Allocated zp ZP_BYTE:126 [ keyboard_matrix_read::return#0 ] -Allocated zp ZP_BYTE:127 [ init::$5 ] -Allocated zp ZP_BYTE:128 [ init::$8 ] -Allocated zp ZP_WORD:129 [ init::$13 ] -Allocated zp ZP_WORD:131 [ fill::end#0 ] +Allocated zp ZP_BYTE:42 [ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] +Allocated zp ZP_BYTE:43 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] +Allocated zp ZP_BYTE:44 [ lock_current::l#6 lock_current::l#1 ] +Allocated zp ZP_BYTE:45 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] +Allocated zp ZP_BYTE:46 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] +Allocated zp ZP_BYTE:47 [ lock_current::c#2 lock_current::c#1 ] +Allocated zp ZP_BYTE:48 [ keyboard_event_pressed::keycode#5 ] +Allocated zp ZP_BYTE:49 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Allocated zp ZP_BYTE:50 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Allocated zp ZP_BYTE:51 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Allocated zp ZP_BYTE:52 [ 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 ] +Allocated zp ZP_BYTE:53 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Allocated zp ZP_BYTE:54 [ init::i#2 init::i#1 ] +Allocated zp ZP_WORD:55 [ init::li#2 init::li#1 ] +Allocated zp ZP_BYTE:57 [ init::j#2 init::j#1 ] +Allocated zp ZP_WORD:58 [ init::pli#2 init::pli#1 ] +Allocated zp ZP_WORD:60 [ init::line#4 init::line#1 ] +Allocated zp ZP_BYTE:62 [ init::l#4 init::l#1 ] +Allocated zp ZP_BYTE:63 [ init::c#2 init::c#1 ] +Allocated zp ZP_BYTE:64 [ fill::val#3 ] +Allocated zp ZP_WORD:65 [ fill::addr#2 fill::addr#0 fill::addr#1 ] +Allocated zp ZP_BYTE:67 [ keyboard_event_get::return#3 ] +Allocated zp ZP_BYTE:68 [ main::key_event#0 ] +Allocated zp ZP_BYTE:69 [ play_move_down::key_event#0 ] +Allocated zp ZP_BYTE:70 [ play_move_down::return#0 ] +Allocated zp ZP_BYTE:71 [ main::$9 ] +Allocated zp ZP_BYTE:72 [ main::render#1 ] +Allocated zp ZP_BYTE:73 [ play_move_leftright::key_event#0 ] +Allocated zp ZP_BYTE:74 [ play_move_leftright::return#0 ] +Allocated zp ZP_BYTE:75 [ main::$10 ] +Allocated zp ZP_BYTE:76 [ main::render#2 ] +Allocated zp ZP_BYTE:77 [ play_move_rotate::key_event#0 ] +Allocated zp ZP_BYTE:78 [ play_move_rotate::return#0 ] +Allocated zp ZP_BYTE:79 [ main::$11 ] +Allocated zp ZP_BYTE:80 [ main::render#3 ] +Allocated zp ZP_WORD:81 [ render_current::screen_line#0 ] +Allocated zp ZP_BYTE:83 [ render_current::current_cell#0 ] +Allocated zp ZP_BYTE:84 [ render_playfield::$1 ] +Allocated zp ZP_BYTE:85 [ play_move_rotate::$2 ] +Allocated zp ZP_BYTE:86 [ collision::return#13 ] +Allocated zp ZP_BYTE:87 [ play_move_rotate::$6 ] +Allocated zp ZP_BYTE:88 [ play_move_rotate::$4 ] +Allocated zp ZP_WORD:89 [ collision::piece_gfx#0 ] +Allocated zp ZP_WORD:91 [ collision::playfield_line#0 ] +Allocated zp ZP_BYTE:93 [ collision::i#1 ] +Allocated zp ZP_BYTE:94 [ collision::$7 ] +Allocated zp ZP_BYTE:95 [ collision::return#12 ] +Allocated zp ZP_BYTE:96 [ play_move_leftright::$4 ] +Allocated zp ZP_BYTE:97 [ collision::return#1 ] +Allocated zp ZP_BYTE:98 [ play_move_leftright::$8 ] +Allocated zp ZP_BYTE:99 [ keyboard_event_pressed::return#12 ] +Allocated zp ZP_BYTE:100 [ play_move_down::$2 ] +Allocated zp ZP_BYTE:101 [ collision::return#0 ] +Allocated zp ZP_BYTE:102 [ play_move_down::$12 ] +Allocated zp ZP_BYTE:103 [ spawn_current::$3 ] +Allocated zp ZP_BYTE:104 [ sid_rnd::return#2 ] +Allocated zp ZP_BYTE:105 [ spawn_current::$1 ] +Allocated zp ZP_BYTE:106 [ sid_rnd::return#0 ] +Allocated zp ZP_WORD:107 [ lock_current::playfield_line#0 ] +Allocated zp ZP_BYTE:109 [ lock_current::i#1 ] +Allocated zp ZP_BYTE:110 [ keyboard_event_pressed::$0 ] +Allocated zp ZP_BYTE:111 [ keyboard_event_pressed::row_bits#0 ] +Allocated zp ZP_BYTE:112 [ keyboard_event_pressed::$1 ] +Allocated zp ZP_BYTE:113 [ keyboard_event_pressed::return#11 ] +Allocated zp ZP_BYTE:114 [ keyboard_matrix_read::rowid#0 ] +Allocated zp ZP_BYTE:115 [ keyboard_matrix_read::return#2 ] +Allocated zp ZP_BYTE:116 [ keyboard_event_scan::row_scan#0 ] +Allocated zp ZP_BYTE:117 [ keyboard_event_pressed::return#0 ] +Allocated zp ZP_BYTE:118 [ keyboard_event_scan::$14 ] +Allocated zp ZP_BYTE:119 [ keyboard_event_pressed::return#1 ] +Allocated zp ZP_BYTE:120 [ keyboard_event_scan::$18 ] +Allocated zp ZP_BYTE:121 [ keyboard_event_pressed::return#2 ] +Allocated zp ZP_BYTE:122 [ keyboard_event_scan::$22 ] +Allocated zp ZP_BYTE:123 [ keyboard_event_pressed::return#10 ] +Allocated zp ZP_BYTE:124 [ keyboard_event_scan::$26 ] +Allocated zp ZP_BYTE:125 [ keyboard_event_scan::$3 ] +Allocated zp ZP_BYTE:126 [ keyboard_event_scan::$4 ] +Allocated zp ZP_BYTE:127 [ keyboard_event_scan::event_type#0 ] +Allocated zp ZP_BYTE:128 [ keyboard_event_scan::$11 ] +Allocated zp ZP_BYTE:129 [ keyboard_matrix_read::return#0 ] +Allocated zp ZP_BYTE:130 [ init::$5 ] +Allocated zp ZP_BYTE:131 [ init::$8 ] +Allocated zp ZP_WORD:132 [ init::$13 ] +Allocated zp ZP_WORD:134 [ fill::end#0 ] INITIAL ASM //SEG0 Basic Upstart @@ -5541,8 +5851,10 @@ INITIAL ASM .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 @@ -5552,648 +5864,650 @@ INITIAL ASM .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 .const COLLISION_LEFT = 4 .const COLLISION_RIGHT = 8 - .label keyboard_events_size = $32 + .label keyboard_events_size = $35 .label current_ypos = 2 - .label current_xpos = $28 - .label current_piece_orientation = $24 + .label current_xpos = $27 + .label current_orientation = $24 .label current_piece_gfx = $25 .label current_piece = $22 - .label current_piece_color = $27 + .label current_piece_color = $28 .label current_movedown_counter = 3 .label current_piece_15 = $15 .label current_ypos_22 = 4 .label current_xpos_62 = 5 - .label current_piece_gfx_61 = 6 - .label current_piece_color_63 = 8 - .label current_ypos_72 = 4 - .label current_xpos_92 = 5 - .label current_piece_gfx_82 = 6 - .label current_piece_color_70 = 8 - .label current_piece_67 = $15 - .label current_piece_68 = $15 + .label current_piece_gfx_62 = 6 + .label current_piece_color_64 = 8 + .label current_ypos_68 = 4 + .label current_xpos_93 = 5 + .label current_piece_gfx_84 = 6 + .label current_piece_gfx_85 = 6 + .label current_piece_color_72 = 8 + .label current_piece_color_73 = 8 .label current_piece_69 = $15 .label current_piece_70 = $15 + .label current_piece_71 = $15 + .label current_piece_72 = $15 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @21 [phi:@begin->@21] -b21_from_bbegin: - jmp b21 -//SEG4 @21 -b21: +//SEG3 [1] phi from @begin to @23 [phi:@begin->@23] +b23_from_bbegin: + jmp b23 +//SEG4 @23 +b23: //SEG5 [2] call main +//SEG6 [4] phi from @23 to main [phi:@23->main] +main_from_b23: jsr main -//SEG6 [3] phi from @21 to @end [phi:@21->@end] -bend_from_b21: +//SEG7 [3] phi from @23 to @end [phi:@23->@end] +bend_from_b23: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { - .label _8 = $44 - .label _9 = $48 - .label _10 = $4c - .label key_event = $41 - .label render = $45 - .label render_2 = $49 - .label render_3 = $4d - //SEG9 asm { sei } - sei - //SEG10 [5] call init - //SEG11 [261] phi from main to init [phi:main->init] - init_from_main: - jsr init - //SEG12 [6] phi from main to main::@21 [phi:main->main::@21] - b21_from_main: + .label _9 = $47 + .label _10 = $4b + .label _11 = $4f + .label key_event = $44 + .label render = $48 + .label render_2 = $4c + .label render_3 = $50 + //SEG10 [5] call sid_rnd_init + jsr sid_rnd_init jmp b21 - //SEG13 main::@21 + //SEG11 main::@21 b21: - //SEG14 [7] call spawn_current - //SEG15 [176] phi from main::@21 to spawn_current [phi:main::@21->spawn_current] - spawn_current_from_b21: - jsr spawn_current - //SEG16 [8] phi from main::@21 to main::@22 [phi:main::@21->main::@22] + //SEG12 asm { sei } + sei + //SEG13 [7] call init + //SEG14 [279] phi from main::@21 to init [phi:main::@21->init] + init_from_b21: + jsr init + //SEG15 [8] phi from main::@21 to main::@22 [phi:main::@21->main::@22] b22_from_b21: jmp b22 - //SEG17 main::@22 + //SEG16 main::@22 b22: - //SEG18 [9] call render_playfield - //SEG19 [66] phi from main::@22 to render_playfield [phi:main::@22->render_playfield] - render_playfield_from_b22: - jsr render_playfield - //SEG20 [10] phi from main::@22 to main::@23 [phi:main::@22->main::@23] + //SEG17 [9] call spawn_current + jsr spawn_current + //SEG18 [10] phi from main::@22 to main::@23 [phi:main::@22->main::@23] b23_from_b22: jmp b23 - //SEG21 main::@23 + //SEG19 main::@23 b23: - //SEG22 [11] call render_current - //SEG23 [46] phi from main::@23 to render_current [phi:main::@23->render_current] - render_current_from_b23: - //SEG24 [46] phi (byte) current_piece_color#63 = (const byte) GREEN#0 [phi:main::@23->render_current#0] -- vbuz1=vbuc1 - lda #GREEN - sta current_piece_color_63 - //SEG25 [46] phi (byte*) current_piece_gfx#61 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->render_current#1] -- pbuz1=pbuc1 - lda #piece_t - sta current_piece_gfx_61+1 - //SEG26 [46] phi (byte) current_xpos#62 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@23->render_current#2] -- vbuz1=vbuc1 + //SEG20 [11] call render_playfield + //SEG21 [70] phi from main::@23 to render_playfield [phi:main::@23->render_playfield] + render_playfield_from_b23: + jsr render_playfield + jmp b24 + //SEG22 main::@24 + b24: + //SEG23 [12] (byte*~) current_piece_gfx#84 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 + lda current_piece_gfx + sta current_piece_gfx_84 + lda current_piece_gfx+1 + sta current_piece_gfx_84+1 + //SEG24 [13] (byte~) current_piece_color#72 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 + lda current_piece_color + sta current_piece_color_72 + //SEG25 [14] call render_current + //SEG26 [50] phi from main::@24 to render_current [phi:main::@24->render_current] + render_current_from_b24: + //SEG27 [50] phi (byte) current_piece_color#64 = (byte~) current_piece_color#72 [phi:main::@24->render_current#0] -- register_copy + //SEG28 [50] phi (byte*) current_piece_gfx#62 = (byte*~) current_piece_gfx#84 [phi:main::@24->render_current#1] -- register_copy + //SEG29 [50] phi (byte) current_xpos#62 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@24->render_current#2] -- vbuz1=vbuc1 lda #3 sta current_xpos_62 - //SEG27 [46] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->render_current#3] -- vbuz1=vbuc1 + //SEG30 [50] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@24->render_current#3] -- vbuz1=vbuc1 lda #0 sta current_ypos_22 jsr render_current - //SEG28 [12] phi from main::@23 to main::@1 [phi:main::@23->main::@1] - b1_from_b23: - //SEG29 [12] phi (byte) current_movedown_counter#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#0] -- vbuz1=vbuc1 + //SEG31 [15] (byte*~) current_piece#68 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + ldy spawn_current._3 + lda PIECES,y + sta current_piece + lda PIECES+1,y + sta current_piece+1 + //SEG32 [16] phi from main::@24 to main::@1 [phi:main::@24->main::@1] + b1_from_b24: + //SEG33 [16] phi (byte) current_movedown_counter#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@24->main::@1#0] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG30 [12] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#1] -- vbuz1=vbuc1 + //SEG34 [16] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@24->main::@1#1] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG31 [12] phi (byte) current_ypos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#2] -- vbuz1=vbuc1 + //SEG35 [16] phi (byte) current_piece_color#11 = (byte) current_piece_color#15 [phi:main::@24->main::@1#2] -- register_copy + //SEG36 [16] phi (byte) current_ypos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@24->main::@1#3] -- vbuz1=vbuc1 lda #0 sta current_ypos - //SEG32 [12] phi (byte) current_xpos#16 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@23->main::@1#3] -- vbuz1=vbuc1 + //SEG37 [16] phi (byte) current_xpos#16 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@24->main::@1#4] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG33 [12] phi (byte) current_piece_color#11 = (const byte) GREEN#0 [phi:main::@23->main::@1#4] -- vbuz1=vbuc1 - lda #GREEN - sta current_piece_color - //SEG34 [12] phi (byte*) current_piece_gfx#15 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->main::@1#5] -- pbuz1=pbuc1 - lda #piece_t - sta current_piece_gfx+1 - //SEG35 [12] phi (byte) current_piece_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#6] -- vbuz1=vbuc1 + //SEG38 [16] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#10 [phi:main::@24->main::@1#5] -- register_copy + //SEG39 [16] phi (byte) current_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@24->main::@1#6] -- vbuz1=vbuc1 lda #0 - sta current_piece_orientation - //SEG36 [12] phi (byte*) current_piece#11 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->main::@1#7] -- pbuz1=pbuc1 - lda #piece_t - sta current_piece+1 + sta current_orientation + //SEG40 [16] phi (byte*) current_piece#11 = (byte*~) current_piece#68 [phi:main::@24->main::@1#7] -- register_copy jmp b1 - //SEG37 main::@1 + //SEG41 main::@1 b1: jmp b4 - //SEG38 main::@4 + //SEG42 main::@4 b4: - //SEG39 [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG43 [17] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 jmp b7 - //SEG40 main::@7 + //SEG44 main::@7 b7: - //SEG41 [14] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG45 [18] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b7 jmp b9 - //SEG42 main::@9 + //SEG46 main::@9 b9: - //SEG43 [15] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG47 [19] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG44 [16] call keyboard_event_scan - //SEG45 [205] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] + //SEG48 [20] call keyboard_event_scan + //SEG49 [223] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] keyboard_event_scan_from_b9: jsr keyboard_event_scan - //SEG46 [17] phi from main::@9 to main::@25 [phi:main::@9->main::@25] - b25_from_b9: - jmp b25 - //SEG47 main::@25 - b25: - //SEG48 [18] call keyboard_event_get + //SEG50 [21] phi from main::@9 to main::@26 [phi:main::@9->main::@26] + b26_from_b9: + jmp b26 + //SEG51 main::@26 + b26: + //SEG52 [22] call keyboard_event_get jsr keyboard_event_get - //SEG49 [19] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 -- vbuz1=vbuz2 + //SEG53 [23] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 -- vbuz1=vbuz2 lda keyboard_event_get.return sta keyboard_event_get.return_3 - jmp b26 - //SEG50 main::@26 - b26: - //SEG51 [20] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuz2 + jmp b27 + //SEG54 main::@27 + b27: + //SEG55 [24] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuz2 lda keyboard_event_get.return_3 sta key_event - //SEG52 [21] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + //SEG56 [25] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_down.key_event - //SEG53 [22] call play_move_down + //SEG57 [26] call play_move_down jsr play_move_down - //SEG54 [23] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuz1=vbuz2 + //SEG58 [27] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuz1=vbuz2 lda play_move_down.return_3 sta play_move_down.return - jmp b27 - //SEG55 main::@27 - b27: - //SEG56 [24] (byte~) main::$8 ← (byte) play_move_down::return#0 -- vbuz1=vbuz2 + jmp b28 + //SEG59 main::@28 + b28: + //SEG60 [28] (byte~) main::$9 ← (byte) play_move_down::return#0 -- vbuz1=vbuz2 lda play_move_down.return - sta _8 - //SEG57 [25] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$8 -- vbuz1=vbuc1_plus_vbuz2 + sta _9 + //SEG61 [29] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$9 -- vbuz1=vbuc1_plus_vbuz2 lda #0 clc - adc _8 + adc _9 sta render - //SEG58 [26] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + //SEG62 [30] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_leftright.key_event - //SEG59 [27] call play_move_leftright + //SEG63 [31] call play_move_leftright jsr play_move_leftright - //SEG60 [28] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 -- vbuz1=vbuz2 + //SEG64 [32] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 -- vbuz1=vbuz2 lda play_move_leftright.return_2 sta play_move_leftright.return - jmp b28 - //SEG61 main::@28 - b28: - //SEG62 [29] (byte~) main::$9 ← (byte) play_move_leftright::return#0 -- vbuz1=vbuz2 + jmp b29 + //SEG65 main::@29 + b29: + //SEG66 [33] (byte~) main::$10 ← (byte) play_move_leftright::return#0 -- vbuz1=vbuz2 lda play_move_leftright.return - sta _9 - //SEG63 [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 -- vbuz1=vbuz2_plus_vbuz3 + sta _10 + //SEG67 [34] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$10 -- vbuz1=vbuz2_plus_vbuz3 lda render clc - adc _9 + adc _10 sta render_2 - //SEG64 [31] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + //SEG68 [35] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_rotate.key_event - //SEG65 [32] call play_move_rotate + //SEG69 [36] call play_move_rotate jsr play_move_rotate - //SEG66 [33] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 -- vbuz1=vbuz2 + //SEG70 [37] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 -- vbuz1=vbuz2 lda play_move_rotate.return_2 sta play_move_rotate.return - jmp b29 - //SEG67 main::@29 - b29: - //SEG68 [34] (byte~) main::$10 ← (byte) play_move_rotate::return#0 -- vbuz1=vbuz2 + jmp b30 + //SEG71 main::@30 + b30: + //SEG72 [38] (byte~) main::$11 ← (byte) play_move_rotate::return#0 -- vbuz1=vbuz2 lda play_move_rotate.return - sta _10 - //SEG69 [35] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$10 -- vbuz1=vbuz2_plus_vbuz3 + sta _11 + //SEG73 [39] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$11 -- vbuz1=vbuz2_plus_vbuz3 lda render_2 clc - adc _10 + adc _11 sta render_3 - //SEG70 [36] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuz1_eq_0_then_la1 + //SEG74 [40] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuz1_eq_0_then_la1 lda render_3 cmp #0 beq b10 jmp b19 - //SEG71 main::@19 + //SEG75 main::@19 b19: - //SEG72 [37] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG76 [41] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG73 [38] call render_playfield - //SEG74 [66] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] + //SEG77 [42] call render_playfield + //SEG78 [70] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] render_playfield_from_b19: jsr render_playfield - jmp b30 - //SEG75 main::@30 - b30: - //SEG76 [39] (byte~) current_ypos#72 ← (byte) current_ypos#16 -- vbuz1=vbuz2 - lda current_ypos - sta current_ypos_72 - //SEG77 [40] (byte~) current_xpos#92 ← (byte) current_xpos#23 -- vbuz1=vbuz2 - lda current_xpos - sta current_xpos_92 - //SEG78 [41] (byte*~) current_piece_gfx#82 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 - lda current_piece_gfx - sta current_piece_gfx_82 - lda current_piece_gfx+1 - sta current_piece_gfx_82+1 - //SEG79 [42] (byte~) current_piece_color#70 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 - lda current_piece_color - sta current_piece_color_70 - //SEG80 [43] call render_current - //SEG81 [46] phi from main::@30 to render_current [phi:main::@30->render_current] - render_current_from_b30: - //SEG82 [46] phi (byte) current_piece_color#63 = (byte~) current_piece_color#70 [phi:main::@30->render_current#0] -- register_copy - //SEG83 [46] phi (byte*) current_piece_gfx#61 = (byte*~) current_piece_gfx#82 [phi:main::@30->render_current#1] -- register_copy - //SEG84 [46] phi (byte) current_xpos#62 = (byte~) current_xpos#92 [phi:main::@30->render_current#2] -- register_copy - //SEG85 [46] phi (byte) current_ypos#22 = (byte~) current_ypos#72 [phi:main::@30->render_current#3] -- register_copy - jsr render_current jmp b31 - //SEG86 main::@31 + //SEG79 main::@31 b31: - //SEG87 [44] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG80 [43] (byte~) current_ypos#68 ← (byte) current_ypos#16 -- vbuz1=vbuz2 + lda current_ypos + sta current_ypos_68 + //SEG81 [44] (byte~) current_xpos#93 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + lda current_xpos + sta current_xpos_93 + //SEG82 [45] (byte*~) current_piece_gfx#85 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + lda current_piece_gfx + sta current_piece_gfx_85 + lda current_piece_gfx+1 + sta current_piece_gfx_85+1 + //SEG83 [46] (byte~) current_piece_color#73 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 + lda current_piece_color + sta current_piece_color_73 + //SEG84 [47] call render_current + //SEG85 [50] phi from main::@31 to render_current [phi:main::@31->render_current] + render_current_from_b31: + //SEG86 [50] phi (byte) current_piece_color#64 = (byte~) current_piece_color#73 [phi:main::@31->render_current#0] -- register_copy + //SEG87 [50] phi (byte*) current_piece_gfx#62 = (byte*~) current_piece_gfx#85 [phi:main::@31->render_current#1] -- register_copy + //SEG88 [50] phi (byte) current_xpos#62 = (byte~) current_xpos#93 [phi:main::@31->render_current#2] -- register_copy + //SEG89 [50] phi (byte) current_ypos#22 = (byte~) current_ypos#68 [phi:main::@31->render_current#3] -- register_copy + jsr render_current + jmp b32 + //SEG90 main::@32 + b32: + //SEG91 [48] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL jmp b10 - //SEG88 main::@10 + //SEG92 main::@10 b10: - //SEG89 [45] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG93 [49] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG90 [12] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + //SEG94 [16] phi from main::@10 to main::@1 [phi:main::@10->main::@1] b1_from_b10: - //SEG91 [12] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy - //SEG92 [12] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy - //SEG93 [12] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#2] -- register_copy - //SEG94 [12] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#3] -- register_copy - //SEG95 [12] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#4] -- register_copy - //SEG96 [12] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy - //SEG97 [12] phi (byte) current_piece_orientation#15 = (byte) current_piece_orientation#23 [phi:main::@10->main::@1#6] -- register_copy - //SEG98 [12] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy + //SEG95 [16] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy + //SEG96 [16] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy + //SEG97 [16] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#2] -- register_copy + //SEG98 [16] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#3] -- register_copy + //SEG99 [16] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#4] -- register_copy + //SEG100 [16] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy + //SEG101 [16] phi (byte) current_orientation#15 = (byte) current_orientation#23 [phi:main::@10->main::@1#6] -- register_copy + //SEG102 [16] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy jmp b1 } -//SEG99 render_current +//SEG103 render_current render_current: { .label ypos2 = 9 .label l = $a - .label screen_line = $4e + .label screen_line = $51 .label xpos = $c - .label current_cell = $50 + .label current_cell = $53 .label i = $b .label c = $d - //SEG100 [47] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG104 [51] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda current_ypos_22 asl sta ypos2 - //SEG101 [48] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] + //SEG105 [52] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] b1_from_render_current: - //SEG102 [48] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 + //SEG106 [52] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG103 [48] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 + //SEG107 [52] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 lda #0 sta l - //SEG104 [48] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy + //SEG108 [52] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy jmp b1 - //SEG105 [48] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] + //SEG109 [52] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] b1_from_b2: - //SEG106 [48] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy - //SEG107 [48] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy - //SEG108 [48] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy + //SEG110 [52] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy + //SEG111 [52] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy + //SEG112 [52] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy jmp b1 - //SEG109 render_current::@1 + //SEG113 render_current::@1 b1: - //SEG110 [49] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 + //SEG114 [53] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcs b2_from_b1 jmp b6 - //SEG111 render_current::@6 + //SEG115 render_current::@6 b6: - //SEG112 [50] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG116 [54] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda screen_lines,y sta screen_line lda screen_lines+1,y sta screen_line+1 - //SEG113 [51] (byte) render_current::xpos#0 ← (byte) current_xpos#62 -- vbuz1=vbuz2 + //SEG117 [55] (byte) render_current::xpos#0 ← (byte) current_xpos#62 -- vbuz1=vbuz2 lda current_xpos_62 sta xpos - //SEG114 [52] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] + //SEG118 [56] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] b3_from_b6: - //SEG115 [52] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuz1=vbuc1 + //SEG119 [56] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG116 [52] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy - //SEG117 [52] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy + //SEG120 [56] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy + //SEG121 [56] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy jmp b3 - //SEG118 [52] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] + //SEG122 [56] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] b3_from_b4: - //SEG119 [52] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy - //SEG120 [52] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy - //SEG121 [52] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy + //SEG123 [56] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy + //SEG124 [56] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy + //SEG125 [56] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy jmp b3 - //SEG122 render_current::@3 + //SEG126 render_current::@3 b3: - //SEG123 [53] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#61 + (byte) render_current::i#2) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG127 [57] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#62 + (byte) render_current::i#2) -- vbuz1=pbuz2_derefidx_vbuz3 ldy i - lda (current_piece_gfx_61),y + lda (current_piece_gfx_62),y sta current_cell - //SEG124 [54] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 + //SEG128 [58] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG125 [55] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuz1_eq_0_then_la1 + //SEG129 [59] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuz1_eq_0_then_la1 lda current_cell cmp #0 beq b4 jmp b7 - //SEG126 render_current::@7 + //SEG130 render_current::@7 b7: - //SEG127 [56] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 + //SEG131 [60] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 lda xpos cmp #PLAYFIELD_COLS bcs b4 jmp b8 - //SEG128 render_current::@8 + //SEG132 render_current::@8 b8: - //SEG129 [57] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#63 -- pbuz1_derefidx_vbuz2=vbuz3 - lda current_piece_color_63 + //SEG133 [61] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#64 -- pbuz1_derefidx_vbuz2=vbuz3 + lda current_piece_color_64 ldy xpos sta (screen_line),y jmp b4 - //SEG130 render_current::@4 + //SEG134 render_current::@4 b4: - //SEG131 [58] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG135 [62] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG132 [59] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuz1=_inc_vbuz1 + //SEG136 [63] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG133 [60] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG137 [64] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b3_from_b4 - //SEG134 [61] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] + //SEG138 [65] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] b2_from_b1: b2_from_b4: - //SEG135 [61] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy + //SEG139 [65] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy jmp b2 - //SEG136 render_current::@2 + //SEG140 render_current::@2 b2: - //SEG137 [62] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG141 [66] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG138 [63] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 + //SEG142 [67] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 inc l - //SEG139 [64] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG143 [68] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1_from_b2 jmp breturn - //SEG140 render_current::@return + //SEG144 render_current::@return breturn: - //SEG141 [65] return + //SEG145 [69] return rts } -//SEG142 render_playfield +//SEG146 render_playfield render_playfield: { - .label _1 = $51 + .label _1 = $54 .label line = $10 .label i = $f .label c = $12 .label l = $e - //SEG143 [67] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG147 [71] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG144 [67] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG148 [71] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG145 [67] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG149 [71] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #0 sta l jmp b1 - //SEG146 [67] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG150 [71] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG147 [67] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG148 [67] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG151 [71] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG152 [71] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG149 render_playfield::@1 + //SEG153 render_playfield::@1 b1: - //SEG150 [68] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG154 [72] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda l asl sta _1 - //SEG151 [69] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG155 [73] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuz2 ldy _1 lda screen_lines,y sta line lda screen_lines+1,y sta line+1 - //SEG152 [70] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG156 [74] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG153 [70] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1 + //SEG157 [74] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG154 [70] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG155 [70] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG158 [74] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG159 [74] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG156 [70] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG160 [74] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG157 [70] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG158 [70] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG159 [70] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG161 [74] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG162 [74] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG163 [74] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG160 render_playfield::@2 + //SEG164 render_playfield::@2 b2: - //SEG161 [71] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG165 [75] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 sta (line),y - //SEG162 [72] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 + //SEG166 [76] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 inc line bne !+ inc line+1 !: - //SEG163 [73] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG167 [77] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG164 [74] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG168 [78] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG165 [75] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG169 [79] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #PLAYFIELD_COLS-1+1 bne b2_from_b2 jmp b3 - //SEG166 render_playfield::@3 + //SEG170 render_playfield::@3 b3: - //SEG167 [76] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG171 [80] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG168 [77] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG172 [81] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1_from_b3 jmp breturn - //SEG169 render_playfield::@return + //SEG173 render_playfield::@return breturn: - //SEG170 [78] return + //SEG174 [82] return rts } -//SEG171 play_move_rotate +//SEG175 play_move_rotate play_move_rotate: { - .label _2 = $52 - .label _4 = $56 - .label _6 = $54 - .label _8 = $55 - .label key_event = $4a - .label return = $4b + .label _2 = $55 + .label _4 = $58 + .label _6 = $57 + .label key_event = $4d + .label return = $4e .label orientation = $14 .label return_2 = $13 - //SEG172 [79] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuz1_eq_vbuc1_then_la1 + //SEG176 [83] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuz1_eq_vbuc1_then_la1 lda key_event cmp #KEY_Z beq b1 jmp b6 - //SEG173 play_move_rotate::@6 + //SEG177 play_move_rotate::@6 b6: - //SEG174 [80] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG178 [84] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuz1_eq_vbuc1_then_la1 lda key_event cmp #KEY_X beq b2 - //SEG175 [81] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] + //SEG179 [85] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] breturn_from_b14: breturn_from_b6: - //SEG176 [81] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#17 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG177 [81] phi (byte) current_piece_orientation#23 = (byte) current_piece_orientation#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG178 [81] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuz1=vbuc1 + //SEG180 [85] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#17 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG181 [85] phi (byte) current_orientation#23 = (byte) current_orientation#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG182 [85] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuz1=vbuc1 lda #0 sta return_2 jmp breturn - //SEG179 play_move_rotate::@return + //SEG183 play_move_rotate::@return breturn: - //SEG180 [82] return + //SEG184 [86] return rts - //SEG181 play_move_rotate::@2 + //SEG185 play_move_rotate::@2 b2: - //SEG182 [83] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_plus_vbuc1 + //SEG186 [87] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_plus_vbuc1 lda #$10 clc - adc current_piece_orientation + adc current_orientation sta _2 - //SEG183 [84] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 + //SEG187 [88] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 lda #$3f and _2 sta orientation - //SEG184 [85] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] + //SEG188 [89] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] b4_from_b1: b4_from_b2: - //SEG185 [85] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy + //SEG189 [89] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy jmp b4 - //SEG186 play_move_rotate::@4 + //SEG190 play_move_rotate::@4 b4: - //SEG187 [86] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG191 [90] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 lda current_xpos sta collision.xpos - //SEG188 [87] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuz1=vbuz2 + //SEG192 [91] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuz1=vbuz2 lda current_ypos sta collision.ypos - //SEG189 [88] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG193 [92] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta collision.orientation - //SEG190 [89] (byte*~) current_piece#70 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG194 [93] (byte*~) current_piece#72 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece - sta current_piece_70 + sta current_piece_72 lda current_piece+1 - sta current_piece_70+1 - //SEG191 [90] call collision - //SEG192 [99] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] + sta current_piece_72+1 + //SEG195 [94] call collision + //SEG196 [102] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] collision_from_b4: - //SEG193 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy - //SEG194 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy - //SEG195 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy - //SEG196 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#70 [phi:play_move_rotate::@4->collision#3] -- register_copy + //SEG197 [102] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy + //SEG198 [102] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy + //SEG199 [102] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy + //SEG200 [102] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_rotate::@4->collision#3] -- register_copy jsr collision - //SEG197 [91] (byte) collision::return#13 ← (byte) collision::return#14 -- vbuz1=vbuz2 + //SEG201 [95] (byte) collision::return#13 ← (byte) collision::return#14 -- vbuz1=vbuz2 lda collision.return_14 sta collision.return_13 jmp b14 - //SEG198 play_move_rotate::@14 + //SEG202 play_move_rotate::@14 b14: - //SEG199 [92] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 -- vbuz1=vbuz2 + //SEG203 [96] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 -- vbuz1=vbuz2 lda collision.return_13 sta _6 - //SEG200 [93] (byte~) play_move_rotate::$8 ← (byte~) play_move_rotate::$6 & (const byte) COLLISION_LEFT#0|(const byte) COLLISION_RIGHT#0 -- vbuz1=vbuz2_band_vbuc1 - lda #COLLISION_LEFT|COLLISION_RIGHT - and _6 - sta _8 - //SEG201 [94] if((byte~) play_move_rotate::$8!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@return -- vbuz1_neq_0_then_la1 - lda _8 + //SEG204 [97] if((byte~) play_move_rotate::$6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@return -- vbuz1_neq_0_then_la1 + lda _6 bne breturn_from_b14 jmp b11 - //SEG202 play_move_rotate::@11 + //SEG205 play_move_rotate::@11 b11: - //SEG203 [95] (byte) current_piece_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG206 [98] (byte) current_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation - sta current_piece_orientation - //SEG204 [96] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_piece_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 - lda current_piece_orientation + sta current_orientation + //SEG207 [99] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 + lda current_orientation clc adc current_piece sta current_piece_gfx lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG205 [81] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG208 [85] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] breturn_from_b11: - //SEG206 [81] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG207 [81] phi (byte) current_piece_orientation#23 = (byte) current_piece_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG208 [81] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuz1=vbuc1 + //SEG209 [85] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG210 [85] phi (byte) current_orientation#23 = (byte) current_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG211 [85] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuz1=vbuc1 lda #1 sta return_2 jmp breturn - //SEG209 play_move_rotate::@1 + //SEG212 play_move_rotate::@1 b1: - //SEG210 [97] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_minus_vbuc1 - lda current_piece_orientation + //SEG213 [100] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_minus_vbuc1 + lda current_orientation sec sbc #$10 sta _4 - //SEG211 [98] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 + //SEG214 [101] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 lda #$3f and _4 sta orientation jmp b4_from_b1 } -//SEG212 collision +//SEG215 collision collision: { - .label _7 = $5c + .label _7 = $5e .label xpos = $19 .label ypos = $18 .label orientation = $17 - .label return = $63 - .label return_1 = $5f - .label piece_gfx = $57 + .label return = $65 + .label return_1 = $61 + .label piece_gfx = $59 .label ypos2 = $1a - .label playfield_line = $59 - .label i = $5b + .label playfield_line = $5b + .label i = $5d .label col = $1d .label c = $1e .label l = $1b - .label return_12 = $5d - .label return_13 = $53 + .label return_12 = $5f + .label return_13 = $56 .label i_2 = $1c .label return_14 = $1f .label i_3 = $1c .label i_11 = $1c .label i_13 = $1c - //SEG213 [100] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz2_plus_vbuz3 + //SEG216 [103] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz2_plus_vbuz3 lda orientation clc adc current_piece_15 @@ -6201,1079 +6515,1159 @@ collision: { lda #0 adc current_piece_15+1 sta piece_gfx+1 - //SEG214 [101] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG217 [104] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda ypos asl sta ypos2 - //SEG215 [102] phi from collision to collision::@1 [phi:collision->collision::@1] + //SEG218 [105] phi from collision to collision::@1 [phi:collision->collision::@1] b1_from_collision: - //SEG216 [102] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 + //SEG219 [105] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG217 [102] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 + //SEG220 [105] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG218 [102] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy + //SEG221 [105] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy jmp b1 - //SEG219 collision::@1 + //SEG222 collision::@1 b1: - //SEG220 [103] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG223 [106] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG221 [104] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 + //SEG224 [107] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 lda xpos sta col - //SEG222 [105] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] + //SEG225 [108] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] b2_from_b1: - //SEG223 [105] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuz1=vbuc1 + //SEG226 [108] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG224 [105] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy - //SEG225 [105] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy + //SEG227 [108] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy + //SEG228 [108] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy jmp b2 - //SEG226 collision::@2 + //SEG229 collision::@2 b2: - //SEG227 [106] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG230 [109] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG228 [107] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG231 [110] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 jmp b8 - //SEG229 collision::@8 + //SEG232 collision::@8 b8: - //SEG230 [108] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG233 [111] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG231 [109] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] + //SEG234 [112] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] breturn_from_b8: - //SEG232 [109] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuz1=vbuc1 + //SEG235 [112] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_BOTTOM sta return_14 jmp breturn - //SEG233 collision::@return + //SEG236 collision::@return breturn: - //SEG234 [110] return + //SEG237 [113] return rts - //SEG235 collision::@4 + //SEG238 collision::@4 b4: - //SEG236 [111] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG239 [114] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and col sta _7 - //SEG237 [112] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuz1_eq_0_then_la1 + //SEG240 [115] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuz1_eq_0_then_la1 lda _7 cmp #0 beq b5 - //SEG238 [109] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] + //SEG241 [112] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] breturn_from_b4: - //SEG239 [109] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuz1=vbuc1 + //SEG242 [112] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_LEFT sta return_14 jmp breturn - //SEG240 collision::@5 + //SEG243 collision::@5 b5: - //SEG241 [113] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG244 [116] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG242 [109] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] + //SEG245 [112] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] breturn_from_b5: - //SEG243 [109] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuz1=vbuc1 + //SEG246 [112] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_RIGHT sta return_14 jmp breturn - //SEG244 collision::@6 + //SEG247 collision::@6 b6: - //SEG245 [114] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG248 [117] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG246 [109] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] + //SEG249 [112] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] breturn_from_b6: - //SEG247 [109] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuz1=vbuc1 + //SEG250 [112] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_PLAYFIELD sta return_14 jmp breturn - //SEG248 collision::@3 + //SEG251 collision::@3 b3: - //SEG249 [115] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG252 [118] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG250 [116] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuz1=_inc_vbuz1 + //SEG253 [119] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG251 [117] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuz1_neq_vbuc1_then_la1 + //SEG254 [120] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b21 jmp b17 - //SEG252 collision::@17 + //SEG255 collision::@17 b17: - //SEG253 [118] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG256 [121] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG254 [119] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG257 [122] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG255 [120] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG258 [123] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG256 [109] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] + //SEG259 [112] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] breturn_from_b17: - //SEG257 [109] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuz1=vbuc1 + //SEG260 [112] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_NONE sta return_14 jmp breturn - //SEG258 collision::@20 + //SEG261 collision::@20 b20: - //SEG259 [121] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG262 [124] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG260 [102] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] + //SEG263 [105] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] b1_from_b20: - //SEG261 [102] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy - //SEG262 [102] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy - //SEG263 [102] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy + //SEG264 [105] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy + //SEG265 [105] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy + //SEG266 [105] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy jmp b1 - //SEG264 collision::@21 + //SEG267 collision::@21 b21: - //SEG265 [122] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG268 [125] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG266 [105] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] + //SEG269 [108] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] b2_from_b21: - //SEG267 [105] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy - //SEG268 [105] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy - //SEG269 [105] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy + //SEG270 [108] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy + //SEG271 [108] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy + //SEG272 [108] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy jmp b2 } -//SEG270 play_move_leftright +//SEG273 play_move_leftright play_move_leftright: { - .label _4 = $5e - .label _8 = $60 - .label key_event = $46 - .label return = $47 + .label _4 = $60 + .label _8 = $62 + .label key_event = $49 + .label return = $4a .label return_2 = $20 - //SEG271 [123] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuz1_eq_vbuc1_then_la1 + //SEG274 [126] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuz1_eq_vbuc1_then_la1 lda key_event cmp #KEY_COMMA beq b1 jmp b6 - //SEG272 play_move_leftright::@6 + //SEG275 play_move_leftright::@6 b6: - //SEG273 [124] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG276 [127] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda key_event cmp #KEY_DOT bne breturn_from_b6 jmp b7 - //SEG274 play_move_leftright::@7 + //SEG277 play_move_leftright::@7 b7: - //SEG275 [125] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG278 [128] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty collision.xpos - //SEG276 [126] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuz1=vbuz2 + //SEG279 [129] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuz1=vbuz2 lda current_ypos sta collision.ypos - //SEG277 [127] (byte) collision::orientation#2 ← (byte) current_piece_orientation#18 -- vbuz1=vbuz2 - lda current_piece_orientation + //SEG280 [130] (byte) collision::orientation#2 ← (byte) current_orientation#18 -- vbuz1=vbuz2 + lda current_orientation sta collision.orientation - //SEG278 [128] (byte*~) current_piece#69 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG281 [131] (byte*~) current_piece#71 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece - sta current_piece_69 + sta current_piece_71 lda current_piece+1 - sta current_piece_69+1 - //SEG279 [129] call collision - //SEG280 [99] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] + sta current_piece_71+1 + //SEG282 [132] call collision + //SEG283 [102] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] collision_from_b7: - //SEG281 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy - //SEG282 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy - //SEG283 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy - //SEG284 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#69 [phi:play_move_leftright::@7->collision#3] -- register_copy + //SEG284 [102] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy + //SEG285 [102] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy + //SEG286 [102] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy + //SEG287 [102] phi (byte*) current_piece#15 = (byte*~) current_piece#71 [phi:play_move_leftright::@7->collision#3] -- register_copy jsr collision - //SEG285 [130] (byte) collision::return#12 ← (byte) collision::return#14 -- vbuz1=vbuz2 + //SEG288 [133] (byte) collision::return#12 ← (byte) collision::return#14 -- vbuz1=vbuz2 lda collision.return_14 sta collision.return_12 jmp b15 - //SEG286 play_move_leftright::@15 + //SEG289 play_move_leftright::@15 b15: - //SEG287 [131] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 -- vbuz1=vbuz2 + //SEG290 [134] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 -- vbuz1=vbuz2 lda collision.return_12 sta _4 - //SEG288 [132] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG291 [135] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda _4 cmp #COLLISION_NONE bne breturn_from_b15 jmp b8 - //SEG289 play_move_leftright::@8 + //SEG292 play_move_leftright::@8 b8: - //SEG290 [133] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 + //SEG293 [136] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG291 [134] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] + //SEG294 [137] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] breturn_from_b11: breturn_from_b8: - //SEG292 [134] phi (byte) current_xpos#23 = (byte) current_xpos#9 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG293 [134] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuz1=vbuc1 + //SEG295 [137] phi (byte) current_xpos#23 = (byte) current_xpos#9 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG296 [137] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuz1=vbuc1 lda #1 sta return_2 jmp breturn - //SEG294 [134] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] + //SEG297 [137] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] breturn_from_b14: breturn_from_b15: breturn_from_b6: - //SEG295 [134] phi (byte) current_xpos#23 = (byte) current_xpos#19 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG296 [134] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuz1=vbuc1 + //SEG298 [137] phi (byte) current_xpos#23 = (byte) current_xpos#19 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG299 [137] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuz1=vbuc1 lda #0 sta return_2 jmp breturn - //SEG297 play_move_leftright::@return + //SEG300 play_move_leftright::@return breturn: - //SEG298 [135] return + //SEG301 [138] return rts - //SEG299 play_move_leftright::@1 + //SEG302 play_move_leftright::@1 b1: - //SEG300 [136] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG303 [139] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx collision.xpos - //SEG301 [137] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuz1=vbuz2 + //SEG304 [140] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuz1=vbuz2 lda current_ypos sta collision.ypos - //SEG302 [138] (byte) collision::orientation#1 ← (byte) current_piece_orientation#18 -- vbuz1=vbuz2 - lda current_piece_orientation + //SEG305 [141] (byte) collision::orientation#1 ← (byte) current_orientation#18 -- vbuz1=vbuz2 + lda current_orientation sta collision.orientation - //SEG303 [139] (byte*~) current_piece#68 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG306 [142] (byte*~) current_piece#70 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece - sta current_piece_68 + sta current_piece_70 lda current_piece+1 - sta current_piece_68+1 - //SEG304 [140] call collision - //SEG305 [99] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] + sta current_piece_70+1 + //SEG307 [143] call collision + //SEG308 [102] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] collision_from_b1: - //SEG306 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy - //SEG307 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy - //SEG308 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy - //SEG309 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#68 [phi:play_move_leftright::@1->collision#3] -- register_copy + //SEG309 [102] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy + //SEG310 [102] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy + //SEG311 [102] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy + //SEG312 [102] phi (byte*) current_piece#15 = (byte*~) current_piece#70 [phi:play_move_leftright::@1->collision#3] -- register_copy jsr collision - //SEG310 [141] (byte) collision::return#1 ← (byte) collision::return#14 -- vbuz1=vbuz2 + //SEG313 [144] (byte) collision::return#1 ← (byte) collision::return#14 -- vbuz1=vbuz2 lda collision.return_14 sta collision.return_1 jmp b14 - //SEG311 play_move_leftright::@14 + //SEG314 play_move_leftright::@14 b14: - //SEG312 [142] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 -- vbuz1=vbuz2 + //SEG315 [145] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 -- vbuz1=vbuz2 lda collision.return_1 sta _8 - //SEG313 [143] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG316 [146] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda _8 cmp #COLLISION_NONE bne breturn_from_b14 jmp b11 - //SEG314 play_move_leftright::@11 + //SEG317 play_move_leftright::@11 b11: - //SEG315 [144] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 + //SEG318 [147] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 dec current_xpos jmp breturn_from_b11 } -//SEG316 play_move_down +//SEG319 play_move_down play_move_down: { - .label _2 = $62 - .label _12 = $64 - .label key_event = $42 - .label return = $43 + .label _2 = $64 + .label _12 = $66 + .label key_event = $45 + .label return = $46 .label movedown = $21 .label return_3 = $29 - //SEG317 [145] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 + //SEG320 [148] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG318 [146] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG321 [149] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuz1_neq_vbuc1_then_la1 lda key_event cmp #KEY_SPACE bne b1_from_play_move_down - //SEG319 [147] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG322 [150] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] b8_from_play_move_down: jmp b8 - //SEG320 play_move_down::@8 + //SEG323 play_move_down::@8 b8: - //SEG321 [148] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG324 [151] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] b1_from_b8: - //SEG322 [148] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuz1=vbuc1 + //SEG325 [151] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuz1=vbuc1 lda #1 sta movedown jmp b1 - //SEG323 [148] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG326 [151] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b1_from_play_move_down: - //SEG324 [148] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuz1=vbuc1 + //SEG327 [151] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuz1=vbuc1 lda #0 sta movedown jmp b1 - //SEG325 play_move_down::@1 + //SEG328 play_move_down::@1 b1: - //SEG326 [149] call keyboard_event_pressed - //SEG327 [194] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG329 [152] call keyboard_event_pressed + //SEG330 [212] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG328 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG331 [212] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG329 [150] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG332 [153] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_12 jmp b17 - //SEG330 play_move_down::@17 + //SEG333 play_move_down::@17 b17: - //SEG331 [151] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 + //SEG334 [154] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_12 sta _2 - //SEG332 [152] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuz1_eq_0_then_la1 + //SEG335 [155] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b17 jmp b9 - //SEG333 play_move_down::@9 + //SEG336 play_move_down::@9 b9: - //SEG334 [153] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG337 [156] if((byte) current_movedown_counter#10<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter - cmp #current_movedown_rate_fast + cmp #current_movedown_fast bcc b2_from_b9 jmp b10 - //SEG335 play_move_down::@10 + //SEG338 play_move_down::@10 b10: - //SEG336 [154] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 + //SEG339 [157] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 inc movedown - //SEG337 [155] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] + //SEG340 [158] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] b2_from_b10: b2_from_b17: b2_from_b9: - //SEG338 [155] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy + //SEG341 [158] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy jmp b2 - //SEG339 play_move_down::@2 + //SEG342 play_move_down::@2 b2: - //SEG340 [156] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG343 [159] if((byte) current_movedown_counter#10<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter - cmp #current_movedown_rate + cmp #current_movedown_slow bcc b4_from_b2 jmp b11 - //SEG341 play_move_down::@11 + //SEG344 play_move_down::@11 b11: - //SEG342 [157] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 + //SEG345 [160] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 inc movedown - //SEG343 [158] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] + //SEG346 [161] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] b4_from_b11: b4_from_b2: - //SEG344 [158] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy + //SEG347 [161] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy jmp b4 - //SEG345 play_move_down::@4 + //SEG348 play_move_down::@4 b4: - //SEG346 [159] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuz1_eq_0_then_la1 + //SEG349 [162] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuz1_eq_0_then_la1 lda movedown cmp #0 beq breturn_from_b4 jmp b12 - //SEG347 play_move_down::@12 + //SEG350 play_move_down::@12 b12: - //SEG348 [160] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG351 [163] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny sty collision.ypos - //SEG349 [161] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG352 [164] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 lda current_xpos sta collision.xpos - //SEG350 [162] (byte) collision::orientation#0 ← (byte) current_piece_orientation#15 -- vbuz1=vbuz2 - lda current_piece_orientation + //SEG353 [165] (byte) collision::orientation#0 ← (byte) current_orientation#15 -- vbuz1=vbuz2 + lda current_orientation sta collision.orientation - //SEG351 [163] (byte*~) current_piece#67 ← (byte*) current_piece#11 -- pbuz1=pbuz2 + //SEG354 [166] (byte*~) current_piece#69 ← (byte*) current_piece#11 -- pbuz1=pbuz2 lda current_piece - sta current_piece_67 + sta current_piece_69 lda current_piece+1 - sta current_piece_67+1 - //SEG352 [164] call collision - //SEG353 [99] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] + sta current_piece_69+1 + //SEG355 [167] call collision + //SEG356 [102] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] collision_from_b12: - //SEG354 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy - //SEG355 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy - //SEG356 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy - //SEG357 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#67 [phi:play_move_down::@12->collision#3] -- register_copy + //SEG357 [102] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy + //SEG358 [102] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy + //SEG359 [102] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy + //SEG360 [102] phi (byte*) current_piece#15 = (byte*~) current_piece#69 [phi:play_move_down::@12->collision#3] -- register_copy jsr collision - //SEG358 [165] (byte) collision::return#0 ← (byte) collision::return#14 -- vbuz1=vbuz2 + //SEG361 [168] (byte) collision::return#0 ← (byte) collision::return#14 -- vbuz1=vbuz2 lda collision.return_14 sta collision.return jmp b18 - //SEG359 play_move_down::@18 + //SEG362 play_move_down::@18 b18: - //SEG360 [166] (byte~) play_move_down::$12 ← (byte) collision::return#0 -- vbuz1=vbuz2 + //SEG363 [169] (byte~) play_move_down::$12 ← (byte) collision::return#0 -- vbuz1=vbuz2 lda collision.return sta _12 - //SEG361 [167] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuz1_eq_vbuc1_then_la1 + //SEG364 [170] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuz1_eq_vbuc1_then_la1 lda _12 cmp #COLLISION_NONE beq b6 - //SEG362 [168] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG365 [171] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] b13_from_b18: jmp b13 - //SEG363 play_move_down::@13 + //SEG366 play_move_down::@13 b13: - //SEG364 [169] call lock_current - //SEG365 [178] phi from play_move_down::@13 to lock_current [phi:play_move_down::@13->lock_current] - lock_current_from_b13: + //SEG367 [172] call lock_current jsr lock_current - //SEG366 [170] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG368 [173] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] b19_from_b13: jmp b19 - //SEG367 play_move_down::@19 + //SEG369 play_move_down::@19 b19: - //SEG368 [171] call spawn_current - //SEG369 [176] phi from play_move_down::@19 to spawn_current [phi:play_move_down::@19->spawn_current] - spawn_current_from_b19: + //SEG370 [174] call spawn_current jsr spawn_current - //SEG370 [172] phi from play_move_down::@19 to play_move_down::@7 [phi:play_move_down::@19->play_move_down::@7] + //SEG371 [175] (byte*~) current_piece#73 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + ldy spawn_current._3 + lda PIECES,y + sta current_piece + lda PIECES+1,y + sta current_piece+1 + //SEG372 [176] phi from play_move_down::@19 to play_move_down::@7 [phi:play_move_down::@19->play_move_down::@7] b7_from_b19: - //SEG371 [172] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@19->play_move_down::@7#0] -- vbuz1=vbuc1 + //SEG373 [176] phi (byte) current_piece_color#23 = (byte) current_piece_color#15 [phi:play_move_down::@19->play_move_down::@7#0] -- register_copy + //SEG374 [176] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@19->play_move_down::@7#1] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG372 [172] phi (byte) current_piece_color#23 = (const byte) GREEN#0 [phi:play_move_down::@19->play_move_down::@7#1] -- vbuz1=vbuc1 - lda #GREEN - sta current_piece_color - //SEG373 [172] phi (byte*) current_piece_gfx#29 = (const byte[4*4*4]) piece_t#0 [phi:play_move_down::@19->play_move_down::@7#2] -- pbuz1=pbuc1 - lda #piece_t - sta current_piece_gfx+1 - //SEG374 [172] phi (byte) current_piece_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#3] -- vbuz1=vbuc1 + //SEG375 [176] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#10 [phi:play_move_down::@19->play_move_down::@7#2] -- register_copy + //SEG376 [176] phi (byte) current_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 - sta current_piece_orientation - //SEG375 [172] phi (byte*) current_piece#23 = (const byte[4*4*4]) piece_t#0 [phi:play_move_down::@19->play_move_down::@7#4] -- pbuz1=pbuc1 - lda #piece_t - sta current_piece+1 - //SEG376 [172] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#5] -- vbuz1=vbuc1 + sta current_orientation + //SEG377 [176] phi (byte*) current_piece#23 = (byte*~) current_piece#73 [phi:play_move_down::@19->play_move_down::@7#4] -- register_copy + //SEG378 [176] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#5] -- vbuz1=vbuc1 lda #0 sta current_ypos jmp b7 - //SEG377 play_move_down::@7 + //SEG379 play_move_down::@7 b7: - //SEG378 [173] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG380 [177] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] breturn_from_b7: - //SEG379 [173] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG380 [173] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG381 [173] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG382 [173] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG383 [173] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG384 [173] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG385 [173] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 + //SEG381 [177] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG382 [177] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG383 [177] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG384 [177] phi (byte) current_orientation#18 = (byte) current_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG385 [177] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG386 [177] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG387 [177] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG386 [173] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuz1=vbuc1 + //SEG388 [177] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuz1=vbuc1 lda #1 sta return_3 jmp breturn - //SEG387 [173] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG389 [177] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] breturn_from_b4: - //SEG388 [173] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG389 [173] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG390 [173] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG391 [173] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG392 [173] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG393 [173] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG394 [173] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG395 [173] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuz1=vbuc1 + //SEG390 [177] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG391 [177] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG392 [177] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG393 [177] phi (byte) current_orientation#18 = (byte) current_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG394 [177] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG395 [177] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG396 [177] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG397 [177] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuz1=vbuc1 lda #0 sta return_3 jmp breturn - //SEG396 play_move_down::@return + //SEG398 play_move_down::@return breturn: - //SEG397 [174] return + //SEG399 [178] return rts - //SEG398 play_move_down::@6 + //SEG400 play_move_down::@6 b6: - //SEG399 [175] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 + //SEG401 [179] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG400 [172] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG402 [176] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] b7_from_b6: - //SEG401 [172] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG402 [172] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG403 [172] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG404 [172] phi (byte) current_piece_orientation#33 = (byte) current_piece_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG405 [172] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG406 [172] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG403 [176] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG404 [176] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG405 [176] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG406 [176] phi (byte) current_orientation#33 = (byte) current_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG407 [176] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG408 [176] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG407 spawn_current +//SEG409 spawn_current spawn_current: { + .label _1 = $69 + .label _3 = $67 + .label piece_idx = $2a + //SEG410 [180] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + inc BORDERCOL + //SEG411 [181] phi from spawn_current to spawn_current::@1 [phi:spawn_current->spawn_current::@1] + b1_from_spawn_current: + //SEG412 [181] phi (byte) spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:spawn_current->spawn_current::@1#0] -- vbuz1=vbuc1 + lda #7 + sta piece_idx + jmp b1 + //SEG413 spawn_current::@1 + b1: + //SEG414 [182] if((byte) spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto spawn_current::@2 -- vbuz1_eq_vbuc1_then_la1 + lda piece_idx + cmp #7 + beq b2_from_b1 + jmp b3 + //SEG415 spawn_current::@3 + b3: + //SEG416 [183] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + dec BORDERCOL + //SEG417 [184] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda piece_idx + asl + sta _3 + //SEG418 [185] (byte*) current_piece_gfx#10 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 + ldy _3 + lda PIECES,y + sta current_piece_gfx + lda PIECES+1,y + sta current_piece_gfx+1 + //SEG419 [186] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy piece_idx + lda PIECES_COLORS,y + sta current_piece_color jmp breturn - //SEG408 spawn_current::@return + //SEG420 spawn_current::@return breturn: - //SEG409 [177] return + //SEG421 [187] return + rts + //SEG422 [188] phi from spawn_current::@1 to spawn_current::@2 [phi:spawn_current::@1->spawn_current::@2] + b2_from_b1: + jmp b2 + //SEG423 spawn_current::@2 + b2: + //SEG424 [189] call sid_rnd + jsr sid_rnd + //SEG425 [190] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 -- vbuz1=vbuz2 + lda sid_rnd.return + sta sid_rnd.return_2 + jmp b7 + //SEG426 spawn_current::@7 + b7: + //SEG427 [191] (byte~) spawn_current::$1 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 + lda sid_rnd.return_2 + sta _1 + //SEG428 [192] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + lda #7 + and _1 + sta piece_idx + //SEG429 [181] phi from spawn_current::@7 to spawn_current::@1 [phi:spawn_current::@7->spawn_current::@1] + b1_from_b7: + //SEG430 [181] phi (byte) spawn_current::piece_idx#2 = (byte) spawn_current::piece_idx#1 [phi:spawn_current::@7->spawn_current::@1#0] -- register_copy + jmp b1 +} +//SEG431 sid_rnd +sid_rnd: { + .label return = $6a + .label return_2 = $68 + //SEG432 [193] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 + lda SID_VOICE3_OSC + sta return + jmp breturn + //SEG433 sid_rnd::@return + breturn: + //SEG434 [194] return rts } -//SEG410 lock_current +//SEG435 lock_current lock_current: { - .label _1 = $66 - .label line = $65 - .label playfield_line = $67 - .label cell = $69 - .label i = $2b - .label c = $2c - .label col = $6a - .label l = $2a - //SEG411 [179] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] + .label ypos2 = $2b + .label playfield_line = $6b + .label col = $2e + .label i = $6d + .label c = $2f + .label l = $2c + .label i_2 = $2d + .label i_3 = $2d + .label i_7 = $2d + .label i_9 = $2d + //SEG436 [195] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda current_ypos + asl + sta ypos2 + //SEG437 [196] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] b1_from_lock_current: - //SEG412 [179] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 - lda #0 - sta i - //SEG413 [179] phi (byte) lock_current::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 + //SEG438 [196] phi (byte) lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l + //SEG439 [196] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 + lda #0 + sta i_3 + //SEG440 [196] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy jmp b1 - //SEG414 [179] phi from lock_current::@5 to lock_current::@1 [phi:lock_current::@5->lock_current::@1] - b1_from_b5: - //SEG415 [179] phi (byte) lock_current::i#3 = (byte) lock_current::i#1 [phi:lock_current::@5->lock_current::@1#0] -- register_copy - //SEG416 [179] phi (byte) lock_current::l#2 = (byte) lock_current::l#1 [phi:lock_current::@5->lock_current::@1#1] -- register_copy - jmp b1 - //SEG417 lock_current::@1 + //SEG441 lock_current::@1 b1: - //SEG418 [180] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 -- vbuz1=vbuz2_plus_vbuz3 - lda current_ypos - clc - adc l - sta line - //SEG419 [181] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 - lda line - asl - sta _1 - //SEG420 [182] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) -- pbuz1=pptc1_derefidx_vbuz2 - ldy _1 + //SEG442 [197] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG421 [183] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] + //SEG443 [198] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + lda current_xpos + sta col + //SEG444 [199] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] b2_from_b1: - //SEG422 [183] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuz1=vbuc1 + //SEG445 [199] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG423 [183] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#1] -- register_copy + //SEG446 [199] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy + //SEG447 [199] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy jmp b2 - //SEG424 [183] phi from lock_current::@3 to lock_current::@2 [phi:lock_current::@3->lock_current::@2] - b2_from_b3: - //SEG425 [183] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@3->lock_current::@2#0] -- register_copy - //SEG426 [183] phi (byte) lock_current::i#2 = (byte) lock_current::i#1 [phi:lock_current::@3->lock_current::@2#1] -- register_copy - jmp b2 - //SEG427 lock_current::@2 + //SEG448 lock_current::@2 b2: - //SEG428 [184] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#15 + (byte) lock_current::i#2) -- vbuz1=pbuz2_derefidx_vbuz3 - ldy i + //SEG449 [200] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 + ldy i_2 + iny + sty i + //SEG450 [201] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + ldy i_2 lda (current_piece_gfx),y - sta cell - //SEG429 [185] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz1 - inc i - //SEG430 [186] if((byte) lock_current::cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- vbuz1_eq_0_then_la1 - lda cell cmp #0 beq b3 jmp b4 - //SEG431 lock_current::@4 + //SEG451 lock_current::@4 b4: - //SEG432 [187] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 -- vbuz1=vbuz2_plus_vbuz3 - lda current_xpos - clc - adc c - sta col - //SEG433 [188] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG452 [202] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_color ldy col sta (playfield_line),y jmp b3 - //SEG434 lock_current::@3 + //SEG453 lock_current::@3 b3: - //SEG435 [189] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuz1=_inc_vbuz1 + //SEG454 [203] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 + inc col + //SEG455 [204] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG436 [190] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG456 [205] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@8 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 - bne b2_from_b3 + bne b8 jmp b5 - //SEG437 lock_current::@5 + //SEG457 lock_current::@5 b5: - //SEG438 [191] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#2 -- vbuz1=_inc_vbuz1 + //SEG458 [206] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + lda ypos2 + clc + adc #2 + sta ypos2 + //SEG459 [207] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG439 [192] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG460 [208] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 - bne b1_from_b5 + bne b7 jmp breturn - //SEG440 lock_current::@return + //SEG461 lock_current::@return breturn: - //SEG441 [193] return + //SEG462 [209] return rts + //SEG463 lock_current::@7 + b7: + //SEG464 [210] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + lda i + sta i_7 + //SEG465 [196] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] + b1_from_b7: + //SEG466 [196] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy + //SEG467 [196] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy + //SEG468 [196] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy + jmp b1 + //SEG469 lock_current::@8 + b8: + //SEG470 [211] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + lda i + sta i_9 + //SEG471 [199] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] + b2_from_b8: + //SEG472 [199] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy + //SEG473 [199] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy + //SEG474 [199] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy + jmp b2 } -//SEG442 keyboard_event_pressed +//SEG475 keyboard_event_pressed keyboard_event_pressed: { - .label _0 = $6b - .label _1 = $6d - .label return = $72 - .label return_1 = $74 - .label return_2 = $76 - .label row_bits = $6c - .label return_10 = $78 - .label keycode = $2d - .label return_11 = $6e - .label return_12 = $61 - //SEG443 [195] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 + .label _0 = $6e + .label _1 = $70 + .label return = $75 + .label return_1 = $77 + .label return_2 = $79 + .label row_bits = $6f + .label return_10 = $7b + .label keycode = $30 + .label return_11 = $71 + .label return_12 = $63 + //SEG476 [213] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 lda keycode lsr lsr lsr sta _0 - //SEG444 [196] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG477 [214] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda keyboard_scan_values,y sta row_bits - //SEG445 [197] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG478 [215] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and keycode sta _1 - //SEG446 [198] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG479 [216] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda row_bits ldy _1 and keyboard_matrix_col_bitmask,y sta return_11 jmp breturn - //SEG447 keyboard_event_pressed::@return + //SEG480 keyboard_event_pressed::@return breturn: - //SEG448 [199] return + //SEG481 [217] return rts } -//SEG449 keyboard_event_get +//SEG482 keyboard_event_get keyboard_event_get: { - .label return = $2e - .label return_3 = $40 - //SEG450 [200] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + .label return = $31 + .label return_3 = $43 + //SEG483 [218] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq breturn_from_keyboard_event_get jmp b3 - //SEG451 keyboard_event_get::@3 + //SEG484 keyboard_event_get::@3 b3: - //SEG452 [201] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG485 [219] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG453 [202] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG486 [220] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuz1=pbuc1_derefidx_vbuz2 ldy keyboard_events_size lda keyboard_events,y sta return - //SEG454 [203] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG487 [221] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG455 [203] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG456 [203] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy + //SEG488 [221] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG489 [221] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG457 [203] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG490 [221] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG458 [203] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG459 [203] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuz1=vbuc1 + //SEG491 [221] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG492 [221] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuz1=vbuc1 lda #$ff sta return jmp breturn - //SEG460 keyboard_event_get::@return + //SEG493 keyboard_event_get::@return breturn: - //SEG461 [204] return + //SEG494 [222] return rts } -//SEG462 keyboard_event_scan +//SEG495 keyboard_event_scan keyboard_event_scan: { - .label _3 = $7a - .label _4 = $7b - .label _11 = $7d - .label _14 = $73 - .label _18 = $75 - .label _22 = $77 - .label _26 = $79 - .label row_scan = $71 - .label keycode = $31 - .label row = $2f - .label col = $30 - .label event_type = $7c - //SEG463 [206] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + .label _3 = $7d + .label _4 = $7e + .label _11 = $80 + .label _14 = $76 + .label _18 = $78 + .label _22 = $7a + .label _26 = $7c + .label row_scan = $74 + .label keycode = $34 + .label row = $32 + .label col = $33 + .label event_type = $7f + //SEG496 [224] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG464 [206] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG465 [206] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 + //SEG497 [224] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG498 [224] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG466 [206] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 + //SEG499 [224] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 lda #0 sta row jmp b1 - //SEG467 [206] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG500 [224] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG468 [206] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG469 [206] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy - //SEG470 [206] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy + //SEG501 [224] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG502 [224] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG503 [224] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy jmp b1 - //SEG471 keyboard_event_scan::@1 + //SEG504 keyboard_event_scan::@1 b1: - //SEG472 [207] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 + //SEG505 [225] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 lda row sta keyboard_matrix_read.rowid - //SEG473 [208] call keyboard_matrix_read + //SEG506 [226] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG474 [209] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + //SEG507 [227] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 lda keyboard_matrix_read.return sta keyboard_matrix_read.return_2 jmp b25 - //SEG475 keyboard_event_scan::@25 + //SEG508 keyboard_event_scan::@25 b25: - //SEG476 [210] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 + //SEG509 [228] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 lda keyboard_matrix_read.return_2 sta row_scan - //SEG477 [211] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG510 [229] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda row_scan ldy row cmp keyboard_scan_values,y bne b4_from_b25 jmp b13 - //SEG478 keyboard_event_scan::@13 + //SEG511 keyboard_event_scan::@13 b13: - //SEG479 [212] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 + //SEG512 [230] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG480 [213] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] + //SEG513 [231] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] b3_from_b13: b3_from_b19: - //SEG481 [213] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG482 [213] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy + //SEG514 [231] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG515 [231] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy jmp b3 - //SEG483 keyboard_event_scan::@3 + //SEG516 keyboard_event_scan::@3 b3: - //SEG484 [214] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG517 [232] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG485 [215] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG518 [233] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1_from_b3 - //SEG486 [216] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG519 [234] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] b20_from_b3: jmp b20 - //SEG487 keyboard_event_scan::@20 + //SEG520 keyboard_event_scan::@20 b20: - //SEG488 [217] call keyboard_event_pressed - //SEG489 [194] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG521 [235] call keyboard_event_pressed + //SEG522 [212] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG490 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG523 [212] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG491 [218] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG524 [236] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return jmp b26 - //SEG492 keyboard_event_scan::@26 + //SEG525 keyboard_event_scan::@26 b26: - //SEG493 [219] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 + //SEG526 [237] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_event_pressed.return sta _14 - //SEG494 [220] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuz1_eq_0_then_la1 + //SEG527 [238] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuz1_eq_0_then_la1 lda _14 cmp #0 beq b9_from_b26 - //SEG495 [221] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG528 [239] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] b21_from_b26: jmp b21 - //SEG496 keyboard_event_scan::@21 + //SEG529 keyboard_event_scan::@21 b21: - //SEG497 [222] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG530 [240] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] b9_from_b21: b9_from_b26: jmp b9 - //SEG498 keyboard_event_scan::@9 + //SEG531 keyboard_event_scan::@9 b9: - //SEG499 [223] call keyboard_event_pressed - //SEG500 [194] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG532 [241] call keyboard_event_pressed + //SEG533 [212] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG501 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG534 [212] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG502 [224] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG535 [242] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_1 jmp b27 - //SEG503 keyboard_event_scan::@27 + //SEG536 keyboard_event_scan::@27 b27: - //SEG504 [225] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 + //SEG537 [243] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_1 sta _18 - //SEG505 [226] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuz1_eq_0_then_la1 + //SEG538 [244] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuz1_eq_0_then_la1 lda _18 cmp #0 beq b10_from_b27 - //SEG506 [227] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] + //SEG539 [245] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] b22_from_b27: jmp b22 - //SEG507 keyboard_event_scan::@22 + //SEG540 keyboard_event_scan::@22 b22: - //SEG508 [228] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] + //SEG541 [246] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] b10_from_b22: b10_from_b27: jmp b10 - //SEG509 keyboard_event_scan::@10 + //SEG542 keyboard_event_scan::@10 b10: - //SEG510 [229] call keyboard_event_pressed - //SEG511 [194] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG543 [247] call keyboard_event_pressed + //SEG544 [212] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG512 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG545 [212] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG513 [230] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG546 [248] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_2 jmp b28 - //SEG514 keyboard_event_scan::@28 + //SEG547 keyboard_event_scan::@28 b28: - //SEG515 [231] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 + //SEG548 [249] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_2 sta _22 - //SEG516 [232] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuz1_eq_0_then_la1 + //SEG549 [250] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuz1_eq_0_then_la1 lda _22 cmp #0 beq b11_from_b28 - //SEG517 [233] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] + //SEG550 [251] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] b23_from_b28: jmp b23 - //SEG518 keyboard_event_scan::@23 + //SEG551 keyboard_event_scan::@23 b23: - //SEG519 [234] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] + //SEG552 [252] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] b11_from_b23: b11_from_b28: jmp b11 - //SEG520 keyboard_event_scan::@11 + //SEG553 keyboard_event_scan::@11 b11: - //SEG521 [235] call keyboard_event_pressed - //SEG522 [194] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG554 [253] call keyboard_event_pressed + //SEG555 [212] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG523 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG556 [212] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG524 [236] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG557 [254] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_10 jmp b29 - //SEG525 keyboard_event_scan::@29 + //SEG558 keyboard_event_scan::@29 b29: - //SEG526 [237] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 + //SEG559 [255] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_10 sta _26 - //SEG527 [238] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuz1_eq_0_then_la1 + //SEG560 [256] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuz1_eq_0_then_la1 lda _26 cmp #0 beq breturn - //SEG528 [239] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] + //SEG561 [257] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] b24_from_b29: jmp b24 - //SEG529 keyboard_event_scan::@24 + //SEG562 keyboard_event_scan::@24 b24: jmp breturn - //SEG530 keyboard_event_scan::@return + //SEG563 keyboard_event_scan::@return breturn: - //SEG531 [240] return + //SEG564 [258] return rts - //SEG532 [241] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG565 [259] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG533 [241] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG534 [241] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy - //SEG535 [241] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuz1=vbuc1 + //SEG566 [259] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG567 [259] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG568 [259] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuz1=vbuc1 lda #0 sta col jmp b4 - //SEG536 [241] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG569 [259] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG537 [241] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG538 [241] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy - //SEG539 [241] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy + //SEG570 [259] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG571 [259] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG572 [259] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy jmp b4 - //SEG540 keyboard_event_scan::@4 + //SEG573 keyboard_event_scan::@4 b4: - //SEG541 [242] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuz1=vbuz2_bxor_pbuc1_derefidx_vbuz3 + //SEG574 [260] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuz1=vbuz2_bxor_pbuc1_derefidx_vbuz3 lda row_scan ldy row eor keyboard_scan_values,y sta _3 - //SEG542 [243] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG575 [261] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda _3 ldy col and keyboard_matrix_col_bitmask,y sta _4 - //SEG543 [244] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuz1_eq_0_then_la1 + //SEG576 [262] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuz1_eq_0_then_la1 lda _4 cmp #0 beq b5_from_b4 jmp b15 - //SEG544 keyboard_event_scan::@15 + //SEG577 keyboard_event_scan::@15 b15: - //SEG545 [245] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG578 [263] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5_from_b15 jmp b16 - //SEG546 keyboard_event_scan::@16 + //SEG579 keyboard_event_scan::@16 b16: - //SEG547 [246] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG580 [264] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda row_scan ldy col and keyboard_matrix_col_bitmask,y sta event_type - //SEG548 [247] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuz1_eq_0_then_la1 + //SEG581 [265] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuz1_eq_0_then_la1 lda event_type cmp #0 beq b7 jmp b17 - //SEG549 keyboard_event_scan::@17 + //SEG582 keyboard_event_scan::@17 b17: - //SEG550 [248] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG583 [266] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG551 [249] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG584 [267] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG552 [250] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] + //SEG585 [268] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] b5_from_b15: b5_from_b17: b5_from_b4: b5_from_b7: - //SEG553 [250] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG586 [268] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy jmp b5 - //SEG554 keyboard_event_scan::@5 + //SEG587 keyboard_event_scan::@5 b5: - //SEG555 [251] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG588 [269] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG556 [252] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 + //SEG589 [270] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG557 [253] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG590 [271] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuz1_neq_vbuc1_then_la1 lda col cmp #8 bne b4_from_b5 jmp b19 - //SEG558 keyboard_event_scan::@19 + //SEG591 keyboard_event_scan::@19 b19: - //SEG559 [254] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG592 [272] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3_from_b19 - //SEG560 keyboard_event_scan::@7 + //SEG593 keyboard_event_scan::@7 b7: - //SEG561 [255] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz2_bor_vbuc1 + //SEG594 [273] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz2_bor_vbuc1 lda #$40 ora keycode sta _11 - //SEG562 [256] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG595 [274] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuz2 lda _11 ldy keyboard_events_size sta keyboard_events,y - //SEG563 [257] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG596 [275] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG564 keyboard_matrix_read +//SEG597 keyboard_matrix_read keyboard_matrix_read: { - .label return = $7e - .label rowid = $6f - .label return_2 = $70 - //SEG565 [258] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + .label return = $81 + .label rowid = $72 + .label return_2 = $73 + //SEG598 [276] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy rowid lda keyboard_matrix_row_bitmask,y sta CIA1_PORT_A - //SEG566 [259] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 + //SEG599 [277] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff sta return jmp breturn - //SEG567 keyboard_matrix_read::@return + //SEG600 keyboard_matrix_read::@return breturn: - //SEG568 [260] return + //SEG601 [278] return rts } -//SEG569 init +//SEG602 init init: { - .label _5 = $7f - .label _8 = $80 - .label _13 = $81 - .label li = $34 - .label i = $33 - .label pli = $37 - .label j = $36 - .label c = $3c - .label line = $39 - .label l = $3b - //SEG570 [262] call fill - //SEG571 [287] phi from init to fill [phi:init->fill] + .label _5 = $82 + .label _8 = $83 + .label _13 = $84 + .label li = $37 + .label i = $36 + .label pli = $3a + .label j = $39 + .label c = $3f + .label line = $3c + .label l = $3e + //SEG603 [280] call fill + //SEG604 [305] phi from init to fill [phi:init->fill] fill_from_init: - //SEG572 [287] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:init->fill#0] -- vbuz1=vbuc1 + //SEG605 [305] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:init->fill#0] -- vbuz1=vbuc1 lda #$a0 sta fill.val - //SEG573 [287] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:init->fill#1] -- pbuz1=pbuc1 + //SEG606 [305] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:init->fill#1] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG574 [263] phi from init to init::@9 [phi:init->init::@9] + //SEG607 [281] phi from init to init::@9 [phi:init->init::@9] b9_from_init: jmp b9 - //SEG575 init::@9 + //SEG608 init::@9 b9: - //SEG576 [264] call fill - //SEG577 [287] phi from init::@9 to fill [phi:init::@9->fill] + //SEG609 [282] call fill + //SEG610 [305] phi from init::@9 to fill [phi:init::@9->fill] fill_from_b9: - //SEG578 [287] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@9->fill#0] -- vbuz1=vbuc1 + //SEG611 [305] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@9->fill#0] -- vbuz1=vbuc1 lda #BLACK sta fill.val - //SEG579 [287] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:init::@9->fill#1] -- pbuz1=pbuc1 + //SEG612 [305] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:init::@9->fill#1] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG580 [265] phi from init::@9 to init::@1 [phi:init::@9->init::@1] + //SEG613 [283] phi from init::@9 to init::@1 [phi:init::@9->init::@1] b1_from_b9: - //SEG581 [265] phi (byte*) init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:init::@9->init::@1#0] -- pbuz1=pbuc1 + //SEG614 [283] phi (byte*) init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:init::@9->init::@1#0] -- pbuz1=pbuc1 lda #COLS+$28+$f sta li+1 - //SEG582 [265] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@9->init::@1#1] -- vbuz1=vbuc1 + //SEG615 [283] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@9->init::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG583 [265] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG616 [283] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG584 [265] phi (byte*) init::li#2 = (byte*) init::li#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG585 [265] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#1] -- register_copy + //SEG617 [283] phi (byte*) init::li#2 = (byte*) init::li#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG618 [283] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#1] -- register_copy jmp b1 - //SEG586 init::@1 + //SEG619 init::@1 b1: - //SEG587 [266] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG620 [284] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _5 - //SEG588 [267] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG621 [285] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _5 lda li sta screen_lines,y lda li+1 sta screen_lines+1,y - //SEG589 [268] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG622 [286] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li clc adc #$28 @@ -7281,41 +7675,41 @@ init: { bcc !+ inc li+1 !: - //SEG590 [269] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuz1=_inc_vbuz1 + //SEG623 [287] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG591 [270] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG624 [288] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #PLAYFIELD_LINES+2+1 bne b1_from_b1 - //SEG592 [271] phi from init::@1 to init::@2 [phi:init::@1->init::@2] + //SEG625 [289] phi from init::@1 to init::@2 [phi:init::@1->init::@2] b2_from_b1: - //SEG593 [271] phi (byte*) init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:init::@1->init::@2#0] -- pbuz1=pbuc1 + //SEG626 [289] phi (byte*) init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:init::@1->init::@2#0] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG594 [271] phi (byte) init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#1] -- vbuz1=vbuc1 + //SEG627 [289] phi (byte) init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#1] -- vbuz1=vbuc1 lda #0 sta j jmp b2 - //SEG595 [271] phi from init::@2 to init::@2 [phi:init::@2->init::@2] + //SEG628 [289] phi from init::@2 to init::@2 [phi:init::@2->init::@2] b2_from_b2: - //SEG596 [271] phi (byte*) init::pli#2 = (byte*) init::pli#1 [phi:init::@2->init::@2#0] -- register_copy - //SEG597 [271] phi (byte) init::j#2 = (byte) init::j#1 [phi:init::@2->init::@2#1] -- register_copy + //SEG629 [289] phi (byte*) init::pli#2 = (byte*) init::pli#1 [phi:init::@2->init::@2#0] -- register_copy + //SEG630 [289] phi (byte) init::j#2 = (byte) init::j#1 [phi:init::@2->init::@2#1] -- register_copy jmp b2 - //SEG598 init::@2 + //SEG631 init::@2 b2: - //SEG599 [272] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG632 [290] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda j asl sta _8 - //SEG600 [273] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG633 [291] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _8 lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG601 [274] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- pbuz1=pbuz1_plus_vbuc1 + //SEG634 [292] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #$a @@ -7323,43 +7717,43 @@ init: { bcc !+ inc pli+1 !: - //SEG602 [275] (byte) init::j#1 ← ++ (byte) init::j#2 -- vbuz1=_inc_vbuz1 + //SEG635 [293] (byte) init::j#1 ← ++ (byte) init::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG603 [276] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG636 [294] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #PLAYFIELD_LINES-1+1 bne b2_from_b2 - //SEG604 [277] phi from init::@2 to init::@3 [phi:init::@2->init::@3] + //SEG637 [295] phi from init::@2 to init::@3 [phi:init::@2->init::@3] b3_from_b2: - //SEG605 [277] phi (byte) init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuz1=vbuc1 + //SEG638 [295] phi (byte) init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG606 [277] phi (byte*) init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:init::@2->init::@3#1] -- pbuz1=pbuc1 + //SEG639 [295] phi (byte*) init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:init::@2->init::@3#1] -- pbuz1=pbuc1 lda #COLS+$e sta line+1 jmp b3 - //SEG607 [277] phi from init::@7 to init::@3 [phi:init::@7->init::@3] + //SEG640 [295] phi from init::@7 to init::@3 [phi:init::@7->init::@3] b3_from_b7: - //SEG608 [277] phi (byte) init::l#4 = (byte) init::l#1 [phi:init::@7->init::@3#0] -- register_copy - //SEG609 [277] phi (byte*) init::line#4 = (byte*) init::line#1 [phi:init::@7->init::@3#1] -- register_copy + //SEG641 [295] phi (byte) init::l#4 = (byte) init::l#1 [phi:init::@7->init::@3#0] -- register_copy + //SEG642 [295] phi (byte*) init::line#4 = (byte*) init::line#1 [phi:init::@7->init::@3#1] -- register_copy jmp b3 - //SEG610 init::@3 + //SEG643 init::@3 b3: - //SEG611 [278] phi from init::@3 to init::@4 [phi:init::@3->init::@4] + //SEG644 [296] phi from init::@3 to init::@4 [phi:init::@3->init::@4] b4_from_b3: - //SEG612 [278] phi (byte) init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@4#0] -- vbuz1=vbuc1 + //SEG645 [296] phi (byte) init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@4#0] -- vbuz1=vbuc1 lda #0 sta c jmp b4 - //SEG613 [278] phi from init::@4 to init::@4 [phi:init::@4->init::@4] + //SEG646 [296] phi from init::@4 to init::@4 [phi:init::@4->init::@4] b4_from_b4: - //SEG614 [278] phi (byte) init::c#2 = (byte) init::c#1 [phi:init::@4->init::@4#0] -- register_copy + //SEG647 [296] phi (byte) init::c#2 = (byte) init::c#1 [phi:init::@4->init::@4#0] -- register_copy jmp b4 - //SEG615 init::@4 + //SEG648 init::@4 b4: - //SEG616 [279] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 -- pbuz1=pbuz2_plus_vbuz3 + //SEG649 [297] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 -- pbuz1=pbuz2_plus_vbuz3 lda c clc adc line @@ -7367,20 +7761,20 @@ init: { lda #0 adc line+1 sta _13+1 - //SEG617 [280] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG650 [298] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (_13),y - //SEG618 [281] (byte) init::c#1 ← ++ (byte) init::c#2 -- vbuz1=_inc_vbuz1 + //SEG651 [299] (byte) init::c#1 ← ++ (byte) init::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG619 [282] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG652 [300] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #PLAYFIELD_COLS+1+1 bne b4_from_b4 jmp b7 - //SEG620 init::@7 + //SEG653 init::@7 b7: - //SEG621 [283] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG654 [301] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -7388,24 +7782,24 @@ init: { bcc !+ inc line+1 !: - //SEG622 [284] (byte) init::l#1 ← ++ (byte) init::l#4 -- vbuz1=_inc_vbuz1 + //SEG655 [302] (byte) init::l#1 ← ++ (byte) init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG623 [285] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG656 [303] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES+1+1 bne b3_from_b7 jmp breturn - //SEG624 init::@return + //SEG657 init::@return breturn: - //SEG625 [286] return + //SEG658 [304] return rts } -//SEG626 fill +//SEG659 fill fill: { - .label end = $83 - .label addr = $3e - .label val = $3d - //SEG627 [288] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + .label end = $86 + .label addr = $41 + .label val = $40 + //SEG660 [306] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -7413,23 +7807,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG628 [289] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG661 [307] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG629 [289] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG662 [307] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG630 fill::@1 + //SEG663 fill::@1 b1: - //SEG631 [290] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 + //SEG664 [308] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 lda val ldy #0 sta (addr),y - //SEG632 [291] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG665 [309] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG633 [292] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG666 [310] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 lda addr+1 cmp end+1 bne b1_from_b1 @@ -7437,9 +7831,25 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG634 fill::@return + //SEG667 fill::@return breturn: - //SEG635 [293] return + //SEG668 [311] return + rts +} +//SEG669 sid_rnd_init +sid_rnd_init: { + //SEG670 [312] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + lda #<$ffff + sta SID_VOICE3_FREQ + lda #>$ffff + sta SID_VOICE3_FREQ+1 + //SEG671 [313] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + lda #SID_CONTROL_NOISE + sta SID_VOICE3_CONTROL + jmp breturn + //SEG672 sid_rnd_init::@return + breturn: + //SEG673 [314] return rts } keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f @@ -7447,194 +7857,226 @@ fill: { 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 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +Statement [12] (byte*~) current_piece_gfx#84 ← (byte*) current_piece_gfx#10 [ current_piece_gfx#84 current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ( main:2 [ current_piece_gfx#84 current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:103 [ spawn_current::$3 ] +Statement [15] (byte*~) current_piece#68 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) [ current_piece_gfx#10 current_piece_color#15 current_piece#68 ] ( main:2 [ current_piece_gfx#10 current_piece_color#15 current_piece#68 ] ) always clobbers reg byte a +Statement [17] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:53 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] -Statement [14] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a -Statement [25] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$8 [ current_piece#13 current_piece_color#13 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_orientation#18 current_piece_gfx#17 current_xpos#19 ] ( main:2 [ current_piece#13 current_piece_color#13 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_orientation#18 current_piece_gfx#17 current_xpos#19 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:65 [ main::key_event#0 ] -Statement [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 [ current_piece#13 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#2 current_piece_orientation#18 current_piece_gfx#17 ] ( main:2 [ current_piece#13 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#2 current_piece_orientation#18 current_piece_gfx#17 ] ) always clobbers reg byte a -Statement [35] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$10 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::render#3 ] ( main:2 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::render#3 ] ) always clobbers reg byte a -Statement [41] (byte*~) current_piece_gfx#82 ← (byte*) current_piece_gfx#18 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#72 current_xpos#92 current_piece_gfx#82 ] ( main:2 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#72 current_xpos#92 current_piece_gfx#82 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ current_ypos#22 current_ypos#72 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 ] -Statement [47] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#0 ] ( main:2::render_current:11 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#0 ] main:2::render_current:43 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 ] -Statement [50] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ( main:2::render_current:11 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] main:2::render_current:43 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ) always clobbers reg byte a +Statement [18] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a +Statement [29] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$9 [ current_piece#13 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_orientation#18 current_piece_gfx#17 current_xpos#19 ] ( main:2 [ current_piece#13 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_orientation#18 current_piece_gfx#17 current_xpos#19 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:68 [ main::key_event#0 ] +Statement [34] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$10 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#2 current_orientation#18 current_piece_gfx#17 ] ( main:2 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#2 current_orientation#18 current_piece_gfx#17 ] ) always clobbers reg byte a +Statement [39] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$11 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#3 ] ( main:2 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#3 ] ) always clobbers reg byte a +Statement [45] (byte*~) current_piece_gfx#85 ← (byte*) current_piece_gfx#18 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_ypos#68 current_xpos#93 current_piece_gfx#85 ] ( main:2 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_ypos#68 current_xpos#93 current_piece_gfx#85 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ current_ypos#22 current_ypos#68 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ current_xpos#62 current_xpos#93 ] +Statement [51] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#0 ] ( main:2::render_current:14 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#0 ] main:2::render_current:47 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ current_piece_color#64 current_piece_color#72 current_piece_color#73 ] +Statement [54] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) [ current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ( main:2::render_current:14 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] main:2::render_current:47 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] -Statement [53] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#61 + (byte) render_current::i#2) [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ( main:2::render_current:11 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] main:2::render_current:43 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ) always clobbers reg byte a +Statement [57] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#62 + (byte) render_current::i#2) [ current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ( main:2::render_current:14 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] main:2::render_current:47 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 ] -Statement [57] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#63 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ( main:2::render_current:11 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] main:2::render_current:43 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ) always clobbers reg byte a -Statement [68] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] main:2::render_playfield:38 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ) always clobbers reg byte a +Statement [61] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#64 [ current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ( main:2::render_current:14 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] main:2::render_current:47 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ) always clobbers reg byte a +Statement [72] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ( main:2::render_playfield:11 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] main:2::render_playfield:42 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Statement [69] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] main:2::render_playfield:38 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ) always clobbers reg byte a -Statement [71] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] main:2::render_playfield:38 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y +Statement [73] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ( main:2::render_playfield:11 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] main:2::render_playfield:42 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ) always clobbers reg byte a +Statement [75] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ( main:2::render_playfield:11 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] main:2::render_playfield:42 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:40 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:103 [ spawn_current::$3 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:36 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:40 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:50 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:53 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] -Statement [83] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::$2 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::$2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:73 [ main::render#2 ] -Statement [84] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#2 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#2 ] ) always clobbers reg byte a -Statement [89] (byte*~) current_piece#70 ← (byte*) current_piece#13 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#3 collision::ypos#3 collision::orientation#3 current_piece#70 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#3 collision::ypos#3 collision::orientation#3 current_piece#70 ] ) always clobbers reg byte a +Statement [87] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::$2 ] ( main:2::play_move_rotate:36 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::$2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:76 [ main::render#2 ] +Statement [88] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#2 ] ( main:2::play_move_rotate:36 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#2 ] ) always clobbers reg byte a +Statement [93] (byte*~) current_piece#72 ← (byte*) current_piece#13 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#3 collision::ypos#3 collision::orientation#3 current_piece#72 ] ( main:2::play_move_rotate:36 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#3 collision::ypos#3 collision::orientation#3 current_piece#72 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] -Statement [93] (byte~) play_move_rotate::$8 ← (byte~) play_move_rotate::$6 & (const byte) COLLISION_LEFT#0|(const byte) COLLISION_RIGHT#0 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 play_move_rotate::$8 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 play_move_rotate::$8 ] ) always clobbers reg byte a -Statement [96] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_piece_orientation#8 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#8 current_piece_gfx#8 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#8 current_piece_gfx#8 ] ) always clobbers reg byte a -Statement [97] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::$4 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::$4 ] ) always clobbers reg byte a -Statement [98] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#1 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#1 ] ) always clobbers reg byte a -Statement [100] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 [ collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:69 [ main::render#1 ] -Statement [101] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] ) always clobbers reg byte a -Statement [103] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] ) always clobbers reg byte a +Statement [99] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#8 current_piece_gfx#8 ] ( main:2::play_move_rotate:36 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#8 current_piece_gfx#8 ] ) always clobbers reg byte a +Statement [100] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::$4 ] ( main:2::play_move_rotate:36 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::$4 ] ) always clobbers reg byte a +Statement [101] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#1 ] ( main:2::play_move_rotate:36 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#1 ] ) always clobbers reg byte a +Statement [103] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 [ collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] ( main:2::play_move_rotate:36::collision:94 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_leftright:31::collision:132 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_leftright:31::collision:143 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_down:26::collision:167 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:72 [ main::render#1 ] +Statement [104] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] ( main:2::play_move_rotate:36::collision:94 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_leftright:31::collision:132 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_leftright:31::collision:143 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_down:26::collision:167 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] ) always clobbers reg byte a +Statement [106] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] ( main:2::play_move_rotate:36::collision:94 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_leftright:31::collision:132 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_leftright:31::collision:143 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_down:26::collision:167 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] -Statement [107] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ) always clobbers reg byte a +Statement [110] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:2::play_move_rotate:36::collision:94 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:31::collision:132 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:31::collision:143 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_down:26::collision:167 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ collision::c#2 collision::c#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:91 [ collision::i#1 ] -Statement [111] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] ) always clobbers reg byte a -Statement [114] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ) always clobbers reg byte a -Statement [128] (byte*~) current_piece#69 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece#69 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ( main:2::play_move_leftright:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece#69 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ) always clobbers reg byte a -Statement [139] (byte*~) current_piece#68 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece#68 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ( main:2::play_move_leftright:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece#68 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ) always clobbers reg byte a -Statement [163] (byte*~) current_piece#67 ← (byte*) current_piece#11 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_piece#67 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ( main:2::play_move_down:22 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_piece#67 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ) always clobbers reg byte a -Statement [180] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::line#0 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::line#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ lock_current::l#2 lock_current::l#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:43 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] -Statement [181] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::$1 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::$1 ] ) always clobbers reg byte a -Statement [182] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::playfield_line#0 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::playfield_line#0 ] ) always clobbers reg byte a -Statement [184] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#15 + (byte) lock_current::i#2) [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::playfield_line#0 lock_current::i#2 lock_current::c#2 lock_current::cell#0 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::playfield_line#0 lock_current::i#2 lock_current::c#2 lock_current::cell#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ lock_current::c#2 lock_current::c#1 ] -Statement [187] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 lock_current::col#0 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 lock_current::col#0 ] ) always clobbers reg byte a -Statement [188] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 ] ) always clobbers reg byte a -Statement [195] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:2::play_move_down:22::keyboard_event_pressed:149 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:217 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:223 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:229 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:235 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:93 [ collision::i#1 ] +Statement [114] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] ( main:2::play_move_rotate:36::collision:94 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_leftright:31::collision:132 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_leftright:31::collision:143 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_down:26::collision:167 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] ) always clobbers reg byte a +Statement [117] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:2::play_move_rotate:36::collision:94 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:31::collision:132 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:31::collision:143 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_down:26::collision:167 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ) always clobbers reg byte a +Statement [131] (byte*~) current_piece#71 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_orientation#18 current_piece#71 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ( main:2::play_move_leftright:31 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_piece#71 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ) always clobbers reg byte a +Statement [142] (byte*~) current_piece#70 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_orientation#18 current_piece#70 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ( main:2::play_move_leftright:31 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_piece#70 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ) always clobbers reg byte a +Statement [166] (byte*~) current_piece#69 ← (byte*) current_piece#11 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_piece#69 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ( main:2::play_move_down:26 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_piece#69 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ) always clobbers reg byte a +Statement [175] (byte*~) current_piece#73 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) [ current_piece_gfx#10 current_piece_color#15 current_piece#73 ] ( main:2::play_move_down:26 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_piece_color#15 current_piece#73 ] ) always clobbers reg byte a +Statement [184] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ spawn_current::$3 spawn_current::piece_idx#2 ] ( main:2::spawn_current:9 [ spawn_current::$3 spawn_current::piece_idx#2 ] main:2::play_move_down:26::spawn_current:174 [ keyboard_events_size#16 main::key_event#0 spawn_current::$3 spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] +Statement [185] (byte*) current_piece_gfx#10 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#10 spawn_current::$3 spawn_current::piece_idx#2 ] ( main:2::spawn_current:9 [ current_piece_gfx#10 spawn_current::$3 spawn_current::piece_idx#2 ] main:2::play_move_down:26::spawn_current:174 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 spawn_current::$3 spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [186] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ( main:2::spawn_current:9 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] main:2::play_move_down:26::spawn_current:174 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ) always clobbers reg byte a +Statement [192] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ spawn_current::piece_idx#1 ] ( main:2::spawn_current:9 [ spawn_current::piece_idx#1 ] main:2::play_move_down:26::spawn_current:174 [ keyboard_events_size#16 main::key_event#0 spawn_current::piece_idx#1 ] ) always clobbers reg byte a +Statement [195] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#0 ] ( main:2::play_move_down:26::lock_current:172 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#0 ] ) always clobbers reg byte a +Statement [197] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::i#3 lock_current::l#6 lock_current::playfield_line#0 ] ( main:2::play_move_down:26::lock_current:172 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::i#3 lock_current::l#6 lock_current::playfield_line#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:43 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ lock_current::l#6 lock_current::l#1 ] +Statement [201] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ( main:2::play_move_down:26::lock_current:172 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ lock_current::c#2 lock_current::c#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:109 [ lock_current::i#1 ] +Statement [202] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ( main:2::play_move_down:26::lock_current:172 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ) always clobbers reg byte a +Statement [213] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:2::play_move_down:26::keyboard_event_pressed:152 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:235 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:241 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:247 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:253 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ 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 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ keyboard_event_pressed::keycode#5 ] -Statement [197] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::play_move_down:22::keyboard_event_pressed:149 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:217 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:223 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:229 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:235 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:108 [ keyboard_event_pressed::row_bits#0 ] -Statement [198] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:2::play_move_down:22::keyboard_event_pressed:149 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:217 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:223 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:229 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:235 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [212] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Statement [242] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:113 [ keyboard_event_scan::row_scan#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ 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 ] -Statement [243] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a -Statement [246] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a -Statement [248] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a -Statement [254] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [255] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ) always clobbers reg byte a -Statement [258] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_event_scan:16::keyboard_matrix_read:208 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a -Statement [259] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_event_scan:16::keyboard_matrix_read:208 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [266] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::i#2 init::li#2 init::$5 ] ( main:2::init:5 [ init::i#2 init::li#2 init::$5 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ init::i#2 init::i#1 ] -Statement [267] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 [ init::i#2 init::li#2 ] ( main:2::init:5 [ init::i#2 init::li#2 ] ) always clobbers reg byte a -Statement [268] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init::i#2 init::li#1 ] ( main:2::init:5 [ init::i#2 init::li#1 ] ) always clobbers reg byte a -Statement [272] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::j#2 init::pli#2 init::$8 ] ( main:2::init:5 [ init::j#2 init::pli#2 init::$8 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:54 [ init::j#2 init::j#1 ] -Statement [273] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 [ init::j#2 init::pli#2 ] ( main:2::init:5 [ init::j#2 init::pli#2 ] ) always clobbers reg byte a -Statement [274] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 [ init::j#2 init::pli#1 ] ( main:2::init:5 [ init::j#2 init::pli#1 ] ) always clobbers reg byte a -Statement [279] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 [ init::line#4 init::l#4 init::c#2 init::$13 ] ( main:2::init:5 [ init::line#4 init::l#4 init::c#2 init::$13 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:59 [ init::l#4 init::l#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ init::c#2 init::c#1 ] -Statement [280] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 [ init::line#4 init::l#4 init::c#2 ] ( main:2::init:5 [ init::line#4 init::l#4 init::c#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:59 [ init::l#4 init::l#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:60 [ init::c#2 init::c#1 ] -Statement [283] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init::l#4 init::line#1 ] ( main:2::init:5 [ init::l#4 init::line#1 ] ) always clobbers reg byte a -Statement [288] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:2::init:5::fill:262 [ fill::addr#0 fill::val#3 fill::end#0 ] main:2::init:5::fill:264 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:61 [ fill::val#3 ] -Statement [290] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:2::init:5::fill:262 [ fill::val#3 fill::end#0 fill::addr#2 ] main:2::init:5::fill:264 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:61 [ fill::val#3 ] -Statement [292] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:2::init:5::fill:262 [ fill::val#3 fill::end#0 fill::addr#1 ] main:2::init:5::fill:264 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a -Statement [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a -Statement [14] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a -Statement [25] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$8 [ current_piece#13 current_piece_color#13 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_orientation#18 current_piece_gfx#17 current_xpos#19 ] ( main:2 [ current_piece#13 current_piece_color#13 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_orientation#18 current_piece_gfx#17 current_xpos#19 ] ) always clobbers reg byte a -Statement [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 [ current_piece#13 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#2 current_piece_orientation#18 current_piece_gfx#17 ] ( main:2 [ current_piece#13 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#2 current_piece_orientation#18 current_piece_gfx#17 ] ) always clobbers reg byte a -Statement [35] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$10 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::render#3 ] ( main:2 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::render#3 ] ) always clobbers reg byte a -Statement [41] (byte*~) current_piece_gfx#82 ← (byte*) current_piece_gfx#18 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#72 current_xpos#92 current_piece_gfx#82 ] ( main:2 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#72 current_xpos#92 current_piece_gfx#82 ] ) always clobbers reg byte a -Statement [47] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#0 ] ( main:2::render_current:11 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#0 ] main:2::render_current:43 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#0 ] ) always clobbers reg byte a -Statement [50] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ( main:2::render_current:11 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] main:2::render_current:43 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ) always clobbers reg byte a -Statement [53] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#61 + (byte) render_current::i#2) [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ( main:2::render_current:11 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] main:2::render_current:43 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ) always clobbers reg byte a -Statement [57] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#63 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ( main:2::render_current:11 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] main:2::render_current:43 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ) always clobbers reg byte a -Statement [68] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] main:2::render_playfield:38 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ) always clobbers reg byte a -Statement [69] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] main:2::render_playfield:38 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ) always clobbers reg byte a -Statement [71] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] main:2::render_playfield:38 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y -Statement [83] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::$2 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::$2 ] ) always clobbers reg byte a -Statement [84] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#2 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#2 ] ) always clobbers reg byte a -Statement [89] (byte*~) current_piece#70 ← (byte*) current_piece#13 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#3 collision::ypos#3 collision::orientation#3 current_piece#70 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#3 collision::ypos#3 collision::orientation#3 current_piece#70 ] ) always clobbers reg byte a -Statement [93] (byte~) play_move_rotate::$8 ← (byte~) play_move_rotate::$6 & (const byte) COLLISION_LEFT#0|(const byte) COLLISION_RIGHT#0 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 play_move_rotate::$8 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 play_move_rotate::$8 ] ) always clobbers reg byte a -Statement [96] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_piece_orientation#8 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#8 current_piece_gfx#8 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#8 current_piece_gfx#8 ] ) always clobbers reg byte a -Statement [97] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::$4 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::$4 ] ) always clobbers reg byte a -Statement [98] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#1 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#1 ] ) always clobbers reg byte a -Statement [100] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 [ collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] ) always clobbers reg byte a -Statement [101] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] ) always clobbers reg byte a -Statement [103] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] ) always clobbers reg byte a -Statement [107] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ) always clobbers reg byte a -Statement [111] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] ) always clobbers reg byte a -Statement [114] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ) always clobbers reg byte a -Statement [128] (byte*~) current_piece#69 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece#69 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ( main:2::play_move_leftright:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece#69 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ) always clobbers reg byte a -Statement [139] (byte*~) current_piece#68 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece#68 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ( main:2::play_move_leftright:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece#68 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ) always clobbers reg byte a -Statement [163] (byte*~) current_piece#67 ← (byte*) current_piece#11 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_piece#67 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ( main:2::play_move_down:22 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_piece#67 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ) always clobbers reg byte a -Statement [180] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::line#0 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::line#0 ] ) always clobbers reg byte a -Statement [181] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::$1 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::$1 ] ) always clobbers reg byte a -Statement [182] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::playfield_line#0 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::playfield_line#0 ] ) always clobbers reg byte a -Statement [184] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#15 + (byte) lock_current::i#2) [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::playfield_line#0 lock_current::i#2 lock_current::c#2 lock_current::cell#0 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::playfield_line#0 lock_current::i#2 lock_current::c#2 lock_current::cell#0 ] ) always clobbers reg byte a -Statement [187] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 lock_current::col#0 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 lock_current::col#0 ] ) always clobbers reg byte a -Statement [188] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 ] ) always clobbers reg byte a -Statement [195] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:2::play_move_down:22::keyboard_event_pressed:149 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:217 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:223 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:229 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:235 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a -Statement [197] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::play_move_down:22::keyboard_event_pressed:149 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:217 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:223 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:229 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:235 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Statement [198] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:2::play_move_down:22::keyboard_event_pressed:149 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:217 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:223 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:229 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:235 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [211] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a -Statement [212] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a -Statement [242] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a -Statement [243] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a -Statement [246] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a -Statement [248] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a -Statement [254] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [255] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ) always clobbers reg byte a -Statement [258] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_event_scan:16::keyboard_matrix_read:208 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a -Statement [259] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_event_scan:16::keyboard_matrix_read:208 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [266] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::i#2 init::li#2 init::$5 ] ( main:2::init:5 [ init::i#2 init::li#2 init::$5 ] ) always clobbers reg byte a -Statement [267] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 [ init::i#2 init::li#2 ] ( main:2::init:5 [ init::i#2 init::li#2 ] ) always clobbers reg byte a -Statement [268] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init::i#2 init::li#1 ] ( main:2::init:5 [ init::i#2 init::li#1 ] ) always clobbers reg byte a -Statement [272] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::j#2 init::pli#2 init::$8 ] ( main:2::init:5 [ init::j#2 init::pli#2 init::$8 ] ) always clobbers reg byte a -Statement [273] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 [ init::j#2 init::pli#2 ] ( main:2::init:5 [ init::j#2 init::pli#2 ] ) always clobbers reg byte a -Statement [274] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 [ init::j#2 init::pli#1 ] ( main:2::init:5 [ init::j#2 init::pli#1 ] ) always clobbers reg byte a -Statement [279] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 [ init::line#4 init::l#4 init::c#2 init::$13 ] ( main:2::init:5 [ init::line#4 init::l#4 init::c#2 init::$13 ] ) always clobbers reg byte a -Statement [280] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 [ init::line#4 init::l#4 init::c#2 ] ( main:2::init:5 [ init::line#4 init::l#4 init::c#2 ] ) always clobbers reg byte a reg byte y -Statement [283] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init::l#4 init::line#1 ] ( main:2::init:5 [ init::l#4 init::line#1 ] ) always clobbers reg byte a -Statement [288] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:2::init:5::fill:262 [ fill::addr#0 fill::val#3 fill::end#0 ] main:2::init:5::fill:264 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a -Statement [290] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:2::init:5::fill:262 [ fill::val#3 fill::end#0 fill::addr#2 ] main:2::init:5::fill:264 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y -Statement [292] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:2::init:5::fill:262 [ fill::val#3 fill::end#0 fill::addr#1 ] main:2::init:5::fill:264 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ keyboard_event_pressed::keycode#5 ] +Statement [215] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::play_move_down:26::keyboard_event_pressed:152 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:235 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:241 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:247 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:253 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:111 [ keyboard_event_pressed::row_bits#0 ] +Statement [216] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:2::play_move_down:26::keyboard_event_pressed:152 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:235 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:241 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:247 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:253 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [230] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:2::keyboard_event_scan:20 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Statement [260] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:2::keyboard_event_scan:20 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:116 [ keyboard_event_scan::row_scan#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ 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 ] +Statement [261] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:2::keyboard_event_scan:20 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a +Statement [264] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:2::keyboard_event_scan:20 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a +Statement [266] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:2::keyboard_event_scan:20 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a +Statement [272] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:2::keyboard_event_scan:20 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [273] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:2::keyboard_event_scan:20 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ) always clobbers reg byte a +Statement [276] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_event_scan:20::keyboard_matrix_read:226 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a +Statement [277] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_event_scan:20::keyboard_matrix_read:226 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [284] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::i#2 init::li#2 init::$5 ] ( main:2::init:7 [ init::i#2 init::li#2 init::$5 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:54 [ init::i#2 init::i#1 ] +Statement [285] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 [ init::i#2 init::li#2 ] ( main:2::init:7 [ init::i#2 init::li#2 ] ) always clobbers reg byte a +Statement [286] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init::i#2 init::li#1 ] ( main:2::init:7 [ init::i#2 init::li#1 ] ) always clobbers reg byte a +Statement [290] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::j#2 init::pli#2 init::$8 ] ( main:2::init:7 [ init::j#2 init::pli#2 init::$8 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:57 [ init::j#2 init::j#1 ] +Statement [291] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 [ init::j#2 init::pli#2 ] ( main:2::init:7 [ init::j#2 init::pli#2 ] ) always clobbers reg byte a +Statement [292] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 [ init::j#2 init::pli#1 ] ( main:2::init:7 [ init::j#2 init::pli#1 ] ) always clobbers reg byte a +Statement [297] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 [ init::line#4 init::l#4 init::c#2 init::$13 ] ( main:2::init:7 [ init::line#4 init::l#4 init::c#2 init::$13 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:62 [ init::l#4 init::l#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:63 [ init::c#2 init::c#1 ] +Statement [298] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 [ init::line#4 init::l#4 init::c#2 ] ( main:2::init:7 [ init::line#4 init::l#4 init::c#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:62 [ init::l#4 init::l#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:63 [ init::c#2 init::c#1 ] +Statement [301] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init::l#4 init::line#1 ] ( main:2::init:7 [ init::l#4 init::line#1 ] ) always clobbers reg byte a +Statement [306] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:2::init:7::fill:280 [ fill::addr#0 fill::val#3 fill::end#0 ] main:2::init:7::fill:282 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:64 [ fill::val#3 ] +Statement [308] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:2::init:7::fill:280 [ fill::val#3 fill::end#0 fill::addr#2 ] main:2::init:7::fill:282 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:64 [ fill::val#3 ] +Statement [310] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:2::init:7::fill:280 [ fill::val#3 fill::end#0 fill::addr#1 ] main:2::init:7::fill:282 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a +Statement [312] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:2::sid_rnd_init:5 [ ] ) always clobbers reg byte a +Statement [313] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:2::sid_rnd_init:5 [ ] ) always clobbers reg byte a +Statement [12] (byte*~) current_piece_gfx#84 ← (byte*) current_piece_gfx#10 [ current_piece_gfx#84 current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ( main:2 [ current_piece_gfx#84 current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ) always clobbers reg byte a +Statement [15] (byte*~) current_piece#68 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) [ current_piece_gfx#10 current_piece_color#15 current_piece#68 ] ( main:2 [ current_piece_gfx#10 current_piece_color#15 current_piece#68 ] ) always clobbers reg byte a +Statement [17] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a +Statement [18] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a +Statement [29] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$9 [ current_piece#13 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_orientation#18 current_piece_gfx#17 current_xpos#19 ] ( main:2 [ current_piece#13 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_orientation#18 current_piece_gfx#17 current_xpos#19 ] ) always clobbers reg byte a +Statement [34] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$10 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#2 current_orientation#18 current_piece_gfx#17 ] ( main:2 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#2 current_orientation#18 current_piece_gfx#17 ] ) always clobbers reg byte a +Statement [39] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$11 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#3 ] ( main:2 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#3 ] ) always clobbers reg byte a +Statement [45] (byte*~) current_piece_gfx#85 ← (byte*) current_piece_gfx#18 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_ypos#68 current_xpos#93 current_piece_gfx#85 ] ( main:2 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_ypos#68 current_xpos#93 current_piece_gfx#85 ] ) always clobbers reg byte a +Statement [51] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#0 ] ( main:2::render_current:14 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#0 ] main:2::render_current:47 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#0 ] ) always clobbers reg byte a +Statement [54] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) [ current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ( main:2::render_current:14 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] main:2::render_current:47 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ) always clobbers reg byte a +Statement [57] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#62 + (byte) render_current::i#2) [ current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ( main:2::render_current:14 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] main:2::render_current:47 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ) always clobbers reg byte a +Statement [61] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#64 [ current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ( main:2::render_current:14 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] main:2::render_current:47 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#62 current_piece_color#64 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ) always clobbers reg byte a +Statement [72] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ( main:2::render_playfield:11 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] main:2::render_playfield:42 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ) always clobbers reg byte a +Statement [73] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ( main:2::render_playfield:11 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] main:2::render_playfield:42 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ) always clobbers reg byte a +Statement [75] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ( main:2::render_playfield:11 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] main:2::render_playfield:42 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y +Statement [87] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::$2 ] ( main:2::play_move_rotate:36 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::$2 ] ) always clobbers reg byte a +Statement [88] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#2 ] ( main:2::play_move_rotate:36 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#2 ] ) always clobbers reg byte a +Statement [93] (byte*~) current_piece#72 ← (byte*) current_piece#13 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#3 collision::ypos#3 collision::orientation#3 current_piece#72 ] ( main:2::play_move_rotate:36 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#3 collision::ypos#3 collision::orientation#3 current_piece#72 ] ) always clobbers reg byte a +Statement [99] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#8 current_piece_gfx#8 ] ( main:2::play_move_rotate:36 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#8 current_piece_gfx#8 ] ) always clobbers reg byte a +Statement [100] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::$4 ] ( main:2::play_move_rotate:36 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::$4 ] ) always clobbers reg byte a +Statement [101] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#1 ] ( main:2::play_move_rotate:36 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#1 ] ) always clobbers reg byte a +Statement [103] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 [ collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] ( main:2::play_move_rotate:36::collision:94 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_leftright:31::collision:132 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_leftright:31::collision:143 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_down:26::collision:167 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] ) always clobbers reg byte a +Statement [104] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] ( main:2::play_move_rotate:36::collision:94 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_leftright:31::collision:132 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_leftright:31::collision:143 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_down:26::collision:167 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] ) always clobbers reg byte a +Statement [106] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] ( main:2::play_move_rotate:36::collision:94 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_leftright:31::collision:132 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_leftright:31::collision:143 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_down:26::collision:167 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] ) always clobbers reg byte a +Statement [110] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:2::play_move_rotate:36::collision:94 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:31::collision:132 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:31::collision:143 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_down:26::collision:167 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ) always clobbers reg byte a +Statement [114] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] ( main:2::play_move_rotate:36::collision:94 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_leftright:31::collision:132 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_leftright:31::collision:143 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_down:26::collision:167 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] ) always clobbers reg byte a +Statement [117] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:2::play_move_rotate:36::collision:94 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:31::collision:132 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:31::collision:143 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_down:26::collision:167 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ) always clobbers reg byte a +Statement [131] (byte*~) current_piece#71 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_orientation#18 current_piece#71 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ( main:2::play_move_leftright:31 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_piece#71 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ) always clobbers reg byte a +Statement [142] (byte*~) current_piece#70 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_orientation#18 current_piece#70 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ( main:2::play_move_leftright:31 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_piece#70 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ) always clobbers reg byte a +Statement [166] (byte*~) current_piece#69 ← (byte*) current_piece#11 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_piece#69 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ( main:2::play_move_down:26 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_piece#69 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ) always clobbers reg byte a +Statement [175] (byte*~) current_piece#73 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) [ current_piece_gfx#10 current_piece_color#15 current_piece#73 ] ( main:2::play_move_down:26 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_piece_color#15 current_piece#73 ] ) always clobbers reg byte a +Statement [184] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ spawn_current::$3 spawn_current::piece_idx#2 ] ( main:2::spawn_current:9 [ spawn_current::$3 spawn_current::piece_idx#2 ] main:2::play_move_down:26::spawn_current:174 [ keyboard_events_size#16 main::key_event#0 spawn_current::$3 spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [185] (byte*) current_piece_gfx#10 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#10 spawn_current::$3 spawn_current::piece_idx#2 ] ( main:2::spawn_current:9 [ current_piece_gfx#10 spawn_current::$3 spawn_current::piece_idx#2 ] main:2::play_move_down:26::spawn_current:174 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 spawn_current::$3 spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [186] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ( main:2::spawn_current:9 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] main:2::play_move_down:26::spawn_current:174 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ) always clobbers reg byte a +Statement [192] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ spawn_current::piece_idx#1 ] ( main:2::spawn_current:9 [ spawn_current::piece_idx#1 ] main:2::play_move_down:26::spawn_current:174 [ keyboard_events_size#16 main::key_event#0 spawn_current::piece_idx#1 ] ) always clobbers reg byte a +Statement [195] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#0 ] ( main:2::play_move_down:26::lock_current:172 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#0 ] ) always clobbers reg byte a +Statement [197] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::i#3 lock_current::l#6 lock_current::playfield_line#0 ] ( main:2::play_move_down:26::lock_current:172 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::i#3 lock_current::l#6 lock_current::playfield_line#0 ] ) always clobbers reg byte a +Statement [201] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ( main:2::play_move_down:26::lock_current:172 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ) always clobbers reg byte a +Statement [202] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ( main:2::play_move_down:26::lock_current:172 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ) always clobbers reg byte a +Statement [213] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:2::play_move_down:26::keyboard_event_pressed:152 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:235 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:241 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:247 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:253 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Statement [215] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::play_move_down:26::keyboard_event_pressed:152 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:235 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:241 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:247 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:253 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Statement [216] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:2::play_move_down:26::keyboard_event_pressed:152 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:235 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:241 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:247 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:20::keyboard_event_pressed:253 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [229] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ( main:2::keyboard_event_scan:20 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a +Statement [230] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:2::keyboard_event_scan:20 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Statement [260] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:2::keyboard_event_scan:20 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a +Statement [261] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:2::keyboard_event_scan:20 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a +Statement [264] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:2::keyboard_event_scan:20 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a +Statement [266] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:2::keyboard_event_scan:20 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a +Statement [272] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:2::keyboard_event_scan:20 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [273] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:2::keyboard_event_scan:20 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ) always clobbers reg byte a +Statement [276] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_event_scan:20::keyboard_matrix_read:226 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a +Statement [277] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_event_scan:20::keyboard_matrix_read:226 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [284] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::i#2 init::li#2 init::$5 ] ( main:2::init:7 [ init::i#2 init::li#2 init::$5 ] ) always clobbers reg byte a +Statement [285] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 [ init::i#2 init::li#2 ] ( main:2::init:7 [ init::i#2 init::li#2 ] ) always clobbers reg byte a +Statement [286] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init::i#2 init::li#1 ] ( main:2::init:7 [ init::i#2 init::li#1 ] ) always clobbers reg byte a +Statement [290] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::j#2 init::pli#2 init::$8 ] ( main:2::init:7 [ init::j#2 init::pli#2 init::$8 ] ) always clobbers reg byte a +Statement [291] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 [ init::j#2 init::pli#2 ] ( main:2::init:7 [ init::j#2 init::pli#2 ] ) always clobbers reg byte a +Statement [292] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 [ init::j#2 init::pli#1 ] ( main:2::init:7 [ init::j#2 init::pli#1 ] ) always clobbers reg byte a +Statement [297] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 [ init::line#4 init::l#4 init::c#2 init::$13 ] ( main:2::init:7 [ init::line#4 init::l#4 init::c#2 init::$13 ] ) always clobbers reg byte a +Statement [298] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 [ init::line#4 init::l#4 init::c#2 ] ( main:2::init:7 [ init::line#4 init::l#4 init::c#2 ] ) always clobbers reg byte a reg byte y +Statement [301] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init::l#4 init::line#1 ] ( main:2::init:7 [ init::l#4 init::line#1 ] ) always clobbers reg byte a +Statement [306] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:2::init:7::fill:280 [ fill::addr#0 fill::val#3 fill::end#0 ] main:2::init:7::fill:282 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a +Statement [308] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:2::init:7::fill:280 [ fill::val#3 fill::end#0 fill::addr#2 ] main:2::init:7::fill:282 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [310] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:2::init:7::fill:280 [ fill::val#3 fill::end#0 fill::addr#1 ] main:2::init:7::fill:282 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a +Statement [312] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:2::sid_rnd_init:5 [ ] ) always clobbers reg byte a +Statement [313] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:2::sid_rnd_init:5 [ ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] : zp ZP_BYTE:3 , reg byte x , -Potential registers zp ZP_BYTE:4 [ current_ypos#22 current_ypos#72 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:6 [ current_piece_gfx#61 current_piece_gfx#82 ] : zp ZP_WORD:6 , -Potential registers zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:4 [ current_ypos#22 current_ypos#68 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:5 [ current_xpos#62 current_xpos#93 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:6 [ current_piece_gfx#62 current_piece_gfx#84 current_piece_gfx#85 ] : zp ZP_WORD:6 , +Potential registers zp ZP_BYTE:8 [ current_piece_color#64 current_piece_color#72 current_piece_color#73 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] : zp ZP_BYTE:9 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , @@ -7646,7 +8088,7 @@ Potential registers zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::l Potential registers zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] : zp ZP_BYTE:18 , reg byte x , Potential registers zp ZP_BYTE:19 [ play_move_rotate::return#2 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] : zp ZP_BYTE:20 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:21 [ current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 ] : zp ZP_WORD:21 , +Potential registers zp ZP_WORD:21 [ current_piece#15 current_piece#69 current_piece#70 current_piece#71 current_piece#72 ] : zp ZP_WORD:21 , Potential registers zp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] : zp ZP_BYTE:23 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] : zp ZP_BYTE:24 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] : zp ZP_BYTE:25 , reg byte x , reg byte y , @@ -7658,298 +8100,311 @@ Potential registers zp ZP_BYTE:30 [ collision::c#2 collision::c#1 ] : zp ZP_BYTE Potential registers zp ZP_BYTE:31 [ collision::return#14 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:32 [ play_move_leftright::return#2 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:33 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] : zp ZP_BYTE:33 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:34 [ current_piece#23 current_piece#11 current_piece#13 ] : zp ZP_WORD:34 , -Potential registers zp ZP_BYTE:36 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] : zp ZP_BYTE:36 , reg byte x , -Potential registers zp ZP_WORD:37 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#8 current_piece_gfx#17 ] : zp ZP_WORD:37 , -Potential registers zp ZP_BYTE:39 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] : zp ZP_BYTE:39 , reg byte x , -Potential registers zp ZP_BYTE:40 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] : zp ZP_BYTE:40 , reg byte x , +Potential registers zp ZP_WORD:34 [ current_piece#23 current_piece#73 current_piece#11 current_piece#13 current_piece#68 ] : zp ZP_WORD:34 , +Potential registers zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] : zp ZP_BYTE:36 , reg byte x , +Potential registers zp ZP_WORD:37 [ 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_WORD:37 , +Potential registers zp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] : zp ZP_BYTE:39 , reg byte x , +Potential registers zp ZP_BYTE:40 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] : zp ZP_BYTE:40 , reg byte x , Potential registers zp ZP_BYTE:41 [ play_move_down::return#3 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:42 [ lock_current::l#2 lock_current::l#1 ] : zp ZP_BYTE:42 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:43 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] : zp ZP_BYTE:43 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:44 [ lock_current::c#2 lock_current::c#1 ] : zp ZP_BYTE:44 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:45 [ keyboard_event_pressed::keycode#5 ] : zp ZP_BYTE:45 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:46 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] : zp ZP_BYTE:46 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:47 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:48 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:49 [ 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 ] : zp ZP_BYTE:49 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:50 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] : zp ZP_BYTE:50 , reg byte x , -Potential registers zp ZP_BYTE:51 [ init::i#2 init::i#1 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:52 [ init::li#2 init::li#1 ] : zp ZP_WORD:52 , -Potential registers zp ZP_BYTE:54 [ init::j#2 init::j#1 ] : zp ZP_BYTE:54 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:55 [ init::pli#2 init::pli#1 ] : zp ZP_WORD:55 , -Potential registers zp ZP_WORD:57 [ init::line#4 init::line#1 ] : zp ZP_WORD:57 , -Potential registers zp ZP_BYTE:59 [ init::l#4 init::l#1 ] : zp ZP_BYTE:59 , reg byte x , -Potential registers zp ZP_BYTE:60 [ init::c#2 init::c#1 ] : zp ZP_BYTE:60 , reg byte x , -Potential registers zp ZP_BYTE:61 [ fill::val#3 ] : zp ZP_BYTE:61 , reg byte x , -Potential registers zp ZP_WORD:62 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : zp ZP_WORD:62 , -Potential registers zp ZP_BYTE:64 [ keyboard_event_get::return#3 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:65 [ main::key_event#0 ] : zp ZP_BYTE:65 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:66 [ play_move_down::key_event#0 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:67 [ play_move_down::return#0 ] : zp ZP_BYTE:67 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:68 [ main::$8 ] : zp ZP_BYTE:68 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:69 [ main::render#1 ] : zp ZP_BYTE:69 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:70 [ play_move_leftright::key_event#0 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:71 [ play_move_leftright::return#0 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:72 [ main::$9 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:73 [ main::render#2 ] : zp ZP_BYTE:73 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:74 [ play_move_rotate::key_event#0 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:75 [ play_move_rotate::return#0 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:76 [ main::$10 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:77 [ main::render#3 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:78 [ render_current::screen_line#0 ] : zp ZP_WORD:78 , -Potential registers zp ZP_BYTE:80 [ render_current::current_cell#0 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:81 [ render_playfield::$1 ] : zp ZP_BYTE:81 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:82 [ play_move_rotate::$2 ] : zp ZP_BYTE:82 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:83 [ collision::return#13 ] : zp ZP_BYTE:83 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:84 [ play_move_rotate::$6 ] : zp ZP_BYTE:84 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:85 [ play_move_rotate::$8 ] : zp ZP_BYTE:85 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:86 [ play_move_rotate::$4 ] : zp ZP_BYTE:86 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:87 [ collision::piece_gfx#0 ] : zp ZP_WORD:87 , -Potential registers zp ZP_WORD:89 [ collision::playfield_line#0 ] : zp ZP_WORD:89 , -Potential registers zp ZP_BYTE:91 [ collision::i#1 ] : zp ZP_BYTE:91 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:92 [ collision::$7 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:93 [ collision::return#12 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:94 [ play_move_leftright::$4 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:95 [ collision::return#1 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:96 [ play_move_leftright::$8 ] : zp ZP_BYTE:96 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:97 [ keyboard_event_pressed::return#12 ] : zp ZP_BYTE:97 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:98 [ play_move_down::$2 ] : zp ZP_BYTE:98 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:99 [ collision::return#0 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:100 [ play_move_down::$12 ] : zp ZP_BYTE:100 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:101 [ lock_current::line#0 ] : zp ZP_BYTE:101 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:102 [ lock_current::$1 ] : zp ZP_BYTE:102 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:103 [ lock_current::playfield_line#0 ] : zp ZP_WORD:103 , -Potential registers zp ZP_BYTE:105 [ lock_current::cell#0 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:106 [ lock_current::col#0 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:107 [ keyboard_event_pressed::$0 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:108 [ keyboard_event_pressed::row_bits#0 ] : zp ZP_BYTE:108 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:109 [ keyboard_event_pressed::$1 ] : zp ZP_BYTE:109 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:110 [ keyboard_event_pressed::return#11 ] : zp ZP_BYTE:110 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:111 [ keyboard_matrix_read::rowid#0 ] : zp ZP_BYTE:111 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:112 [ keyboard_matrix_read::return#2 ] : zp ZP_BYTE:112 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:113 [ keyboard_event_scan::row_scan#0 ] : zp ZP_BYTE:113 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:114 [ keyboard_event_pressed::return#0 ] : zp ZP_BYTE:114 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:115 [ keyboard_event_scan::$14 ] : zp ZP_BYTE:115 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:116 [ keyboard_event_pressed::return#1 ] : zp ZP_BYTE:116 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:117 [ keyboard_event_scan::$18 ] : zp ZP_BYTE:117 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:118 [ keyboard_event_pressed::return#2 ] : zp ZP_BYTE:118 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:119 [ keyboard_event_scan::$22 ] : zp ZP_BYTE:119 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:120 [ keyboard_event_pressed::return#10 ] : zp ZP_BYTE:120 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:121 [ keyboard_event_scan::$26 ] : zp ZP_BYTE:121 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:122 [ keyboard_event_scan::$3 ] : zp ZP_BYTE:122 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:123 [ keyboard_event_scan::$4 ] : zp ZP_BYTE:123 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:124 [ keyboard_event_scan::event_type#0 ] : zp ZP_BYTE:124 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:125 [ keyboard_event_scan::$11 ] : zp ZP_BYTE:125 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:126 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:126 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:127 [ init::$5 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:128 [ init::$8 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:129 [ init::$13 ] : zp ZP_WORD:129 , -Potential registers zp ZP_WORD:131 [ fill::end#0 ] : zp ZP_WORD:131 , +Potential registers zp ZP_BYTE:42 [ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] : zp ZP_BYTE:42 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:43 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] : zp ZP_BYTE:43 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:44 [ lock_current::l#6 lock_current::l#1 ] : zp ZP_BYTE:44 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:45 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] : zp ZP_BYTE:45 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:46 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] : zp ZP_BYTE:46 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:47 [ lock_current::c#2 lock_current::c#1 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:48 [ keyboard_event_pressed::keycode#5 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:49 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] : zp ZP_BYTE:49 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:50 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] : zp ZP_BYTE:50 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:51 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:52 [ 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 ] : zp ZP_BYTE:52 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:53 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] : zp ZP_BYTE:53 , reg byte x , +Potential registers zp ZP_BYTE:54 [ init::i#2 init::i#1 ] : zp ZP_BYTE:54 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:55 [ init::li#2 init::li#1 ] : zp ZP_WORD:55 , +Potential registers zp ZP_BYTE:57 [ init::j#2 init::j#1 ] : zp ZP_BYTE:57 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:58 [ init::pli#2 init::pli#1 ] : zp ZP_WORD:58 , +Potential registers zp ZP_WORD:60 [ init::line#4 init::line#1 ] : zp ZP_WORD:60 , +Potential registers zp ZP_BYTE:62 [ init::l#4 init::l#1 ] : zp ZP_BYTE:62 , reg byte x , +Potential registers zp ZP_BYTE:63 [ init::c#2 init::c#1 ] : zp ZP_BYTE:63 , reg byte x , +Potential registers zp ZP_BYTE:64 [ fill::val#3 ] : zp ZP_BYTE:64 , reg byte x , +Potential registers zp ZP_WORD:65 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : zp ZP_WORD:65 , +Potential registers zp ZP_BYTE:67 [ keyboard_event_get::return#3 ] : zp ZP_BYTE:67 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:68 [ main::key_event#0 ] : zp ZP_BYTE:68 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:69 [ play_move_down::key_event#0 ] : zp ZP_BYTE:69 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:70 [ play_move_down::return#0 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:71 [ main::$9 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:72 [ main::render#1 ] : zp ZP_BYTE:72 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:73 [ play_move_leftright::key_event#0 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:74 [ play_move_leftright::return#0 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:75 [ main::$10 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:76 [ main::render#2 ] : zp ZP_BYTE:76 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:77 [ play_move_rotate::key_event#0 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:78 [ play_move_rotate::return#0 ] : zp ZP_BYTE:78 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:79 [ main::$11 ] : zp ZP_BYTE:79 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:80 [ main::render#3 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:81 [ render_current::screen_line#0 ] : zp ZP_WORD:81 , +Potential registers zp ZP_BYTE:83 [ render_current::current_cell#0 ] : zp ZP_BYTE:83 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:84 [ render_playfield::$1 ] : zp ZP_BYTE:84 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:85 [ play_move_rotate::$2 ] : zp ZP_BYTE:85 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:86 [ collision::return#13 ] : zp ZP_BYTE:86 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:87 [ play_move_rotate::$6 ] : zp ZP_BYTE:87 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:88 [ play_move_rotate::$4 ] : zp ZP_BYTE:88 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:89 [ collision::piece_gfx#0 ] : zp ZP_WORD:89 , +Potential registers zp ZP_WORD:91 [ collision::playfield_line#0 ] : zp ZP_WORD:91 , +Potential registers zp ZP_BYTE:93 [ collision::i#1 ] : zp ZP_BYTE:93 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:94 [ collision::$7 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:95 [ collision::return#12 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:96 [ play_move_leftright::$4 ] : zp ZP_BYTE:96 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:97 [ collision::return#1 ] : zp ZP_BYTE:97 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:98 [ play_move_leftright::$8 ] : zp ZP_BYTE:98 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:99 [ keyboard_event_pressed::return#12 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:100 [ play_move_down::$2 ] : zp ZP_BYTE:100 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:101 [ collision::return#0 ] : zp ZP_BYTE:101 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:102 [ play_move_down::$12 ] : zp ZP_BYTE:102 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:103 [ spawn_current::$3 ] : zp ZP_BYTE:103 , reg byte x , +Potential registers zp ZP_BYTE:104 [ sid_rnd::return#2 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:105 [ spawn_current::$1 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:106 [ sid_rnd::return#0 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:107 [ lock_current::playfield_line#0 ] : zp ZP_WORD:107 , +Potential registers zp ZP_BYTE:109 [ lock_current::i#1 ] : zp ZP_BYTE:109 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:110 [ keyboard_event_pressed::$0 ] : zp ZP_BYTE:110 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:111 [ keyboard_event_pressed::row_bits#0 ] : zp ZP_BYTE:111 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:112 [ keyboard_event_pressed::$1 ] : zp ZP_BYTE:112 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:113 [ keyboard_event_pressed::return#11 ] : zp ZP_BYTE:113 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:114 [ keyboard_matrix_read::rowid#0 ] : zp ZP_BYTE:114 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:115 [ keyboard_matrix_read::return#2 ] : zp ZP_BYTE:115 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:116 [ keyboard_event_scan::row_scan#0 ] : zp ZP_BYTE:116 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:117 [ keyboard_event_pressed::return#0 ] : zp ZP_BYTE:117 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:118 [ keyboard_event_scan::$14 ] : zp ZP_BYTE:118 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:119 [ keyboard_event_pressed::return#1 ] : zp ZP_BYTE:119 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:120 [ keyboard_event_scan::$18 ] : zp ZP_BYTE:120 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:121 [ keyboard_event_pressed::return#2 ] : zp ZP_BYTE:121 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:122 [ keyboard_event_scan::$22 ] : zp ZP_BYTE:122 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:123 [ keyboard_event_pressed::return#10 ] : zp ZP_BYTE:123 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:124 [ keyboard_event_scan::$26 ] : zp ZP_BYTE:124 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:125 [ keyboard_event_scan::$3 ] : zp ZP_BYTE:125 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:126 [ keyboard_event_scan::$4 ] : zp ZP_BYTE:126 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:127 [ keyboard_event_scan::event_type#0 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:128 [ keyboard_event_scan::$11 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:129 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:129 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:130 [ init::$5 ] : zp ZP_BYTE:130 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:131 [ init::$8 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:132 [ init::$13 ] : zp ZP_WORD:132 , +Potential registers zp ZP_WORD:134 [ fill::end#0 ] : zp ZP_WORD:134 , REGISTER UPLIFT SCOPES -Uplift Scope [keyboard_event_scan] 2,002: zp ZP_BYTE:122 [ keyboard_event_scan::$3 ] 2,002: zp ZP_BYTE:123 [ keyboard_event_scan::$4 ] 2,002: zp ZP_BYTE:124 [ keyboard_event_scan::event_type#0 ] 2,002: zp ZP_BYTE:125 [ keyboard_event_scan::$11 ] 1,787.5: zp ZP_BYTE:48 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 1,195.02: zp ZP_BYTE:49 [ 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 ] 211.74: zp ZP_BYTE:47 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 128.06: zp ZP_BYTE:113 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:115 [ keyboard_event_scan::$14 ] 4: zp ZP_BYTE:117 [ keyboard_event_scan::$18 ] 4: zp ZP_BYTE:119 [ keyboard_event_scan::$22 ] 4: zp ZP_BYTE:121 [ keyboard_event_scan::$26 ] -Uplift Scope [collision] 3,823.33: zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] 2,002: zp ZP_BYTE:92 [ collision::$7 ] 1,340.75: zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] 1,223.44: zp ZP_BYTE:30 [ collision::c#2 collision::c#1 ] 161.77: zp ZP_BYTE:91 [ collision::i#1 ] 141.57: zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] 113.62: zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] 78.71: zp ZP_WORD:89 [ collision::playfield_line#0 ] 47.76: zp ZP_WORD:87 [ collision::piece_gfx#0 ] 18: zp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] 10: zp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] 9.29: zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] 4: zp ZP_BYTE:83 [ collision::return#13 ] 4: zp ZP_BYTE:93 [ collision::return#12 ] 4: zp ZP_BYTE:95 [ collision::return#1 ] 4: zp ZP_BYTE:99 [ collision::return#0 ] 1.33: zp ZP_BYTE:31 [ collision::return#14 ] -Uplift Scope [lock_current] 2,002: zp ZP_BYTE:44 [ lock_current::c#2 lock_current::c#1 ] 2,002: zp ZP_BYTE:106 [ lock_current::col#0 ] 1,865.38: zp ZP_BYTE:43 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] 1,001: zp ZP_BYTE:105 [ lock_current::cell#0 ] 202: zp ZP_BYTE:101 [ lock_current::line#0 ] 202: zp ZP_BYTE:102 [ lock_current::$1 ] 176.75: zp ZP_BYTE:42 [ lock_current::l#2 lock_current::l#1 ] 122.44: zp ZP_WORD:103 [ lock_current::playfield_line#0 ] -Uplift Scope [render_current] 2,357.5: zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] 1,787.5: zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 ] 1,553.5: zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] 1,001: zp ZP_BYTE:80 [ render_current::current_cell#0 ] 164.97: zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] 100.33: zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] 100.18: zp ZP_WORD:78 [ render_current::screen_line#0 ] -Uplift Scope [] 5,895.74: zp ZP_BYTE:50 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] 75.26: zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 ] 64.26: zp ZP_WORD:6 [ current_piece_gfx#61 current_piece_gfx#82 ] 33.91: zp ZP_BYTE:40 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] 30.36: zp ZP_WORD:37 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#8 current_piece_gfx#17 ] 26: zp ZP_WORD:21 [ current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 ] 25.32: zp ZP_BYTE:39 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] 18.5: zp ZP_BYTE:4 [ current_ypos#22 current_ypos#72 ] 13.23: zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 ] 10.88: zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] 8.88: zp ZP_BYTE:36 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] 4.84: zp ZP_WORD:34 [ current_piece#23 current_piece#11 current_piece#13 ] 2.33: zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] -Uplift Scope [render_playfield] 2,254.5: zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] 2,002: zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] 1,522.6: zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] 202: zp ZP_BYTE:81 [ render_playfield::$1 ] 185.17: zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] -Uplift Scope [init] 252.5: zp ZP_BYTE:60 [ init::c#2 init::c#1 ] 202: zp ZP_WORD:129 [ init::$13 ] 27.83: zp ZP_WORD:57 [ init::line#4 init::line#1 ] 24.75: zp ZP_BYTE:51 [ init::i#2 init::i#1 ] 24.75: zp ZP_BYTE:54 [ init::j#2 init::j#1 ] 22: zp ZP_BYTE:127 [ init::$5 ] 22: zp ZP_BYTE:128 [ init::$8 ] 19.64: zp ZP_BYTE:59 [ init::l#4 init::l#1 ] 18.33: zp ZP_WORD:52 [ init::li#2 init::li#1 ] 18.33: zp ZP_WORD:55 [ init::pli#2 init::pli#1 ] -Uplift Scope [keyboard_matrix_read] 202: zp ZP_BYTE:112 [ keyboard_matrix_read::return#2 ] 103: zp ZP_BYTE:111 [ keyboard_matrix_read::rowid#0 ] 34.33: zp ZP_BYTE:126 [ keyboard_matrix_read::return#0 ] -Uplift Scope [main] 22: zp ZP_BYTE:68 [ main::$8 ] 22: zp ZP_BYTE:72 [ main::$9 ] 22: zp ZP_BYTE:76 [ main::$10 ] 22: zp ZP_BYTE:77 [ main::render#3 ] 4.4: zp ZP_BYTE:69 [ main::render#1 ] 4.4: zp ZP_BYTE:73 [ main::render#2 ] 4: zp ZP_BYTE:65 [ main::key_event#0 ] -Uplift Scope [play_move_down] 22: zp ZP_BYTE:67 [ play_move_down::return#0 ] 20: zp ZP_BYTE:33 [ 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 ] 6.5: zp ZP_BYTE:66 [ play_move_down::key_event#0 ] 4: zp ZP_BYTE:98 [ play_move_down::$2 ] 4: zp ZP_BYTE:100 [ play_move_down::$12 ] 3.67: zp ZP_BYTE:41 [ play_move_down::return#3 ] -Uplift Scope [play_move_rotate] 22: zp ZP_BYTE:75 [ play_move_rotate::return#0 ] 8.8: zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] 7.5: zp ZP_BYTE:74 [ play_move_rotate::key_event#0 ] 4: zp ZP_BYTE:82 [ play_move_rotate::$2 ] 4: zp ZP_BYTE:84 [ play_move_rotate::$6 ] 4: zp ZP_BYTE:85 [ play_move_rotate::$8 ] 4: zp ZP_BYTE:86 [ play_move_rotate::$4 ] 3.67: zp ZP_BYTE:19 [ play_move_rotate::return#2 ] -Uplift Scope [play_move_leftright] 22: zp ZP_BYTE:71 [ play_move_leftright::return#0 ] 7.5: zp ZP_BYTE:70 [ play_move_leftright::key_event#0 ] 4: zp ZP_BYTE:94 [ play_move_leftright::$4 ] 4: zp ZP_BYTE:96 [ play_move_leftright::$8 ] 3.67: zp ZP_BYTE:32 [ play_move_leftright::return#2 ] -Uplift Scope [fill] 36: zp ZP_WORD:62 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp ZP_WORD:131 [ fill::end#0 ] 1.83: zp ZP_BYTE:61 [ fill::val#3 ] -Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:97 [ keyboard_event_pressed::return#12 ] 4: zp ZP_BYTE:107 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:109 [ keyboard_event_pressed::$1 ] 4: zp ZP_BYTE:114 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:116 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:118 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:120 [ keyboard_event_pressed::return#10 ] 2: zp ZP_BYTE:108 [ keyboard_event_pressed::row_bits#0 ] 1.71: zp ZP_BYTE:110 [ keyboard_event_pressed::return#11 ] 1.33: zp ZP_BYTE:45 [ keyboard_event_pressed::keycode#5 ] -Uplift Scope [keyboard_event_get] 22: zp ZP_BYTE:64 [ keyboard_event_get::return#3 ] 8.33: zp ZP_BYTE:46 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Uplift Scope [spawn_current] +Uplift Scope [keyboard_event_scan] 2,002: zp ZP_BYTE:125 [ keyboard_event_scan::$3 ] 2,002: zp ZP_BYTE:126 [ keyboard_event_scan::$4 ] 2,002: zp ZP_BYTE:127 [ keyboard_event_scan::event_type#0 ] 2,002: zp ZP_BYTE:128 [ keyboard_event_scan::$11 ] 1,787.5: zp ZP_BYTE:51 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 1,195.02: zp ZP_BYTE:52 [ 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 ] 211.74: zp ZP_BYTE:50 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 128.06: zp ZP_BYTE:116 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:118 [ keyboard_event_scan::$14 ] 4: zp ZP_BYTE:120 [ keyboard_event_scan::$18 ] 4: zp ZP_BYTE:122 [ keyboard_event_scan::$22 ] 4: zp ZP_BYTE:124 [ keyboard_event_scan::$26 ] +Uplift Scope [collision] 3,823.33: zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] 2,002: zp ZP_BYTE:94 [ collision::$7 ] 1,340.75: zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] 1,223.44: zp ZP_BYTE:30 [ collision::c#2 collision::c#1 ] 161.77: zp ZP_BYTE:93 [ collision::i#1 ] 141.57: zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] 113.62: zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] 78.71: zp ZP_WORD:91 [ collision::playfield_line#0 ] 47.76: zp ZP_WORD:89 [ collision::piece_gfx#0 ] 18: zp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] 10: zp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] 9.29: zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] 4: zp ZP_BYTE:86 [ collision::return#13 ] 4: zp ZP_BYTE:95 [ collision::return#12 ] 4: zp ZP_BYTE:97 [ collision::return#1 ] 4: zp ZP_BYTE:101 [ collision::return#0 ] 1.33: zp ZP_BYTE:31 [ collision::return#14 ] +Uplift Scope [lock_current] 3,823.33: zp ZP_BYTE:45 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] 1,478.5: zp ZP_BYTE:46 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] 1,401.4: zp ZP_BYTE:47 [ lock_current::c#2 lock_current::c#1 ] 233.67: zp ZP_BYTE:109 [ lock_current::i#1 ] 117.83: zp ZP_BYTE:44 [ lock_current::l#6 lock_current::l#1 ] 110.2: zp ZP_WORD:107 [ lock_current::playfield_line#0 ] 82.23: zp ZP_BYTE:43 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] +Uplift Scope [render_current] 2,357.5: zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] 1,787.5: zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 ] 1,553.5: zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] 1,001: zp ZP_BYTE:83 [ render_current::current_cell#0 ] 164.97: zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] 100.33: zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] 100.18: zp ZP_WORD:81 [ render_current::screen_line#0 ] +Uplift Scope [] 5,895.74: zp ZP_BYTE:53 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] 79.37: zp ZP_BYTE:8 [ current_piece_color#64 current_piece_color#72 current_piece_color#73 ] 66.37: zp ZP_WORD:6 [ current_piece_gfx#62 current_piece_gfx#84 current_piece_gfx#85 ] 32.67: zp ZP_WORD:37 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#8 current_piece_gfx#17 ] 27.69: zp ZP_BYTE:40 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] 26: zp ZP_WORD:21 [ current_piece#15 current_piece#69 current_piece#70 current_piece#71 current_piece#72 ] 18.5: zp ZP_BYTE:4 [ current_ypos#22 current_ypos#68 ] 15.88: zp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] 14.9: zp ZP_WORD:34 [ current_piece#23 current_piece#73 current_piece#11 current_piece#13 current_piece#68 ] 13.23: zp ZP_BYTE:5 [ current_xpos#62 current_xpos#93 ] 9.04: zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] 8.89: zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] 2.33: zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] +Uplift Scope [render_playfield] 2,254.5: zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] 2,002: zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] 1,522.6: zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] 202: zp ZP_BYTE:84 [ render_playfield::$1 ] 185.17: zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] +Uplift Scope [init] 252.5: zp ZP_BYTE:63 [ init::c#2 init::c#1 ] 202: zp ZP_WORD:132 [ init::$13 ] 27.83: zp ZP_WORD:60 [ init::line#4 init::line#1 ] 24.75: zp ZP_BYTE:54 [ init::i#2 init::i#1 ] 24.75: zp ZP_BYTE:57 [ init::j#2 init::j#1 ] 22: zp ZP_BYTE:130 [ init::$5 ] 22: zp ZP_BYTE:131 [ init::$8 ] 19.64: zp ZP_BYTE:62 [ init::l#4 init::l#1 ] 18.33: zp ZP_WORD:55 [ init::li#2 init::li#1 ] 18.33: zp ZP_WORD:58 [ init::pli#2 init::pli#1 ] +Uplift Scope [spawn_current] 243.2: zp ZP_BYTE:42 [ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] 202: zp ZP_BYTE:105 [ spawn_current::$1 ] 0.18: zp ZP_BYTE:103 [ spawn_current::$3 ] +Uplift Scope [keyboard_matrix_read] 202: zp ZP_BYTE:115 [ keyboard_matrix_read::return#2 ] 103: zp ZP_BYTE:114 [ keyboard_matrix_read::rowid#0 ] 34.33: zp ZP_BYTE:129 [ keyboard_matrix_read::return#0 ] +Uplift Scope [sid_rnd] 202: zp ZP_BYTE:104 [ sid_rnd::return#2 ] 34.33: zp ZP_BYTE:106 [ sid_rnd::return#0 ] +Uplift Scope [main] 22: zp ZP_BYTE:71 [ main::$9 ] 22: zp ZP_BYTE:75 [ main::$10 ] 22: zp ZP_BYTE:79 [ main::$11 ] 22: zp ZP_BYTE:80 [ main::render#3 ] 4.4: zp ZP_BYTE:72 [ main::render#1 ] 4.4: zp ZP_BYTE:76 [ main::render#2 ] 4: zp ZP_BYTE:68 [ main::key_event#0 ] +Uplift Scope [play_move_down] 22: zp ZP_BYTE:70 [ play_move_down::return#0 ] 20: zp ZP_BYTE:33 [ 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 ] 6.5: zp ZP_BYTE:69 [ play_move_down::key_event#0 ] 4: zp ZP_BYTE:100 [ play_move_down::$2 ] 4: zp ZP_BYTE:102 [ play_move_down::$12 ] 3.67: zp ZP_BYTE:41 [ play_move_down::return#3 ] +Uplift Scope [play_move_rotate] 22: zp ZP_BYTE:78 [ play_move_rotate::return#0 ] 8.89: zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] 7.5: zp ZP_BYTE:77 [ play_move_rotate::key_event#0 ] 4: zp ZP_BYTE:85 [ play_move_rotate::$2 ] 4: zp ZP_BYTE:87 [ play_move_rotate::$6 ] 4: zp ZP_BYTE:88 [ play_move_rotate::$4 ] 3.67: zp ZP_BYTE:19 [ play_move_rotate::return#2 ] +Uplift Scope [play_move_leftright] 22: zp ZP_BYTE:74 [ play_move_leftright::return#0 ] 7.5: zp ZP_BYTE:73 [ play_move_leftright::key_event#0 ] 4: zp ZP_BYTE:96 [ play_move_leftright::$4 ] 4: zp ZP_BYTE:98 [ play_move_leftright::$8 ] 3.67: zp ZP_BYTE:32 [ play_move_leftright::return#2 ] +Uplift Scope [fill] 36: zp ZP_WORD:65 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp ZP_WORD:134 [ fill::end#0 ] 1.83: zp ZP_BYTE:64 [ fill::val#3 ] +Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:99 [ keyboard_event_pressed::return#12 ] 4: zp ZP_BYTE:110 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:112 [ keyboard_event_pressed::$1 ] 4: zp ZP_BYTE:117 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:119 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:121 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:123 [ keyboard_event_pressed::return#10 ] 2: zp ZP_BYTE:111 [ keyboard_event_pressed::row_bits#0 ] 1.71: zp ZP_BYTE:113 [ keyboard_event_pressed::return#11 ] 1.33: zp ZP_BYTE:48 [ keyboard_event_pressed::keycode#5 ] +Uplift Scope [keyboard_event_get] 22: zp ZP_BYTE:67 [ keyboard_event_get::return#3 ] 8.33: zp ZP_BYTE:49 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplift Scope [sid_rnd_init] -Uplifting [keyboard_event_scan] best 501994 combination reg byte a [ keyboard_event_scan::$3 ] reg byte a [ keyboard_event_scan::$4 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$11 ] zp ZP_BYTE:48 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:49 [ 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 ] zp ZP_BYTE:47 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:113 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:115 [ keyboard_event_scan::$14 ] zp ZP_BYTE:117 [ keyboard_event_scan::$18 ] zp ZP_BYTE:119 [ keyboard_event_scan::$22 ] zp ZP_BYTE:121 [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 504481 combination reg byte a [ keyboard_event_scan::$3 ] reg byte a [ keyboard_event_scan::$4 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$11 ] zp ZP_BYTE:51 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:52 [ 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 ] zp ZP_BYTE:50 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:116 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:118 [ keyboard_event_scan::$14 ] zp ZP_BYTE:120 [ keyboard_event_scan::$18 ] zp ZP_BYTE:122 [ keyboard_event_scan::$22 ] zp ZP_BYTE:124 [ keyboard_event_scan::$26 ] Limited combination testing to 100 combinations of 5308416 possible. -Uplifting [collision] best 486994 combination zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] reg byte a [ collision::$7 ] zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] reg byte x [ collision::c#2 collision::c#1 ] zp ZP_BYTE:91 [ collision::i#1 ] zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] zp ZP_WORD:89 [ collision::playfield_line#0 ] zp ZP_WORD:87 [ collision::piece_gfx#0 ] zp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] zp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] zp ZP_BYTE:83 [ collision::return#13 ] zp ZP_BYTE:93 [ collision::return#12 ] zp ZP_BYTE:95 [ collision::return#1 ] zp ZP_BYTE:99 [ collision::return#0 ] zp ZP_BYTE:31 [ collision::return#14 ] +Uplifting [collision] best 489481 combination zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] reg byte a [ collision::$7 ] zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] reg byte x [ collision::c#2 collision::c#1 ] zp ZP_BYTE:93 [ collision::i#1 ] zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] zp ZP_WORD:91 [ collision::playfield_line#0 ] zp ZP_WORD:89 [ collision::piece_gfx#0 ] zp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] zp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] zp ZP_BYTE:86 [ collision::return#13 ] zp ZP_BYTE:95 [ collision::return#12 ] zp ZP_BYTE:97 [ collision::return#1 ] zp ZP_BYTE:101 [ collision::return#0 ] zp ZP_BYTE:31 [ collision::return#14 ] Limited combination testing to 100 combinations of 80621568 possible. -Uplifting [lock_current] best 466994 combination reg byte x [ lock_current::c#2 lock_current::c#1 ] reg byte a [ lock_current::col#0 ] zp ZP_BYTE:43 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] reg byte a [ lock_current::cell#0 ] zp ZP_BYTE:101 [ lock_current::line#0 ] zp ZP_BYTE:102 [ lock_current::$1 ] zp ZP_BYTE:42 [ lock_current::l#2 lock_current::l#1 ] zp ZP_WORD:103 [ lock_current::playfield_line#0 ] -Limited combination testing to 100 combinations of 6912 possible. -Uplifting [render_current] best 451994 combination zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] reg byte x [ render_current::c#2 render_current::c#1 ] zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] reg byte a [ render_current::current_cell#0 ] zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] zp ZP_WORD:78 [ render_current::screen_line#0 ] +Uplifting [lock_current] best 480481 combination zp ZP_BYTE:45 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] zp ZP_BYTE:46 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] reg byte x [ lock_current::c#2 lock_current::c#1 ] zp ZP_BYTE:109 [ lock_current::i#1 ] zp ZP_BYTE:44 [ lock_current::l#6 lock_current::l#1 ] zp ZP_WORD:107 [ lock_current::playfield_line#0 ] zp ZP_BYTE:43 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] +Limited combination testing to 100 combinations of 729 possible. +Uplifting [render_current] best 465481 combination zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] reg byte x [ render_current::c#2 render_current::c#1 ] zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] reg byte a [ render_current::current_cell#0 ] zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] zp ZP_WORD:81 [ render_current::screen_line#0 ] Limited combination testing to 100 combinations of 972 possible. -Uplifting [] best 451960 combination zp ZP_BYTE:50 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 ] zp ZP_WORD:6 [ current_piece_gfx#61 current_piece_gfx#82 ] zp ZP_BYTE:40 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] zp ZP_WORD:37 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#8 current_piece_gfx#17 ] zp ZP_WORD:21 [ current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 ] zp ZP_BYTE:39 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] reg byte x [ current_ypos#22 current_ypos#72 ] zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 ] zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] zp ZP_BYTE:36 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] zp ZP_WORD:34 [ current_piece#23 current_piece#11 current_piece#13 ] zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] +Uplifting [] best 465447 combination zp ZP_BYTE:53 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] zp ZP_BYTE:8 [ current_piece_color#64 current_piece_color#72 current_piece_color#73 ] zp ZP_WORD:6 [ current_piece_gfx#62 current_piece_gfx#84 current_piece_gfx#85 ] zp ZP_WORD:37 [ 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:40 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] zp ZP_WORD:21 [ current_piece#15 current_piece#69 current_piece#70 current_piece#71 current_piece#72 ] reg byte x [ current_ypos#22 current_ypos#68 ] zp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] zp ZP_WORD:34 [ current_piece#23 current_piece#73 current_piece#11 current_piece#13 current_piece#68 ] zp ZP_BYTE:5 [ current_xpos#62 current_xpos#93 ] zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] Limited combination testing to 100 combinations of 1728 possible. -Uplifting [render_playfield] best 442560 combination zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] reg byte x [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$1 ] zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] -Uplifting [init] best 441280 combination reg byte x [ init::c#2 init::c#1 ] zp ZP_WORD:129 [ init::$13 ] zp ZP_WORD:57 [ init::line#4 init::line#1 ] reg byte x [ init::i#2 init::i#1 ] reg byte x [ init::j#2 init::j#1 ] reg byte a [ init::$5 ] reg byte a [ init::$8 ] zp ZP_BYTE:59 [ init::l#4 init::l#1 ] zp ZP_WORD:52 [ init::li#2 init::li#1 ] zp ZP_WORD:55 [ init::pli#2 init::pli#1 ] +Uplifting [render_playfield] best 456047 combination zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] reg byte x [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$1 ] zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] +Uplifting [init] best 454767 combination reg byte x [ init::c#2 init::c#1 ] zp ZP_WORD:132 [ init::$13 ] zp ZP_WORD:60 [ init::line#4 init::line#1 ] reg byte x [ init::i#2 init::i#1 ] reg byte x [ init::j#2 init::j#1 ] reg byte a [ init::$5 ] reg byte a [ init::$8 ] zp ZP_BYTE:62 [ init::l#4 init::l#1 ] zp ZP_WORD:55 [ init::li#2 init::li#1 ] zp ZP_WORD:58 [ init::pli#2 init::pli#1 ] Limited combination testing to 100 combinations of 576 possible. -Uplifting [keyboard_matrix_read] best 440074 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] -Uplifting [main] best 439834 combination reg byte a [ main::$8 ] reg byte a [ main::$9 ] reg byte a [ main::$10 ] reg byte a [ main::render#3 ] zp ZP_BYTE:69 [ main::render#1 ] zp ZP_BYTE:73 [ main::render#2 ] zp ZP_BYTE:65 [ main::key_event#0 ] +Uplifting [spawn_current] best 453463 combination reg byte x [ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] reg byte a [ spawn_current::$1 ] zp ZP_BYTE:103 [ spawn_current::$3 ] +Uplifting [keyboard_matrix_read] best 452257 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] +Uplifting [sid_rnd] best 451354 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] +Uplifting [main] best 451114 combination reg byte a [ main::$9 ] reg byte a [ main::$10 ] reg byte a [ main::$11 ] reg byte a [ main::render#3 ] zp ZP_BYTE:72 [ main::render#1 ] zp ZP_BYTE:76 [ main::render#2 ] zp ZP_BYTE:68 [ main::key_event#0 ] Limited combination testing to 100 combinations of 6912 possible. -Uplifting [play_move_down] best 439720 combination reg byte a [ play_move_down::return#0 ] 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 a [ play_move_down::key_event#0 ] reg byte a [ play_move_down::$2 ] zp ZP_BYTE:100 [ play_move_down::$12 ] zp ZP_BYTE:41 [ play_move_down::return#3 ] +Uplifting [play_move_down] best 451000 combination reg byte a [ play_move_down::return#0 ] 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 a [ play_move_down::key_event#0 ] reg byte a [ play_move_down::$2 ] zp ZP_BYTE:102 [ play_move_down::$12 ] zp ZP_BYTE:41 [ play_move_down::return#3 ] Limited combination testing to 100 combinations of 3072 possible. -Uplifting [play_move_rotate] best 439618 combination reg byte a [ play_move_rotate::return#0 ] zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte a [ play_move_rotate::key_event#0 ] reg byte a [ play_move_rotate::$2 ] zp ZP_BYTE:84 [ play_move_rotate::$6 ] zp ZP_BYTE:85 [ play_move_rotate::$8 ] zp ZP_BYTE:86 [ play_move_rotate::$4 ] zp ZP_BYTE:19 [ play_move_rotate::return#2 ] -Limited combination testing to 100 combinations of 49152 possible. -Uplifting [play_move_leftright] best 439510 combination reg byte a [ play_move_leftright::return#0 ] reg byte a [ play_move_leftright::key_event#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] zp ZP_BYTE:32 [ play_move_leftright::return#2 ] +Uplifting [play_move_rotate] best 450898 combination reg byte a [ play_move_rotate::return#0 ] zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte a [ play_move_rotate::key_event#0 ] reg byte a [ play_move_rotate::$2 ] zp ZP_BYTE:87 [ play_move_rotate::$6 ] zp ZP_BYTE:88 [ play_move_rotate::$4 ] zp ZP_BYTE:19 [ play_move_rotate::return#2 ] +Limited combination testing to 100 combinations of 12288 possible. +Uplifting [play_move_leftright] best 450790 combination reg byte a [ play_move_leftright::return#0 ] reg byte a [ play_move_leftright::key_event#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] zp ZP_BYTE:32 [ play_move_leftright::return#2 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [fill] best 439494 combination zp ZP_WORD:62 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:131 [ fill::end#0 ] reg byte x [ fill::val#3 ] -Uplifting [keyboard_event_pressed] best 439474 combination reg byte a [ keyboard_event_pressed::return#12 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#0 ] zp ZP_BYTE:116 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:118 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:120 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:108 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:110 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:45 [ keyboard_event_pressed::keycode#5 ] +Uplifting [fill] best 450774 combination zp ZP_WORD:65 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:134 [ fill::end#0 ] reg byte x [ fill::val#3 ] +Uplifting [keyboard_event_pressed] best 450754 combination reg byte a [ keyboard_event_pressed::return#12 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#0 ] zp ZP_BYTE:119 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:121 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:123 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:111 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:113 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:48 [ keyboard_event_pressed::keycode#5 ] Limited combination testing to 100 combinations of 589824 possible. -Uplifting [keyboard_event_get] best 439378 combination reg byte a [ keyboard_event_get::return#3 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Uplifting [spawn_current] best 439378 combination -Attempting to uplift remaining variables inzp ZP_BYTE:50 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] -Uplifting [] best 439378 combination zp ZP_BYTE:50 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Uplifting [keyboard_event_get] best 450658 combination reg byte a [ keyboard_event_get::return#3 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplifting [sid_rnd_init] best 450658 combination +Attempting to uplift remaining variables inzp ZP_BYTE:53 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Uplifting [] best 450658 combination zp ZP_BYTE:53 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] -Uplifting [collision] best 439378 combination zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] +Uplifting [collision] best 450658 combination zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:45 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] +Uplifting [lock_current] best 450658 combination zp ZP_BYTE:45 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] Attempting to uplift remaining variables inzp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] -Uplifting [render_current] best 439378 combination zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] -Attempting to uplift remaining variables inzp ZP_BYTE:43 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] -Uplifting [lock_current] best 439378 combination zp ZP_BYTE:43 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:48 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Uplifting [keyboard_event_scan] best 424378 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Uplifting [render_current] best 450658 combination zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] +Attempting to uplift remaining variables inzp ZP_BYTE:51 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Uplifting [keyboard_event_scan] best 435658 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] -Uplifting [render_current] best 424378 combination zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] +Uplifting [render_current] best 435658 combination zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Uplifting [render_playfield] best 424378 combination zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] +Uplifting [render_playfield] best 435658 combination zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:46 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] +Uplifting [lock_current] best 435658 combination zp ZP_BYTE:46 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] -Uplifting [collision] best 424378 combination zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:49 [ 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 ] -Uplifting [keyboard_event_scan] best 424378 combination zp ZP_BYTE:49 [ 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 ] -Attempting to uplift remaining variables inzp ZP_BYTE:47 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Uplifting [keyboard_event_scan] best 424378 combination zp ZP_BYTE:47 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:101 [ lock_current::line#0 ] -Uplifting [lock_current] best 423778 combination reg byte a [ lock_current::line#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:102 [ lock_current::$1 ] -Uplifting [lock_current] best 423378 combination reg byte a [ lock_current::$1 ] +Uplifting [collision] best 435658 combination zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:52 [ 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 ] +Uplifting [keyboard_event_scan] best 435658 combination zp ZP_BYTE:52 [ 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 ] +Attempting to uplift remaining variables inzp ZP_BYTE:109 [ lock_current::i#1 ] +Uplifting [lock_current] best 435658 combination zp ZP_BYTE:109 [ lock_current::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:50 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Uplifting [keyboard_event_scan] best 435658 combination zp ZP_BYTE:50 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] -Uplifting [render_playfield] best 423378 combination zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:42 [ lock_current::l#2 lock_current::l#1 ] -Uplifting [lock_current] best 423378 combination zp ZP_BYTE:42 [ lock_current::l#2 lock_current::l#1 ] +Uplifting [render_playfield] best 435658 combination zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] -Uplifting [render_current] best 423378 combination zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:91 [ collision::i#1 ] -Uplifting [collision] best 423378 combination zp ZP_BYTE:91 [ collision::i#1 ] +Uplifting [render_current] best 435658 combination zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:93 [ collision::i#1 ] +Uplifting [collision] best 435658 combination zp ZP_BYTE:93 [ collision::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] -Uplifting [collision] best 423378 combination zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:113 [ keyboard_event_scan::row_scan#0 ] -Uplifting [keyboard_event_scan] best 423378 combination zp ZP_BYTE:113 [ keyboard_event_scan::row_scan#0 ] +Uplifting [collision] best 435658 combination zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:116 [ keyboard_event_scan::row_scan#0 ] +Uplifting [keyboard_event_scan] best 435658 combination zp ZP_BYTE:116 [ keyboard_event_scan::row_scan#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:44 [ lock_current::l#6 lock_current::l#1 ] +Uplifting [lock_current] best 435658 combination zp ZP_BYTE:44 [ lock_current::l#6 lock_current::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] -Uplifting [collision] best 423378 combination zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] +Uplifting [collision] best 435658 combination zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] -Uplifting [render_current] best 423378 combination zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 ] -Uplifting [] best 423378 combination zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 ] -Attempting to uplift remaining variables inzp ZP_BYTE:40 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] -Uplifting [] best 423378 combination zp ZP_BYTE:40 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] -Attempting to uplift remaining variables inzp ZP_BYTE:39 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] -Uplifting [] best 423378 combination zp ZP_BYTE:39 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:59 [ init::l#4 init::l#1 ] -Uplifting [init] best 423378 combination zp ZP_BYTE:59 [ init::l#4 init::l#1 ] +Uplifting [render_current] best 435658 combination zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:43 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] +Uplifting [lock_current] best 435658 combination zp ZP_BYTE:43 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:8 [ current_piece_color#64 current_piece_color#72 current_piece_color#73 ] +Uplifting [] best 435658 combination zp ZP_BYTE:8 [ current_piece_color#64 current_piece_color#72 current_piece_color#73 ] +Attempting to uplift remaining variables inzp ZP_BYTE:40 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] +Uplifting [] best 435658 combination zp ZP_BYTE:40 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] +Attempting to uplift remaining variables inzp ZP_BYTE:62 [ init::l#4 init::l#1 ] +Uplifting [init] best 435658 combination zp ZP_BYTE:62 [ init::l#4 init::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] -Uplifting [collision] best 423365 combination reg byte x [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 ] -Uplifting [] best 423365 combination zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 ] -Attempting to uplift remaining variables inzp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] -Uplifting [] best 423365 combination zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] +Uplifting [collision] best 435645 combination reg byte x [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +Uplifting [] best 435645 combination zp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +Attempting to uplift remaining variables inzp ZP_BYTE:5 [ current_xpos#62 current_xpos#93 ] +Uplifting [] best 435645 combination zp ZP_BYTE:5 [ current_xpos#62 current_xpos#93 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] -Uplifting [collision] best 423352 combination reg byte y [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] +Uplifting [collision] best 435632 combination reg byte y [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] -Uplifting [collision] best 423352 combination zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:36 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] -Uplifting [] best 423352 combination zp ZP_BYTE:36 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] +Uplifting [collision] best 435632 combination zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] +Uplifting [] best 435632 combination zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] +Uplifting [] best 435632 combination zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] Attempting to uplift remaining variables inzp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Uplifting [play_move_rotate] best 423352 combination zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:69 [ main::render#1 ] -Uplifting [main] best 423352 combination zp ZP_BYTE:69 [ main::render#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:73 [ main::render#2 ] -Uplifting [main] best 423352 combination zp ZP_BYTE:73 [ main::render#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:65 [ main::key_event#0 ] -Uplifting [main] best 423352 combination zp ZP_BYTE:65 [ main::key_event#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:83 [ collision::return#13 ] -Uplifting [collision] best 423346 combination reg byte a [ collision::return#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:84 [ play_move_rotate::$6 ] -Uplifting [play_move_rotate] best 423340 combination reg byte a [ play_move_rotate::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:85 [ play_move_rotate::$8 ] -Uplifting [play_move_rotate] best 423336 combination reg byte a [ play_move_rotate::$8 ] -Attempting to uplift remaining variables inzp ZP_BYTE:86 [ play_move_rotate::$4 ] -Uplifting [play_move_rotate] best 423330 combination reg byte a [ play_move_rotate::$4 ] -Attempting to uplift remaining variables inzp ZP_BYTE:93 [ collision::return#12 ] -Uplifting [collision] best 423324 combination reg byte a [ collision::return#12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:95 [ collision::return#1 ] -Uplifting [collision] best 423318 combination reg byte a [ collision::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:99 [ collision::return#0 ] -Uplifting [collision] best 423312 combination reg byte a [ collision::return#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:100 [ play_move_down::$12 ] -Uplifting [play_move_down] best 423306 combination reg byte a [ play_move_down::$12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:115 [ keyboard_event_scan::$14 ] -Uplifting [keyboard_event_scan] best 423300 combination reg byte a [ keyboard_event_scan::$14 ] -Attempting to uplift remaining variables inzp ZP_BYTE:116 [ keyboard_event_pressed::return#1 ] -Uplifting [keyboard_event_pressed] best 423294 combination reg byte a [ keyboard_event_pressed::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:117 [ keyboard_event_scan::$18 ] -Uplifting [keyboard_event_scan] best 423288 combination reg byte a [ keyboard_event_scan::$18 ] -Attempting to uplift remaining variables inzp ZP_BYTE:118 [ keyboard_event_pressed::return#2 ] -Uplifting [keyboard_event_pressed] best 423282 combination reg byte a [ keyboard_event_pressed::return#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:119 [ keyboard_event_scan::$22 ] -Uplifting [keyboard_event_scan] best 423276 combination reg byte a [ keyboard_event_scan::$22 ] -Attempting to uplift remaining variables inzp ZP_BYTE:120 [ keyboard_event_pressed::return#10 ] -Uplifting [keyboard_event_pressed] best 423270 combination reg byte a [ keyboard_event_pressed::return#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:121 [ keyboard_event_scan::$26 ] -Uplifting [keyboard_event_scan] best 423264 combination reg byte a [ keyboard_event_scan::$26 ] +Uplifting [play_move_rotate] best 435632 combination zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:72 [ main::render#1 ] +Uplifting [main] best 435632 combination zp ZP_BYTE:72 [ main::render#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:76 [ main::render#2 ] +Uplifting [main] best 435632 combination zp ZP_BYTE:76 [ main::render#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:68 [ main::key_event#0 ] +Uplifting [main] best 435632 combination zp ZP_BYTE:68 [ main::key_event#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:86 [ collision::return#13 ] +Uplifting [collision] best 435626 combination reg byte a [ collision::return#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:87 [ play_move_rotate::$6 ] +Uplifting [play_move_rotate] best 435622 combination reg byte a [ play_move_rotate::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:88 [ play_move_rotate::$4 ] +Uplifting [play_move_rotate] best 435616 combination reg byte a [ play_move_rotate::$4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:95 [ collision::return#12 ] +Uplifting [collision] best 435610 combination reg byte a [ collision::return#12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:97 [ collision::return#1 ] +Uplifting [collision] best 435604 combination reg byte a [ collision::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:101 [ collision::return#0 ] +Uplifting [collision] best 435598 combination reg byte a [ collision::return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:102 [ play_move_down::$12 ] +Uplifting [play_move_down] best 435592 combination reg byte a [ play_move_down::$12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:118 [ keyboard_event_scan::$14 ] +Uplifting [keyboard_event_scan] best 435586 combination reg byte a [ keyboard_event_scan::$14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:119 [ keyboard_event_pressed::return#1 ] +Uplifting [keyboard_event_pressed] best 435580 combination reg byte a [ keyboard_event_pressed::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:120 [ keyboard_event_scan::$18 ] +Uplifting [keyboard_event_scan] best 435574 combination reg byte a [ keyboard_event_scan::$18 ] +Attempting to uplift remaining variables inzp ZP_BYTE:121 [ keyboard_event_pressed::return#2 ] +Uplifting [keyboard_event_pressed] best 435568 combination reg byte a [ keyboard_event_pressed::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:122 [ keyboard_event_scan::$22 ] +Uplifting [keyboard_event_scan] best 435562 combination reg byte a [ keyboard_event_scan::$22 ] +Attempting to uplift remaining variables inzp ZP_BYTE:123 [ keyboard_event_pressed::return#10 ] +Uplifting [keyboard_event_pressed] best 435556 combination reg byte a [ keyboard_event_pressed::return#10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:124 [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 435550 combination reg byte a [ keyboard_event_scan::$26 ] Attempting to uplift remaining variables inzp ZP_BYTE:19 [ play_move_rotate::return#2 ] -Uplifting [play_move_rotate] best 423228 combination reg byte a [ play_move_rotate::return#2 ] +Uplifting [play_move_rotate] best 435514 combination reg byte a [ play_move_rotate::return#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:32 [ play_move_leftright::return#2 ] -Uplifting [play_move_leftright] best 423192 combination reg byte a [ play_move_leftright::return#2 ] +Uplifting [play_move_leftright] best 435478 combination reg byte a [ play_move_leftright::return#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:41 [ play_move_down::return#3 ] -Uplifting [play_move_down] best 423176 combination reg byte x [ play_move_down::return#3 ] +Uplifting [play_move_down] best 435462 combination reg byte x [ play_move_down::return#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] -Uplifting [] best 423176 combination zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:108 [ keyboard_event_pressed::row_bits#0 ] -Uplifting [keyboard_event_pressed] best 423176 combination zp ZP_BYTE:108 [ keyboard_event_pressed::row_bits#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:110 [ keyboard_event_pressed::return#11 ] -Uplifting [keyboard_event_pressed] best 423158 combination reg byte a [ keyboard_event_pressed::return#11 ] +Uplifting [] best 435462 combination zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:111 [ keyboard_event_pressed::row_bits#0 ] +Uplifting [keyboard_event_pressed] best 435462 combination zp ZP_BYTE:111 [ keyboard_event_pressed::row_bits#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:113 [ keyboard_event_pressed::return#11 ] +Uplifting [keyboard_event_pressed] best 435444 combination reg byte a [ keyboard_event_pressed::return#11 ] Attempting to uplift remaining variables inzp ZP_BYTE:31 [ collision::return#14 ] -Uplifting [collision] best 423131 combination reg byte a [ collision::return#14 ] -Attempting to uplift remaining variables inzp ZP_BYTE:45 [ keyboard_event_pressed::keycode#5 ] -Uplifting [keyboard_event_pressed] best 423131 combination zp ZP_BYTE:45 [ keyboard_event_pressed::keycode#5 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 ] ] with [ zp ZP_WORD:87 [ collision::piece_gfx#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:69 [ main::render#1 ] ] with [ zp ZP_BYTE:73 [ main::render#2 ] ] - score: 1 -Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] ] with [ zp ZP_BYTE:59 [ init::l#4 init::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] ] with [ zp ZP_BYTE:42 [ lock_current::l#2 lock_current::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 ] ] with [ zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 render_playfield::l#2 render_playfield::l#1 ] ] with [ zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ 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 ] ] with [ zp ZP_BYTE:43 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ 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 ] ] with [ zp ZP_BYTE:45 [ keyboard_event_pressed::keycode#5 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ 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 ] ] with [ zp ZP_BYTE:47 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#61 current_piece_gfx#82 ] ] with [ zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#61 current_piece_gfx#82 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] ] with [ zp ZP_WORD:21 [ current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 collision::piece_gfx#0 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ 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 ] ] with [ zp ZP_WORD:52 [ init::li#2 init::li#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ 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 ] ] with [ zp ZP_WORD:55 [ init::pli#2 init::pli#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ 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 ] ] with [ zp ZP_WORD:57 [ init::line#4 init::line#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ 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 ] ] with [ zp ZP_WORD:62 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ 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 ] ] with [ zp ZP_WORD:103 [ lock_current::playfield_line#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 ] ] with [ zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] with [ zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ 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 ] ] with [ zp ZP_BYTE:49 [ 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 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ 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 ] ] with [ zp ZP_BYTE:108 [ keyboard_event_pressed::row_bits#0 ] ] +Uplifting [collision] best 435417 combination reg byte a [ collision::return#14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:48 [ keyboard_event_pressed::keycode#5 ] +Uplifting [keyboard_event_pressed] best 435417 combination zp ZP_BYTE:48 [ keyboard_event_pressed::keycode#5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:103 [ spawn_current::$3 ] +Uplifting [spawn_current] best 435417 combination zp ZP_BYTE:103 [ spawn_current::$3 ] +Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] ] with [ zp ZP_BYTE:43 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ current_piece#15 current_piece#69 current_piece#70 current_piece#71 current_piece#72 ] ] with [ zp ZP_WORD:89 [ collision::piece_gfx#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:72 [ main::render#1 ] ] with [ zp ZP_BYTE:76 [ main::render#2 ] ] - score: 1 +Coalescing zero page register [ 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 ] ] with [ zp ZP_BYTE:62 [ init::l#4 init::l#1 ] ] +Coalescing zero page register [ 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 ] ] with [ zp ZP_BYTE:103 [ spawn_current::$3 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] ] with [ zp ZP_BYTE:44 [ lock_current::l#6 lock_current::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#62 current_xpos#93 ] ] with [ zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#62 current_xpos#93 render_playfield::l#2 render_playfield::l#1 ] ] with [ zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ 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 ] ] with [ zp ZP_BYTE:45 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ 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 ] ] with [ zp ZP_BYTE:48 [ keyboard_event_pressed::keycode#5 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ 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 ] ] with [ zp ZP_BYTE:50 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#62 current_piece_gfx#84 current_piece_gfx#85 ] ] with [ zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#62 current_piece_gfx#84 current_piece_gfx#85 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] ] with [ zp ZP_WORD:21 [ current_piece#15 current_piece#69 current_piece#70 current_piece#71 current_piece#72 collision::piece_gfx#0 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ 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 ] ] with [ zp ZP_WORD:55 [ init::li#2 init::li#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ 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 ] ] with [ zp ZP_WORD:58 [ init::pli#2 init::pli#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ 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 ] ] with [ zp ZP_WORD:60 [ init::line#4 init::line#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ 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 ] ] with [ zp ZP_WORD:65 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ 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 ] ] with [ zp ZP_WORD:107 [ lock_current::playfield_line#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#64 current_piece_color#72 current_piece_color#73 ] ] with [ zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#64 current_piece_color#72 current_piece_color#73 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] with [ zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ 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 ] ] with [ zp ZP_BYTE:46 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ 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 ] ] with [ zp ZP_BYTE:52 [ 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 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ 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 ] ] with [ zp ZP_BYTE:111 [ keyboard_event_pressed::row_bits#0 ] ] Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] ] with [ zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] ] with [ zp ZP_BYTE:113 [ keyboard_event_scan::row_scan#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] ] with [ zp ZP_BYTE:109 [ lock_current::i#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:9 [ 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 ] ] with [ zp ZP_BYTE:116 [ keyboard_event_scan::row_scan#0 ] ] Coalescing zero page register [ zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] ] with [ zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] ] Coalescing zero page register [ zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] ] with [ zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] ] Coalescing zero page register [ zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] ] with [ zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] ] -Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#23 current_piece#11 current_piece#13 ] ] with [ zp ZP_WORD:129 [ init::$13 ] ] -Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#23 current_piece#11 current_piece#13 init::$13 ] ] with [ zp ZP_WORD:131 [ fill::end#0 ] ] -Coalescing zero page register [ zp ZP_WORD:78 [ render_current::screen_line#0 ] ] with [ zp ZP_WORD:89 [ collision::playfield_line#0 ] ] -Allocated (was zp ZP_BYTE:5) 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 ] -Allocated (was zp ZP_WORD:6) 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 ] -Allocated (was zp ZP_BYTE:8) 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 ] -Allocated (was zp ZP_BYTE:9) 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 ] +Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#23 current_piece#73 current_piece#11 current_piece#13 current_piece#68 ] ] with [ zp ZP_WORD:132 [ init::$13 ] ] +Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#23 current_piece#73 current_piece#11 current_piece#13 current_piece#68 init::$13 ] ] with [ zp ZP_WORD:134 [ fill::end#0 ] ] +Coalescing zero page register [ zp ZP_WORD:81 [ render_current::screen_line#0 ] ] with [ zp ZP_WORD:91 [ collision::playfield_line#0 ] ] +Allocated (was zp ZP_BYTE:5) 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 ] +Allocated (was zp ZP_WORD:6) 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 ] +Allocated (was zp ZP_BYTE:8) 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 ] +Allocated (was zp ZP_BYTE:9) 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 ] Allocated (was zp ZP_BYTE:10) zp ZP_BYTE:9 [ render_current::l#3 render_current::l#1 collision::l#6 collision::l#1 ] Allocated (was zp ZP_BYTE:11) 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 ] Allocated (was zp ZP_BYTE:12) 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 ] -Allocated (was zp ZP_WORD:34) zp ZP_WORD:12 [ current_piece#23 current_piece#11 current_piece#13 init::$13 fill::end#0 ] -Allocated (was zp ZP_BYTE:36) zp ZP_BYTE:14 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] -Allocated (was zp ZP_WORD:37) zp ZP_WORD:15 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#8 current_piece_gfx#17 ] -Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:17 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] -Allocated (was zp ZP_BYTE:40) zp ZP_BYTE:18 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] -Allocated (was zp ZP_BYTE:50) zp ZP_BYTE:19 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] -Allocated (was zp ZP_BYTE:65) zp ZP_BYTE:20 [ main::key_event#0 ] -Allocated (was zp ZP_BYTE:69) zp ZP_BYTE:21 [ main::render#1 main::render#2 ] -Allocated (was zp ZP_WORD:78) zp ZP_WORD:22 [ render_current::screen_line#0 collision::playfield_line#0 ] -Allocated (was zp ZP_BYTE:91) zp ZP_BYTE:24 [ collision::i#1 ] +Allocated (was zp ZP_WORD:34) zp ZP_WORD:12 [ current_piece#23 current_piece#73 current_piece#11 current_piece#13 current_piece#68 init::$13 fill::end#0 ] +Allocated (was zp ZP_BYTE:36) zp ZP_BYTE:14 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] +Allocated (was zp ZP_WORD:37) 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 ] +Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:17 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +Allocated (was zp ZP_BYTE:40) zp ZP_BYTE:18 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] +Allocated (was zp ZP_BYTE:53) zp ZP_BYTE:19 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Allocated (was zp ZP_BYTE:68) zp ZP_BYTE:20 [ main::key_event#0 ] +Allocated (was zp ZP_BYTE:72) zp ZP_BYTE:21 [ main::render#1 main::render#2 ] +Allocated (was zp ZP_WORD:81) zp ZP_WORD:22 [ render_current::screen_line#0 collision::playfield_line#0 ] +Allocated (was zp ZP_BYTE:93) zp ZP_BYTE:24 [ collision::i#1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -7963,8 +8418,10 @@ ASSEMBLER BEFORE OPTIMIZATION .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 @@ -7974,11 +8431,15 @@ ASSEMBLER BEFORE OPTIMIZATION .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 @@ -7986,557 +8447,558 @@ ASSEMBLER BEFORE OPTIMIZATION .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 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @21 [phi:@begin->@21] -b21_from_bbegin: - jmp b21 -//SEG4 @21 -b21: +//SEG3 [1] phi from @begin to @23 [phi:@begin->@23] +b23_from_bbegin: + jmp b23 +//SEG4 @23 +b23: //SEG5 [2] call main +//SEG6 [4] phi from @23 to main [phi:@23->main] +main_from_b23: jsr main -//SEG6 [3] phi from @21 to @end [phi:@21->@end] -bend_from_b21: +//SEG7 [3] phi from @23 to @end [phi:@23->@end] +bend_from_b23: jmp bend -//SEG7 @end +//SEG8 @end bend: -//SEG8 main +//SEG9 main main: { .label key_event = $14 .label render = $15 - //SEG9 asm { sei } - sei - //SEG10 [5] call init - //SEG11 [261] phi from main to init [phi:main->init] - init_from_main: - jsr init - //SEG12 [6] phi from main to main::@21 [phi:main->main::@21] - b21_from_main: + //SEG10 [5] call sid_rnd_init + jsr sid_rnd_init jmp b21 - //SEG13 main::@21 + //SEG11 main::@21 b21: - //SEG14 [7] call spawn_current - //SEG15 [176] phi from main::@21 to spawn_current [phi:main::@21->spawn_current] - spawn_current_from_b21: - jsr spawn_current - //SEG16 [8] phi from main::@21 to main::@22 [phi:main::@21->main::@22] + //SEG12 asm { sei } + sei + //SEG13 [7] call init + //SEG14 [279] phi from main::@21 to init [phi:main::@21->init] + init_from_b21: + jsr init + //SEG15 [8] phi from main::@21 to main::@22 [phi:main::@21->main::@22] b22_from_b21: jmp b22 - //SEG17 main::@22 + //SEG16 main::@22 b22: - //SEG18 [9] call render_playfield - //SEG19 [66] phi from main::@22 to render_playfield [phi:main::@22->render_playfield] - render_playfield_from_b22: - jsr render_playfield - //SEG20 [10] phi from main::@22 to main::@23 [phi:main::@22->main::@23] + //SEG17 [9] call spawn_current + jsr spawn_current + //SEG18 [10] phi from main::@22 to main::@23 [phi:main::@22->main::@23] b23_from_b22: jmp b23 - //SEG21 main::@23 + //SEG19 main::@23 b23: - //SEG22 [11] call render_current - //SEG23 [46] phi from main::@23 to render_current [phi:main::@23->render_current] - render_current_from_b23: - //SEG24 [46] phi (byte) current_piece_color#63 = (const byte) GREEN#0 [phi:main::@23->render_current#0] -- vbuz1=vbuc1 - lda #GREEN - sta current_piece_color_63 - //SEG25 [46] phi (byte*) current_piece_gfx#61 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->render_current#1] -- pbuz1=pbuc1 - lda #piece_t - sta current_piece_gfx_61+1 - //SEG26 [46] phi (byte) current_xpos#62 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@23->render_current#2] -- vbuz1=vbuc1 + //SEG20 [11] call render_playfield + //SEG21 [70] phi from main::@23 to render_playfield [phi:main::@23->render_playfield] + render_playfield_from_b23: + jsr render_playfield + jmp b24 + //SEG22 main::@24 + b24: + //SEG23 [12] (byte*~) current_piece_gfx#84 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 + lda current_piece_gfx + sta current_piece_gfx_84 + lda current_piece_gfx+1 + sta current_piece_gfx_84+1 + //SEG24 [13] (byte~) current_piece_color#72 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 + lda current_piece_color + sta current_piece_color_72 + //SEG25 [14] call render_current + //SEG26 [50] phi from main::@24 to render_current [phi:main::@24->render_current] + render_current_from_b24: + //SEG27 [50] phi (byte) current_piece_color#64 = (byte~) current_piece_color#72 [phi:main::@24->render_current#0] -- register_copy + //SEG28 [50] phi (byte*) current_piece_gfx#62 = (byte*~) current_piece_gfx#84 [phi:main::@24->render_current#1] -- register_copy + //SEG29 [50] phi (byte) current_xpos#62 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@24->render_current#2] -- vbuz1=vbuc1 lda #3 sta current_xpos_62 - //SEG27 [46] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->render_current#3] -- vbuxx=vbuc1 + //SEG30 [50] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@24->render_current#3] -- vbuxx=vbuc1 ldx #0 jsr render_current - //SEG28 [12] phi from main::@23 to main::@1 [phi:main::@23->main::@1] - b1_from_b23: - //SEG29 [12] phi (byte) current_movedown_counter#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#0] -- vbuz1=vbuc1 + //SEG31 [15] (byte*~) current_piece#68 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + ldy spawn_current._3 + lda PIECES,y + sta current_piece + lda PIECES+1,y + sta current_piece+1 + //SEG32 [16] phi from main::@24 to main::@1 [phi:main::@24->main::@1] + b1_from_b24: + //SEG33 [16] phi (byte) current_movedown_counter#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@24->main::@1#0] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG30 [12] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#1] -- vbuz1=vbuc1 + //SEG34 [16] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@24->main::@1#1] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG31 [12] phi (byte) current_ypos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#2] -- vbuz1=vbuc1 + //SEG35 [16] phi (byte) current_piece_color#11 = (byte) current_piece_color#15 [phi:main::@24->main::@1#2] -- register_copy + //SEG36 [16] phi (byte) current_ypos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@24->main::@1#3] -- vbuz1=vbuc1 lda #0 sta current_ypos - //SEG32 [12] phi (byte) current_xpos#16 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@23->main::@1#3] -- vbuz1=vbuc1 + //SEG37 [16] phi (byte) current_xpos#16 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@24->main::@1#4] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG33 [12] phi (byte) current_piece_color#11 = (const byte) GREEN#0 [phi:main::@23->main::@1#4] -- vbuz1=vbuc1 - lda #GREEN - sta current_piece_color - //SEG34 [12] phi (byte*) current_piece_gfx#15 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->main::@1#5] -- pbuz1=pbuc1 - lda #piece_t - sta current_piece_gfx+1 - //SEG35 [12] phi (byte) current_piece_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#6] -- vbuz1=vbuc1 + //SEG38 [16] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#10 [phi:main::@24->main::@1#5] -- register_copy + //SEG39 [16] phi (byte) current_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@24->main::@1#6] -- vbuz1=vbuc1 lda #0 - sta current_piece_orientation - //SEG36 [12] phi (byte*) current_piece#11 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->main::@1#7] -- pbuz1=pbuc1 - lda #piece_t - sta current_piece+1 + sta current_orientation + //SEG40 [16] phi (byte*) current_piece#11 = (byte*~) current_piece#68 [phi:main::@24->main::@1#7] -- register_copy jmp b1 - //SEG37 main::@1 + //SEG41 main::@1 b1: jmp b4 - //SEG38 main::@4 + //SEG42 main::@4 b4: - //SEG39 [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG43 [17] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 jmp b7 - //SEG40 main::@7 + //SEG44 main::@7 b7: - //SEG41 [14] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG45 [18] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b7 jmp b9 - //SEG42 main::@9 + //SEG46 main::@9 b9: - //SEG43 [15] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG47 [19] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG44 [16] call keyboard_event_scan - //SEG45 [205] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] + //SEG48 [20] call keyboard_event_scan + //SEG49 [223] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] keyboard_event_scan_from_b9: jsr keyboard_event_scan - //SEG46 [17] phi from main::@9 to main::@25 [phi:main::@9->main::@25] - b25_from_b9: - jmp b25 - //SEG47 main::@25 - b25: - //SEG48 [18] call keyboard_event_get - jsr keyboard_event_get - //SEG49 [19] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 - // (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#2 // register copy reg byte a + //SEG50 [21] phi from main::@9 to main::@26 [phi:main::@9->main::@26] + b26_from_b9: jmp b26 - //SEG50 main::@26 + //SEG51 main::@26 b26: - //SEG51 [20] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa - sta key_event - //SEG52 [21] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 - lda key_event - //SEG53 [22] call play_move_down - jsr play_move_down - //SEG54 [23] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx - txa + //SEG52 [22] call keyboard_event_get + jsr keyboard_event_get + //SEG53 [23] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + // (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#2 // register copy reg byte a jmp b27 - //SEG55 main::@27 + //SEG54 main::@27 b27: - //SEG56 [24] (byte~) main::$8 ← (byte) play_move_down::return#0 - // (byte~) main::$8 = (byte) play_move_down::return#0 // register copy reg byte a - //SEG57 [25] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$8 -- vbuz1=vbuc1_plus_vbuaa + //SEG55 [24] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa + sta key_event + //SEG56 [25] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + lda key_event + //SEG57 [26] call play_move_down + jsr play_move_down + //SEG58 [27] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx + txa + jmp b28 + //SEG59 main::@28 + b28: + //SEG60 [28] (byte~) main::$9 ← (byte) play_move_down::return#0 + // (byte~) main::$9 = (byte) play_move_down::return#0 // register copy reg byte a + //SEG61 [29] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$9 -- vbuz1=vbuc1_plus_vbuaa clc adc #0 sta render - //SEG58 [26] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG62 [30] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG59 [27] call play_move_leftright + //SEG63 [31] call play_move_leftright jsr play_move_leftright - //SEG60 [28] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + //SEG64 [32] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 // (byte) play_move_leftright::return#0 = (byte) play_move_leftright::return#2 // register copy reg byte a - jmp b28 - //SEG61 main::@28 - b28: - //SEG62 [29] (byte~) main::$9 ← (byte) play_move_leftright::return#0 - // (byte~) main::$9 = (byte) play_move_leftright::return#0 // register copy reg byte a - //SEG63 [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 -- vbuz1=vbuz1_plus_vbuaa + jmp b29 + //SEG65 main::@29 + b29: + //SEG66 [33] (byte~) main::$10 ← (byte) play_move_leftright::return#0 + // (byte~) main::$10 = (byte) play_move_leftright::return#0 // register copy reg byte a + //SEG67 [34] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$10 -- vbuz1=vbuz1_plus_vbuaa clc adc render sta render - //SEG64 [31] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG68 [35] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG65 [32] call play_move_rotate + //SEG69 [36] call play_move_rotate jsr play_move_rotate - //SEG66 [33] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + //SEG70 [37] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 // (byte) play_move_rotate::return#0 = (byte) play_move_rotate::return#2 // register copy reg byte a - jmp b29 - //SEG67 main::@29 - b29: - //SEG68 [34] (byte~) main::$10 ← (byte) play_move_rotate::return#0 - // (byte~) main::$10 = (byte) play_move_rotate::return#0 // register copy reg byte a - //SEG69 [35] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$10 -- vbuaa=vbuz1_plus_vbuaa + jmp b30 + //SEG71 main::@30 + b30: + //SEG72 [38] (byte~) main::$11 ← (byte) play_move_rotate::return#0 + // (byte~) main::$11 = (byte) play_move_rotate::return#0 // register copy reg byte a + //SEG73 [39] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$11 -- vbuaa=vbuz1_plus_vbuaa clc adc render - //SEG70 [36] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuaa_eq_0_then_la1 + //SEG74 [40] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 jmp b19 - //SEG71 main::@19 + //SEG75 main::@19 b19: - //SEG72 [37] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG76 [41] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG73 [38] call render_playfield - //SEG74 [66] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] + //SEG77 [42] call render_playfield + //SEG78 [70] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] render_playfield_from_b19: jsr render_playfield - jmp b30 - //SEG75 main::@30 - b30: - //SEG76 [39] (byte~) current_ypos#72 ← (byte) current_ypos#16 -- vbuxx=vbuz1 - ldx current_ypos - //SEG77 [40] (byte~) current_xpos#92 ← (byte) current_xpos#23 -- vbuz1=vbuz2 - lda current_xpos - sta current_xpos_92 - //SEG78 [41] (byte*~) current_piece_gfx#82 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 - lda current_piece_gfx - sta current_piece_gfx_82 - lda current_piece_gfx+1 - sta current_piece_gfx_82+1 - //SEG79 [42] (byte~) current_piece_color#70 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 - lda current_piece_color - sta current_piece_color_70 - //SEG80 [43] call render_current - //SEG81 [46] phi from main::@30 to render_current [phi:main::@30->render_current] - render_current_from_b30: - //SEG82 [46] phi (byte) current_piece_color#63 = (byte~) current_piece_color#70 [phi:main::@30->render_current#0] -- register_copy - //SEG83 [46] phi (byte*) current_piece_gfx#61 = (byte*~) current_piece_gfx#82 [phi:main::@30->render_current#1] -- register_copy - //SEG84 [46] phi (byte) current_xpos#62 = (byte~) current_xpos#92 [phi:main::@30->render_current#2] -- register_copy - //SEG85 [46] phi (byte) current_ypos#22 = (byte~) current_ypos#72 [phi:main::@30->render_current#3] -- register_copy - jsr render_current jmp b31 - //SEG86 main::@31 + //SEG79 main::@31 b31: - //SEG87 [44] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG80 [43] (byte~) current_ypos#68 ← (byte) current_ypos#16 -- vbuxx=vbuz1 + ldx current_ypos + //SEG81 [44] (byte~) current_xpos#93 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + lda current_xpos + sta current_xpos_93 + //SEG82 [45] (byte*~) current_piece_gfx#85 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + lda current_piece_gfx + sta current_piece_gfx_85 + lda current_piece_gfx+1 + sta current_piece_gfx_85+1 + //SEG83 [46] (byte~) current_piece_color#73 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 + lda current_piece_color + sta current_piece_color_73 + //SEG84 [47] call render_current + //SEG85 [50] phi from main::@31 to render_current [phi:main::@31->render_current] + render_current_from_b31: + //SEG86 [50] phi (byte) current_piece_color#64 = (byte~) current_piece_color#73 [phi:main::@31->render_current#0] -- register_copy + //SEG87 [50] phi (byte*) current_piece_gfx#62 = (byte*~) current_piece_gfx#85 [phi:main::@31->render_current#1] -- register_copy + //SEG88 [50] phi (byte) current_xpos#62 = (byte~) current_xpos#93 [phi:main::@31->render_current#2] -- register_copy + //SEG89 [50] phi (byte) current_ypos#22 = (byte~) current_ypos#68 [phi:main::@31->render_current#3] -- register_copy + jsr render_current + jmp b32 + //SEG90 main::@32 + b32: + //SEG91 [48] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL jmp b10 - //SEG88 main::@10 + //SEG92 main::@10 b10: - //SEG89 [45] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG93 [49] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG90 [12] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + //SEG94 [16] phi from main::@10 to main::@1 [phi:main::@10->main::@1] b1_from_b10: - //SEG91 [12] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy - //SEG92 [12] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy - //SEG93 [12] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#2] -- register_copy - //SEG94 [12] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#3] -- register_copy - //SEG95 [12] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#4] -- register_copy - //SEG96 [12] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy - //SEG97 [12] phi (byte) current_piece_orientation#15 = (byte) current_piece_orientation#23 [phi:main::@10->main::@1#6] -- register_copy - //SEG98 [12] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy + //SEG95 [16] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy + //SEG96 [16] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy + //SEG97 [16] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#2] -- register_copy + //SEG98 [16] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#3] -- register_copy + //SEG99 [16] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#4] -- register_copy + //SEG100 [16] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy + //SEG101 [16] phi (byte) current_orientation#15 = (byte) current_orientation#23 [phi:main::@10->main::@1#6] -- register_copy + //SEG102 [16] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy jmp b1 } -//SEG99 render_current +//SEG103 render_current render_current: { .label ypos2 = 8 .label l = 9 .label screen_line = $16 .label xpos = $b .label i = $a - //SEG100 [47] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG104 [51] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta ypos2 - //SEG101 [48] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] + //SEG105 [52] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] b1_from_render_current: - //SEG102 [48] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 + //SEG106 [52] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG103 [48] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 + //SEG107 [52] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 lda #0 sta l - //SEG104 [48] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy + //SEG108 [52] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy jmp b1 - //SEG105 [48] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] + //SEG109 [52] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] b1_from_b2: - //SEG106 [48] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy - //SEG107 [48] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy - //SEG108 [48] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy + //SEG110 [52] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy + //SEG111 [52] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy + //SEG112 [52] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy jmp b1 - //SEG109 render_current::@1 + //SEG113 render_current::@1 b1: - //SEG110 [49] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 + //SEG114 [53] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcs b2_from_b1 jmp b6 - //SEG111 render_current::@6 + //SEG115 render_current::@6 b6: - //SEG112 [50] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG116 [54] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda screen_lines,y sta screen_line lda screen_lines+1,y sta screen_line+1 - //SEG113 [51] (byte) render_current::xpos#0 ← (byte) current_xpos#62 -- vbuz1=vbuz2 + //SEG117 [55] (byte) render_current::xpos#0 ← (byte) current_xpos#62 -- vbuz1=vbuz2 lda current_xpos_62 sta xpos - //SEG114 [52] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] + //SEG118 [56] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] b3_from_b6: - //SEG115 [52] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuxx=vbuc1 + //SEG119 [56] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG116 [52] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy - //SEG117 [52] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy + //SEG120 [56] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy + //SEG121 [56] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy jmp b3 - //SEG118 [52] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] + //SEG122 [56] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] b3_from_b4: - //SEG119 [52] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy - //SEG120 [52] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy - //SEG121 [52] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy + //SEG123 [56] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy + //SEG124 [56] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy + //SEG125 [56] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy jmp b3 - //SEG122 render_current::@3 + //SEG126 render_current::@3 b3: - //SEG123 [53] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#61 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG127 [57] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#62 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i - lda (current_piece_gfx_61),y - //SEG124 [54] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 + lda (current_piece_gfx_62),y + //SEG128 [58] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG125 [55] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuaa_eq_0_then_la1 + //SEG129 [59] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 jmp b7 - //SEG126 render_current::@7 + //SEG130 render_current::@7 b7: - //SEG127 [56] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 + //SEG131 [60] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 lda xpos cmp #PLAYFIELD_COLS bcs b4 jmp b8 - //SEG128 render_current::@8 + //SEG132 render_current::@8 b8: - //SEG129 [57] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#63 -- pbuz1_derefidx_vbuz2=vbuz3 - lda current_piece_color_63 + //SEG133 [61] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#64 -- pbuz1_derefidx_vbuz2=vbuz3 + lda current_piece_color_64 ldy xpos sta (screen_line),y jmp b4 - //SEG130 render_current::@4 + //SEG134 render_current::@4 b4: - //SEG131 [58] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG135 [62] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG132 [59] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx + //SEG136 [63] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG133 [60] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG137 [64] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b3_from_b4 - //SEG134 [61] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] + //SEG138 [65] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] b2_from_b1: b2_from_b4: - //SEG135 [61] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy + //SEG139 [65] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy jmp b2 - //SEG136 render_current::@2 + //SEG140 render_current::@2 b2: - //SEG137 [62] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG141 [66] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG138 [63] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 + //SEG142 [67] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 inc l - //SEG139 [64] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG143 [68] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1_from_b2 jmp breturn - //SEG140 render_current::@return + //SEG144 render_current::@return breturn: - //SEG141 [65] return + //SEG145 [69] return rts } -//SEG142 render_playfield +//SEG146 render_playfield render_playfield: { .label line = 5 .label i = 7 .label l = 4 - //SEG143 [67] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG147 [71] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG144 [67] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG148 [71] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG145 [67] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG149 [71] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #0 sta l jmp b1 - //SEG146 [67] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG150 [71] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG147 [67] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG148 [67] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG151 [71] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG152 [71] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG149 render_playfield::@1 + //SEG153 render_playfield::@1 b1: - //SEG150 [68] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + //SEG154 [72] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 lda l asl - //SEG151 [69] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuaa + //SEG155 [73] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines,y sta line lda screen_lines+1,y sta line+1 - //SEG152 [70] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG156 [74] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG153 [70] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuxx=vbuc1 + //SEG157 [74] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG154 [70] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG155 [70] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG158 [74] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG159 [74] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG156 [70] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG160 [74] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG157 [70] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG158 [70] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG159 [70] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG161 [74] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG162 [74] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG163 [74] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG160 render_playfield::@2 + //SEG164 render_playfield::@2 b2: - //SEG161 [71] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG165 [75] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 sta (line),y - //SEG162 [72] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 + //SEG166 [76] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 inc line bne !+ inc line+1 !: - //SEG163 [73] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG167 [77] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG164 [74] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuxx=_inc_vbuxx + //SEG168 [78] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuxx=_inc_vbuxx inx - //SEG165 [75] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG169 [79] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS-1+1 bne b2_from_b2 jmp b3 - //SEG166 render_playfield::@3 + //SEG170 render_playfield::@3 b3: - //SEG167 [76] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG171 [80] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG168 [77] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG172 [81] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1_from_b3 jmp breturn - //SEG169 render_playfield::@return + //SEG173 render_playfield::@return breturn: - //SEG170 [78] return + //SEG174 [82] return rts } -//SEG171 play_move_rotate +//SEG175 play_move_rotate play_move_rotate: { .label orientation = 4 - //SEG172 [79] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG176 [83] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_Z beq b1 jmp b6 - //SEG173 play_move_rotate::@6 + //SEG177 play_move_rotate::@6 b6: - //SEG174 [80] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + //SEG178 [84] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_X beq b2 - //SEG175 [81] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] + //SEG179 [85] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] breturn_from_b14: breturn_from_b6: - //SEG176 [81] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#17 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG177 [81] phi (byte) current_piece_orientation#23 = (byte) current_piece_orientation#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG178 [81] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG180 [85] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#17 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG181 [85] phi (byte) current_orientation#23 = (byte) current_orientation#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG182 [85] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #0 jmp breturn - //SEG179 play_move_rotate::@return + //SEG183 play_move_rotate::@return breturn: - //SEG180 [82] return + //SEG184 [86] return rts - //SEG181 play_move_rotate::@2 + //SEG185 play_move_rotate::@2 b2: - //SEG182 [83] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 + //SEG186 [87] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 lda #$10 clc - adc current_piece_orientation - //SEG183 [84] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + adc current_orientation + //SEG187 [88] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f sta orientation - //SEG184 [85] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] + //SEG188 [89] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] b4_from_b1: b4_from_b2: - //SEG185 [85] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy + //SEG189 [89] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy jmp b4 - //SEG186 play_move_rotate::@4 + //SEG190 play_move_rotate::@4 b4: - //SEG187 [86] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG191 [90] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 lda current_xpos sta collision.xpos - //SEG188 [87] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + //SEG192 [91] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuyy=vbuz1 ldy current_ypos - //SEG189 [88] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG193 [92] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG190 [89] (byte*~) current_piece#70 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG194 [93] (byte*~) current_piece#72 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece - sta current_piece_70 + sta current_piece_72 lda current_piece+1 - sta current_piece_70+1 - //SEG191 [90] call collision - //SEG192 [99] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] + sta current_piece_72+1 + //SEG195 [94] call collision + //SEG196 [102] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] collision_from_b4: - //SEG193 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy - //SEG194 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy - //SEG195 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy - //SEG196 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#70 [phi:play_move_rotate::@4->collision#3] -- register_copy + //SEG197 [102] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy + //SEG198 [102] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy + //SEG199 [102] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy + //SEG200 [102] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_rotate::@4->collision#3] -- register_copy jsr collision - //SEG197 [91] (byte) collision::return#13 ← (byte) collision::return#14 + //SEG201 [95] (byte) collision::return#13 ← (byte) collision::return#14 // (byte) collision::return#13 = (byte) collision::return#14 // register copy reg byte a jmp b14 - //SEG198 play_move_rotate::@14 + //SEG202 play_move_rotate::@14 b14: - //SEG199 [92] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 + //SEG203 [96] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 // (byte~) play_move_rotate::$6 = (byte) collision::return#13 // register copy reg byte a - //SEG200 [93] (byte~) play_move_rotate::$8 ← (byte~) play_move_rotate::$6 & (const byte) COLLISION_LEFT#0|(const byte) COLLISION_RIGHT#0 -- vbuaa=vbuaa_band_vbuc1 - and #COLLISION_LEFT|COLLISION_RIGHT - //SEG201 [94] if((byte~) play_move_rotate::$8!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@return -- vbuaa_neq_0_then_la1 + //SEG204 [97] if((byte~) play_move_rotate::$6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@return -- vbuaa_neq_0_then_la1 cmp #0 bne breturn_from_b14 jmp b11 - //SEG202 play_move_rotate::@11 + //SEG205 play_move_rotate::@11 b11: - //SEG203 [95] (byte) current_piece_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG206 [98] (byte) current_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation - sta current_piece_orientation - //SEG204 [96] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_piece_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 - lda current_piece_orientation + sta current_orientation + //SEG207 [99] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 + lda current_orientation clc adc current_piece sta current_piece_gfx lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG205 [81] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG208 [85] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] breturn_from_b11: - //SEG206 [81] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG207 [81] phi (byte) current_piece_orientation#23 = (byte) current_piece_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG208 [81] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG209 [85] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG210 [85] phi (byte) current_orientation#23 = (byte) current_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG211 [85] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #1 jmp breturn - //SEG209 play_move_rotate::@1 + //SEG212 play_move_rotate::@1 b1: - //SEG210 [97] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 - lda current_piece_orientation + //SEG213 [100] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 + lda current_orientation sec sbc #$10 - //SEG211 [98] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG214 [101] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f sta orientation jmp b4_from_b1 } -//SEG212 collision +//SEG215 collision collision: { .label xpos = 7 .label piece_gfx = 5 @@ -8549,7 +9011,7 @@ collision: { .label i_3 = $a .label i_11 = $a .label i_13 = $a - //SEG213 [100] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx + //SEG216 [103] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -8557,953 +9019,1030 @@ collision: { lda #0 adc piece_gfx+1 sta piece_gfx+1 - //SEG214 [101] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 + //SEG217 [104] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 tya asl sta ypos2 - //SEG215 [102] phi from collision to collision::@1 [phi:collision->collision::@1] + //SEG218 [105] phi from collision to collision::@1 [phi:collision->collision::@1] b1_from_collision: - //SEG216 [102] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 + //SEG219 [105] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG217 [102] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 + //SEG220 [105] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG218 [102] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy + //SEG221 [105] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy jmp b1 - //SEG219 collision::@1 + //SEG222 collision::@1 b1: - //SEG220 [103] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG223 [106] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG221 [104] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 + //SEG224 [107] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 lda xpos sta col - //SEG222 [105] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] + //SEG225 [108] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] b2_from_b1: - //SEG223 [105] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuxx=vbuc1 + //SEG226 [108] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG224 [105] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy - //SEG225 [105] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy + //SEG227 [108] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy + //SEG228 [108] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy jmp b2 - //SEG226 collision::@2 + //SEG229 collision::@2 b2: - //SEG227 [106] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG230 [109] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG228 [107] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG231 [110] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 jmp b8 - //SEG229 collision::@8 + //SEG232 collision::@8 b8: - //SEG230 [108] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG233 [111] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG231 [109] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] + //SEG234 [112] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] breturn_from_b8: - //SEG232 [109] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuaa=vbuc1 + //SEG235 [112] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM jmp breturn - //SEG233 collision::@return + //SEG236 collision::@return breturn: - //SEG234 [110] return + //SEG237 [113] return rts - //SEG235 collision::@4 + //SEG238 collision::@4 b4: - //SEG236 [111] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG239 [114] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and col - //SEG237 [112] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuaa_eq_0_then_la1 + //SEG240 [115] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG238 [109] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] + //SEG241 [112] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] breturn_from_b4: - //SEG239 [109] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuaa=vbuc1 + //SEG242 [112] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT jmp breturn - //SEG240 collision::@5 + //SEG243 collision::@5 b5: - //SEG241 [113] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG244 [116] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG242 [109] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] + //SEG245 [112] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] breturn_from_b5: - //SEG243 [109] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuaa=vbuc1 + //SEG246 [112] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT jmp breturn - //SEG244 collision::@6 + //SEG247 collision::@6 b6: - //SEG245 [114] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG248 [117] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG246 [109] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] + //SEG249 [112] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] breturn_from_b6: - //SEG247 [109] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuaa=vbuc1 + //SEG250 [112] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD jmp breturn - //SEG248 collision::@3 + //SEG251 collision::@3 b3: - //SEG249 [115] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG252 [118] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG250 [116] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuxx=_inc_vbuxx + //SEG253 [119] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG251 [117] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuxx_neq_vbuc1_then_la1 + //SEG254 [120] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b21 jmp b17 - //SEG252 collision::@17 + //SEG255 collision::@17 b17: - //SEG253 [118] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG256 [121] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG254 [119] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG257 [122] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG255 [120] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG258 [123] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG256 [109] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] + //SEG259 [112] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] breturn_from_b17: - //SEG257 [109] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuaa=vbuc1 + //SEG260 [112] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE jmp breturn - //SEG258 collision::@20 + //SEG261 collision::@20 b20: - //SEG259 [121] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG262 [124] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG260 [102] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] + //SEG263 [105] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] b1_from_b20: - //SEG261 [102] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy - //SEG262 [102] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy - //SEG263 [102] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy + //SEG264 [105] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy + //SEG265 [105] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy + //SEG266 [105] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy jmp b1 - //SEG264 collision::@21 + //SEG267 collision::@21 b21: - //SEG265 [122] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG268 [125] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG266 [105] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] + //SEG269 [108] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] b2_from_b21: - //SEG267 [105] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy - //SEG268 [105] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy - //SEG269 [105] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy + //SEG270 [108] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy + //SEG271 [108] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy + //SEG272 [108] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy jmp b2 } -//SEG270 play_move_leftright +//SEG273 play_move_leftright play_move_leftright: { - //SEG271 [123] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG274 [126] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_COMMA beq b1 jmp b6 - //SEG272 play_move_leftright::@6 + //SEG275 play_move_leftright::@6 b6: - //SEG273 [124] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG276 [127] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_DOT bne breturn_from_b6 jmp b7 - //SEG274 play_move_leftright::@7 + //SEG277 play_move_leftright::@7 b7: - //SEG275 [125] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG278 [128] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty collision.xpos - //SEG276 [126] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + //SEG279 [129] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuyy=vbuz1 ldy current_ypos - //SEG277 [127] (byte) collision::orientation#2 ← (byte) current_piece_orientation#18 -- vbuxx=vbuz1 - ldx current_piece_orientation - //SEG278 [128] (byte*~) current_piece#69 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG280 [130] (byte) collision::orientation#2 ← (byte) current_orientation#18 -- vbuxx=vbuz1 + ldx current_orientation + //SEG281 [131] (byte*~) current_piece#71 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_71 + lda current_piece+1 + sta current_piece_71+1 + //SEG282 [132] call collision + //SEG283 [102] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] + collision_from_b7: + //SEG284 [102] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy + //SEG285 [102] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy + //SEG286 [102] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy + //SEG287 [102] phi (byte*) current_piece#15 = (byte*~) current_piece#71 [phi:play_move_leftright::@7->collision#3] -- register_copy + jsr collision + //SEG288 [133] (byte) collision::return#12 ← (byte) collision::return#14 + // (byte) collision::return#12 = (byte) collision::return#14 // register copy reg byte a + jmp b15 + //SEG289 play_move_leftright::@15 + b15: + //SEG290 [134] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 + // (byte~) play_move_leftright::$4 = (byte) collision::return#12 // register copy reg byte a + //SEG291 [135] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + cmp #COLLISION_NONE + bne breturn_from_b15 + jmp b8 + //SEG292 play_move_leftright::@8 + b8: + //SEG293 [136] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 + inc current_xpos + //SEG294 [137] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] + breturn_from_b11: + breturn_from_b8: + //SEG295 [137] phi (byte) current_xpos#23 = (byte) current_xpos#9 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG296 [137] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 + lda #1 + jmp breturn + //SEG297 [137] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] + breturn_from_b14: + breturn_from_b15: + breturn_from_b6: + //SEG298 [137] phi (byte) current_xpos#23 = (byte) current_xpos#19 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG299 [137] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 + lda #0 + jmp breturn + //SEG300 play_move_leftright::@return + breturn: + //SEG301 [138] return + rts + //SEG302 play_move_leftright::@1 + b1: + //SEG303 [139] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + ldx current_xpos + dex + stx collision.xpos + //SEG304 [140] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + ldy current_ypos + //SEG305 [141] (byte) collision::orientation#1 ← (byte) current_orientation#18 -- vbuxx=vbuz1 + ldx current_orientation + //SEG306 [142] (byte*~) current_piece#70 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_70 + lda current_piece+1 + sta current_piece_70+1 + //SEG307 [143] call collision + //SEG308 [102] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] + collision_from_b1: + //SEG309 [102] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy + //SEG310 [102] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy + //SEG311 [102] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy + //SEG312 [102] phi (byte*) current_piece#15 = (byte*~) current_piece#70 [phi:play_move_leftright::@1->collision#3] -- register_copy + jsr collision + //SEG313 [144] (byte) collision::return#1 ← (byte) collision::return#14 + // (byte) collision::return#1 = (byte) collision::return#14 // register copy reg byte a + jmp b14 + //SEG314 play_move_leftright::@14 + b14: + //SEG315 [145] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 + // (byte~) play_move_leftright::$8 = (byte) collision::return#1 // register copy reg byte a + //SEG316 [146] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + cmp #COLLISION_NONE + bne breturn_from_b14 + jmp b11 + //SEG317 play_move_leftright::@11 + b11: + //SEG318 [147] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 + dec current_xpos + jmp breturn_from_b11 +} +//SEG319 play_move_down +play_move_down: { + //SEG320 [148] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 + inc current_movedown_counter + //SEG321 [149] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 + cmp #KEY_SPACE + bne b1_from_play_move_down + //SEG322 [150] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + b8_from_play_move_down: + jmp b8 + //SEG323 play_move_down::@8 + b8: + //SEG324 [151] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + b1_from_b8: + //SEG325 [151] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 + ldx #1 + jmp b1 + //SEG326 [151] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + b1_from_play_move_down: + //SEG327 [151] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 + ldx #0 + jmp b1 + //SEG328 play_move_down::@1 + b1: + //SEG329 [152] call keyboard_event_pressed + //SEG330 [212] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + keyboard_event_pressed_from_b1: + //SEG331 [212] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + lda #KEY_SPACE + sta keyboard_event_pressed.keycode + jsr keyboard_event_pressed + //SEG332 [153] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + // (byte) keyboard_event_pressed::return#12 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a + jmp b17 + //SEG333 play_move_down::@17 + b17: + //SEG334 [154] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + // (byte~) play_move_down::$2 = (byte) keyboard_event_pressed::return#12 // register copy reg byte a + //SEG335 [155] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 + cmp #0 + beq b2_from_b17 + jmp b9 + //SEG336 play_move_down::@9 + b9: + //SEG337 [156] if((byte) current_movedown_counter#10<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + lda current_movedown_counter + cmp #current_movedown_fast + bcc b2_from_b9 + jmp b10 + //SEG338 play_move_down::@10 + b10: + //SEG339 [157] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx + inx + //SEG340 [158] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] + b2_from_b10: + b2_from_b17: + b2_from_b9: + //SEG341 [158] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy + jmp b2 + //SEG342 play_move_down::@2 + b2: + //SEG343 [159] if((byte) current_movedown_counter#10<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 + lda current_movedown_counter + cmp #current_movedown_slow + bcc b4_from_b2 + jmp b11 + //SEG344 play_move_down::@11 + b11: + //SEG345 [160] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx + inx + //SEG346 [161] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] + b4_from_b11: + b4_from_b2: + //SEG347 [161] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy + jmp b4 + //SEG348 play_move_down::@4 + b4: + //SEG349 [162] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 + cpx #0 + beq breturn_from_b4 + jmp b12 + //SEG350 play_move_down::@12 + b12: + //SEG351 [163] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 + ldy current_ypos + iny + //SEG352 [164] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + lda current_xpos + sta collision.xpos + //SEG353 [165] (byte) collision::orientation#0 ← (byte) current_orientation#15 -- vbuxx=vbuz1 + ldx current_orientation + //SEG354 [166] (byte*~) current_piece#69 ← (byte*) current_piece#11 -- pbuz1=pbuz2 lda current_piece sta current_piece_69 lda current_piece+1 sta current_piece_69+1 - //SEG279 [129] call collision - //SEG280 [99] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] - collision_from_b7: - //SEG281 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy - //SEG282 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy - //SEG283 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy - //SEG284 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#69 [phi:play_move_leftright::@7->collision#3] -- register_copy - jsr collision - //SEG285 [130] (byte) collision::return#12 ← (byte) collision::return#14 - // (byte) collision::return#12 = (byte) collision::return#14 // register copy reg byte a - jmp b15 - //SEG286 play_move_leftright::@15 - b15: - //SEG287 [131] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 - // (byte~) play_move_leftright::$4 = (byte) collision::return#12 // register copy reg byte a - //SEG288 [132] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 - cmp #COLLISION_NONE - bne breturn_from_b15 - jmp b8 - //SEG289 play_move_leftright::@8 - b8: - //SEG290 [133] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 - inc current_xpos - //SEG291 [134] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] - breturn_from_b11: - breturn_from_b8: - //SEG292 [134] phi (byte) current_xpos#23 = (byte) current_xpos#9 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG293 [134] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 - lda #1 - jmp breturn - //SEG294 [134] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] - breturn_from_b14: - breturn_from_b15: - breturn_from_b6: - //SEG295 [134] phi (byte) current_xpos#23 = (byte) current_xpos#19 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG296 [134] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 - lda #0 - jmp breturn - //SEG297 play_move_leftright::@return - breturn: - //SEG298 [135] return - rts - //SEG299 play_move_leftright::@1 - b1: - //SEG300 [136] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 - ldx current_xpos - dex - stx collision.xpos - //SEG301 [137] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuyy=vbuz1 - ldy current_ypos - //SEG302 [138] (byte) collision::orientation#1 ← (byte) current_piece_orientation#18 -- vbuxx=vbuz1 - ldx current_piece_orientation - //SEG303 [139] (byte*~) current_piece#68 ← (byte*) current_piece#13 -- pbuz1=pbuz2 - lda current_piece - sta current_piece_68 - lda current_piece+1 - sta current_piece_68+1 - //SEG304 [140] call collision - //SEG305 [99] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] - collision_from_b1: - //SEG306 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy - //SEG307 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy - //SEG308 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy - //SEG309 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#68 [phi:play_move_leftright::@1->collision#3] -- register_copy - jsr collision - //SEG310 [141] (byte) collision::return#1 ← (byte) collision::return#14 - // (byte) collision::return#1 = (byte) collision::return#14 // register copy reg byte a - jmp b14 - //SEG311 play_move_leftright::@14 - b14: - //SEG312 [142] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 - // (byte~) play_move_leftright::$8 = (byte) collision::return#1 // register copy reg byte a - //SEG313 [143] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 - cmp #COLLISION_NONE - bne breturn_from_b14 - jmp b11 - //SEG314 play_move_leftright::@11 - b11: - //SEG315 [144] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 - dec current_xpos - jmp breturn_from_b11 -} -//SEG316 play_move_down -play_move_down: { - //SEG317 [145] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 - inc current_movedown_counter - //SEG318 [146] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 - cmp #KEY_SPACE - bne b1_from_play_move_down - //SEG319 [147] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] - b8_from_play_move_down: - jmp b8 - //SEG320 play_move_down::@8 - b8: - //SEG321 [148] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] - b1_from_b8: - //SEG322 [148] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 - ldx #1 - jmp b1 - //SEG323 [148] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] - b1_from_play_move_down: - //SEG324 [148] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 - ldx #0 - jmp b1 - //SEG325 play_move_down::@1 - b1: - //SEG326 [149] call keyboard_event_pressed - //SEG327 [194] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] - keyboard_event_pressed_from_b1: - //SEG328 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 - lda #KEY_SPACE - sta keyboard_event_pressed.keycode - jsr keyboard_event_pressed - //SEG329 [150] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 - // (byte) keyboard_event_pressed::return#12 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - jmp b17 - //SEG330 play_move_down::@17 - b17: - //SEG331 [151] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - // (byte~) play_move_down::$2 = (byte) keyboard_event_pressed::return#12 // register copy reg byte a - //SEG332 [152] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 - cmp #0 - beq b2_from_b17 - jmp b9 - //SEG333 play_move_down::@9 - b9: - //SEG334 [153] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 - lda current_movedown_counter - cmp #current_movedown_rate_fast - bcc b2_from_b9 - jmp b10 - //SEG335 play_move_down::@10 - b10: - //SEG336 [154] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx - inx - //SEG337 [155] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] - b2_from_b10: - b2_from_b17: - b2_from_b9: - //SEG338 [155] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy - jmp b2 - //SEG339 play_move_down::@2 - b2: - //SEG340 [156] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 - lda current_movedown_counter - cmp #current_movedown_rate - bcc b4_from_b2 - jmp b11 - //SEG341 play_move_down::@11 - b11: - //SEG342 [157] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx - inx - //SEG343 [158] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] - b4_from_b11: - b4_from_b2: - //SEG344 [158] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy - jmp b4 - //SEG345 play_move_down::@4 - b4: - //SEG346 [159] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 - cpx #0 - beq breturn_from_b4 - jmp b12 - //SEG347 play_move_down::@12 - b12: - //SEG348 [160] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 - ldy current_ypos - iny - //SEG349 [161] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 - lda current_xpos - sta collision.xpos - //SEG350 [162] (byte) collision::orientation#0 ← (byte) current_piece_orientation#15 -- vbuxx=vbuz1 - ldx current_piece_orientation - //SEG351 [163] (byte*~) current_piece#67 ← (byte*) current_piece#11 -- pbuz1=pbuz2 - lda current_piece - sta current_piece_67 - lda current_piece+1 - sta current_piece_67+1 - //SEG352 [164] call collision - //SEG353 [99] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] + //SEG355 [167] call collision + //SEG356 [102] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] collision_from_b12: - //SEG354 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy - //SEG355 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy - //SEG356 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy - //SEG357 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#67 [phi:play_move_down::@12->collision#3] -- register_copy + //SEG357 [102] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy + //SEG358 [102] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy + //SEG359 [102] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy + //SEG360 [102] phi (byte*) current_piece#15 = (byte*~) current_piece#69 [phi:play_move_down::@12->collision#3] -- register_copy jsr collision - //SEG358 [165] (byte) collision::return#0 ← (byte) collision::return#14 + //SEG361 [168] (byte) collision::return#0 ← (byte) collision::return#14 // (byte) collision::return#0 = (byte) collision::return#14 // register copy reg byte a jmp b18 - //SEG359 play_move_down::@18 + //SEG362 play_move_down::@18 b18: - //SEG360 [166] (byte~) play_move_down::$12 ← (byte) collision::return#0 + //SEG363 [169] (byte~) play_move_down::$12 ← (byte) collision::return#0 // (byte~) play_move_down::$12 = (byte) collision::return#0 // register copy reg byte a - //SEG361 [167] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 + //SEG364 [170] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 cmp #COLLISION_NONE beq b6 - //SEG362 [168] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG365 [171] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] b13_from_b18: jmp b13 - //SEG363 play_move_down::@13 + //SEG366 play_move_down::@13 b13: - //SEG364 [169] call lock_current - //SEG365 [178] phi from play_move_down::@13 to lock_current [phi:play_move_down::@13->lock_current] - lock_current_from_b13: + //SEG367 [172] call lock_current jsr lock_current - //SEG366 [170] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG368 [173] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] b19_from_b13: jmp b19 - //SEG367 play_move_down::@19 + //SEG369 play_move_down::@19 b19: - //SEG368 [171] call spawn_current - //SEG369 [176] phi from play_move_down::@19 to spawn_current [phi:play_move_down::@19->spawn_current] - spawn_current_from_b19: + //SEG370 [174] call spawn_current jsr spawn_current - //SEG370 [172] phi from play_move_down::@19 to play_move_down::@7 [phi:play_move_down::@19->play_move_down::@7] + //SEG371 [175] (byte*~) current_piece#73 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + ldy spawn_current._3 + lda PIECES,y + sta current_piece + lda PIECES+1,y + sta current_piece+1 + //SEG372 [176] phi from play_move_down::@19 to play_move_down::@7 [phi:play_move_down::@19->play_move_down::@7] b7_from_b19: - //SEG371 [172] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@19->play_move_down::@7#0] -- vbuz1=vbuc1 + //SEG373 [176] phi (byte) current_piece_color#23 = (byte) current_piece_color#15 [phi:play_move_down::@19->play_move_down::@7#0] -- register_copy + //SEG374 [176] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@19->play_move_down::@7#1] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG372 [172] phi (byte) current_piece_color#23 = (const byte) GREEN#0 [phi:play_move_down::@19->play_move_down::@7#1] -- vbuz1=vbuc1 - lda #GREEN - sta current_piece_color - //SEG373 [172] phi (byte*) current_piece_gfx#29 = (const byte[4*4*4]) piece_t#0 [phi:play_move_down::@19->play_move_down::@7#2] -- pbuz1=pbuc1 - lda #piece_t - sta current_piece_gfx+1 - //SEG374 [172] phi (byte) current_piece_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#3] -- vbuz1=vbuc1 + //SEG375 [176] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#10 [phi:play_move_down::@19->play_move_down::@7#2] -- register_copy + //SEG376 [176] phi (byte) current_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 - sta current_piece_orientation - //SEG375 [172] phi (byte*) current_piece#23 = (const byte[4*4*4]) piece_t#0 [phi:play_move_down::@19->play_move_down::@7#4] -- pbuz1=pbuc1 - lda #piece_t - sta current_piece+1 - //SEG376 [172] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#5] -- vbuz1=vbuc1 + sta current_orientation + //SEG377 [176] phi (byte*) current_piece#23 = (byte*~) current_piece#73 [phi:play_move_down::@19->play_move_down::@7#4] -- register_copy + //SEG378 [176] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#5] -- vbuz1=vbuc1 lda #0 sta current_ypos jmp b7 - //SEG377 play_move_down::@7 + //SEG379 play_move_down::@7 b7: - //SEG378 [173] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG380 [177] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] breturn_from_b7: - //SEG379 [173] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG380 [173] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG381 [173] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG382 [173] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG383 [173] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG384 [173] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG385 [173] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 + //SEG381 [177] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG382 [177] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG383 [177] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG384 [177] phi (byte) current_orientation#18 = (byte) current_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG385 [177] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG386 [177] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG387 [177] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG386 [173] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuxx=vbuc1 + //SEG388 [177] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuxx=vbuc1 ldx #1 jmp breturn - //SEG387 [173] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG389 [177] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] breturn_from_b4: - //SEG388 [173] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG389 [173] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG390 [173] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG391 [173] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG392 [173] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG393 [173] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG394 [173] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG395 [173] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuxx=vbuc1 + //SEG390 [177] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG391 [177] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG392 [177] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG393 [177] phi (byte) current_orientation#18 = (byte) current_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG394 [177] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG395 [177] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG396 [177] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG397 [177] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuxx=vbuc1 ldx #0 jmp breturn - //SEG396 play_move_down::@return + //SEG398 play_move_down::@return breturn: - //SEG397 [174] return + //SEG399 [178] return rts - //SEG398 play_move_down::@6 + //SEG400 play_move_down::@6 b6: - //SEG399 [175] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 + //SEG401 [179] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG400 [172] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG402 [176] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] b7_from_b6: - //SEG401 [172] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG402 [172] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG403 [172] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG404 [172] phi (byte) current_piece_orientation#33 = (byte) current_piece_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG405 [172] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG406 [172] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG403 [176] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG404 [176] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG405 [176] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG406 [176] phi (byte) current_orientation#33 = (byte) current_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG407 [176] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG408 [176] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG407 spawn_current +//SEG409 spawn_current spawn_current: { + .label _3 = 2 + //SEG410 [180] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + inc BORDERCOL + //SEG411 [181] phi from spawn_current to spawn_current::@1 [phi:spawn_current->spawn_current::@1] + b1_from_spawn_current: + //SEG412 [181] phi (byte) spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:spawn_current->spawn_current::@1#0] -- vbuxx=vbuc1 + ldx #7 + jmp b1 + //SEG413 spawn_current::@1 + b1: + //SEG414 [182] if((byte) spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto spawn_current::@2 -- vbuxx_eq_vbuc1_then_la1 + cpx #7 + beq b2_from_b1 + jmp b3 + //SEG415 spawn_current::@3 + b3: + //SEG416 [183] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + dec BORDERCOL + //SEG417 [184] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + txa + asl + sta _3 + //SEG418 [185] (byte*) current_piece_gfx#10 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 + ldy _3 + lda PIECES,y + sta current_piece_gfx + lda PIECES+1,y + sta current_piece_gfx+1 + //SEG419 [186] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + lda PIECES_COLORS,x + sta current_piece_color jmp breturn - //SEG408 spawn_current::@return + //SEG420 spawn_current::@return breturn: - //SEG409 [177] return + //SEG421 [187] return + rts + //SEG422 [188] phi from spawn_current::@1 to spawn_current::@2 [phi:spawn_current::@1->spawn_current::@2] + b2_from_b1: + jmp b2 + //SEG423 spawn_current::@2 + b2: + //SEG424 [189] call sid_rnd + jsr sid_rnd + //SEG425 [190] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + // (byte) sid_rnd::return#2 = (byte) sid_rnd::return#0 // register copy reg byte a + jmp b7 + //SEG426 spawn_current::@7 + b7: + //SEG427 [191] (byte~) spawn_current::$1 ← (byte) sid_rnd::return#2 + // (byte~) spawn_current::$1 = (byte) sid_rnd::return#2 // register copy reg byte a + //SEG428 [192] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 + and #7 + tax + //SEG429 [181] phi from spawn_current::@7 to spawn_current::@1 [phi:spawn_current::@7->spawn_current::@1] + b1_from_b7: + //SEG430 [181] phi (byte) spawn_current::piece_idx#2 = (byte) spawn_current::piece_idx#1 [phi:spawn_current::@7->spawn_current::@1#0] -- register_copy + jmp b1 +} +//SEG431 sid_rnd +sid_rnd: { + //SEG432 [193] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + lda SID_VOICE3_OSC + jmp breturn + //SEG433 sid_rnd::@return + breturn: + //SEG434 [194] return rts } -//SEG410 lock_current +//SEG435 lock_current lock_current: { + .label ypos2 = 2 .label playfield_line = 5 - .label i = 4 + .label col = 7 + .label i = 8 .label l = 3 - //SEG411 [179] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] + .label i_2 = 4 + .label i_3 = 4 + .label i_7 = 4 + .label i_9 = 4 + //SEG436 [195] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + asl ypos2 + //SEG437 [196] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] b1_from_lock_current: - //SEG412 [179] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 - lda #0 - sta i - //SEG413 [179] phi (byte) lock_current::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 + //SEG438 [196] phi (byte) lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l + //SEG439 [196] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 + lda #0 + sta i_3 + //SEG440 [196] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy jmp b1 - //SEG414 [179] phi from lock_current::@5 to lock_current::@1 [phi:lock_current::@5->lock_current::@1] - b1_from_b5: - //SEG415 [179] phi (byte) lock_current::i#3 = (byte) lock_current::i#1 [phi:lock_current::@5->lock_current::@1#0] -- register_copy - //SEG416 [179] phi (byte) lock_current::l#2 = (byte) lock_current::l#1 [phi:lock_current::@5->lock_current::@1#1] -- register_copy - jmp b1 - //SEG417 lock_current::@1 + //SEG441 lock_current::@1 b1: - //SEG418 [180] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 -- vbuaa=vbuz1_plus_vbuz2 - lda current_ypos - clc - adc l - //SEG419 [181] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_rol_1 - asl - //SEG420 [182] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) -- pbuz1=pptc1_derefidx_vbuaa - tay + //SEG442 [197] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG421 [183] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] + //SEG443 [198] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + lda current_xpos + sta col + //SEG444 [199] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] b2_from_b1: - //SEG422 [183] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuxx=vbuc1 + //SEG445 [199] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG423 [183] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#1] -- register_copy + //SEG446 [199] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy + //SEG447 [199] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy jmp b2 - //SEG424 [183] phi from lock_current::@3 to lock_current::@2 [phi:lock_current::@3->lock_current::@2] - b2_from_b3: - //SEG425 [183] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@3->lock_current::@2#0] -- register_copy - //SEG426 [183] phi (byte) lock_current::i#2 = (byte) lock_current::i#1 [phi:lock_current::@3->lock_current::@2#1] -- register_copy - jmp b2 - //SEG427 lock_current::@2 + //SEG448 lock_current::@2 b2: - //SEG428 [184] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#15 + (byte) lock_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 - ldy i + //SEG449 [200] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 + ldy i_2 + iny + sty i + //SEG450 [201] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + ldy i_2 lda (current_piece_gfx),y - //SEG429 [185] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz1 - inc i - //SEG430 [186] if((byte) lock_current::cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 jmp b4 - //SEG431 lock_current::@4 + //SEG451 lock_current::@4 b4: - //SEG432 [187] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 -- vbuaa=vbuz1_plus_vbuxx - txa - clc - adc current_xpos - //SEG433 [188] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuaa=vbuz2 - tay + //SEG452 [202] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_color + ldy col sta (playfield_line),y jmp b3 - //SEG434 lock_current::@3 + //SEG453 lock_current::@3 b3: - //SEG435 [189] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG454 [203] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 + inc col + //SEG455 [204] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG436 [190] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG456 [205] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #4 - bne b2_from_b3 + bne b8 jmp b5 - //SEG437 lock_current::@5 + //SEG457 lock_current::@5 b5: - //SEG438 [191] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#2 -- vbuz1=_inc_vbuz1 + //SEG458 [206] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + lda ypos2 + clc + adc #2 + sta ypos2 + //SEG459 [207] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG439 [192] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG460 [208] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 - bne b1_from_b5 + bne b7 jmp breturn - //SEG440 lock_current::@return + //SEG461 lock_current::@return breturn: - //SEG441 [193] return + //SEG462 [209] return rts + //SEG463 lock_current::@7 + b7: + //SEG464 [210] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + lda i + sta i_7 + //SEG465 [196] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] + b1_from_b7: + //SEG466 [196] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy + //SEG467 [196] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy + //SEG468 [196] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy + jmp b1 + //SEG469 lock_current::@8 + b8: + //SEG470 [211] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + lda i + sta i_9 + //SEG471 [199] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] + b2_from_b8: + //SEG472 [199] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy + //SEG473 [199] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy + //SEG474 [199] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy + jmp b2 } -//SEG442 keyboard_event_pressed +//SEG475 keyboard_event_pressed keyboard_event_pressed: { .label row_bits = 7 .label keycode = 4 - //SEG443 [195] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 + //SEG476 [213] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 lda keycode lsr lsr lsr - //SEG444 [196] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG477 [214] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda keyboard_scan_values,y sta row_bits - //SEG445 [197] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 + //SEG478 [215] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 lda #7 and keycode - //SEG446 [198] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa + //SEG479 [216] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa tay lda keyboard_matrix_col_bitmask,y and row_bits jmp breturn - //SEG447 keyboard_event_pressed::@return + //SEG480 keyboard_event_pressed::@return breturn: - //SEG448 [199] return + //SEG481 [217] return rts } -//SEG449 keyboard_event_get +//SEG482 keyboard_event_get keyboard_event_get: { - //SEG450 [200] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + //SEG483 [218] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq breturn_from_keyboard_event_get jmp b3 - //SEG451 keyboard_event_get::@3 + //SEG484 keyboard_event_get::@3 b3: - //SEG452 [201] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG485 [219] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG453 [202] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG486 [220] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 ldy keyboard_events_size lda keyboard_events,y - //SEG454 [203] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG487 [221] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG455 [203] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG456 [203] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy + //SEG488 [221] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG489 [221] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG457 [203] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG490 [221] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG458 [203] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG459 [203] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 + //SEG491 [221] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG492 [221] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 lda #$ff jmp breturn - //SEG460 keyboard_event_get::@return + //SEG493 keyboard_event_get::@return breturn: - //SEG461 [204] return + //SEG494 [222] return rts } -//SEG462 keyboard_event_scan +//SEG495 keyboard_event_scan keyboard_event_scan: { .label row_scan = 8 .label keycode = 7 .label row = 4 - //SEG463 [206] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG496 [224] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG464 [206] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG465 [206] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 + //SEG497 [224] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG498 [224] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG466 [206] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 + //SEG499 [224] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 lda #0 sta row jmp b1 - //SEG467 [206] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG500 [224] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG468 [206] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG469 [206] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy - //SEG470 [206] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy + //SEG501 [224] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG502 [224] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG503 [224] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy jmp b1 - //SEG471 keyboard_event_scan::@1 + //SEG504 keyboard_event_scan::@1 b1: - //SEG472 [207] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG505 [225] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG473 [208] call keyboard_matrix_read + //SEG506 [226] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG474 [209] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG507 [227] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 // (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#0 // register copy reg byte a jmp b25 - //SEG475 keyboard_event_scan::@25 + //SEG508 keyboard_event_scan::@25 b25: - //SEG476 [210] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG509 [228] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG477 [211] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG510 [229] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda row_scan ldy row cmp keyboard_scan_values,y bne b4_from_b25 jmp b13 - //SEG478 keyboard_event_scan::@13 + //SEG511 keyboard_event_scan::@13 b13: - //SEG479 [212] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 + //SEG512 [230] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG480 [213] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] + //SEG513 [231] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] b3_from_b13: b3_from_b19: - //SEG481 [213] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG482 [213] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy + //SEG514 [231] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG515 [231] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy jmp b3 - //SEG483 keyboard_event_scan::@3 + //SEG516 keyboard_event_scan::@3 b3: - //SEG484 [214] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG517 [232] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG485 [215] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG518 [233] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1_from_b3 - //SEG486 [216] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG519 [234] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] b20_from_b3: jmp b20 - //SEG487 keyboard_event_scan::@20 + //SEG520 keyboard_event_scan::@20 b20: - //SEG488 [217] call keyboard_event_pressed - //SEG489 [194] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG521 [235] call keyboard_event_pressed + //SEG522 [212] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG490 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG523 [212] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG491 [218] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG524 [236] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b26 - //SEG492 keyboard_event_scan::@26 + //SEG525 keyboard_event_scan::@26 b26: - //SEG493 [219] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG526 [237] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 // (byte~) keyboard_event_scan::$14 = (byte) keyboard_event_pressed::return#0 // register copy reg byte a - //SEG494 [220] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 + //SEG527 [238] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 cmp #0 beq b9_from_b26 - //SEG495 [221] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG528 [239] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] b21_from_b26: jmp b21 - //SEG496 keyboard_event_scan::@21 + //SEG529 keyboard_event_scan::@21 b21: - //SEG497 [222] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG530 [240] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] b9_from_b21: b9_from_b26: jmp b9 - //SEG498 keyboard_event_scan::@9 + //SEG531 keyboard_event_scan::@9 b9: - //SEG499 [223] call keyboard_event_pressed - //SEG500 [194] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG532 [241] call keyboard_event_pressed + //SEG533 [212] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG501 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG534 [212] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG502 [224] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG535 [242] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b27 - //SEG503 keyboard_event_scan::@27 + //SEG536 keyboard_event_scan::@27 b27: - //SEG504 [225] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG537 [243] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 // (byte~) keyboard_event_scan::$18 = (byte) keyboard_event_pressed::return#1 // register copy reg byte a - //SEG505 [226] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 + //SEG538 [244] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10_from_b27 - //SEG506 [227] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] + //SEG539 [245] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] b22_from_b27: jmp b22 - //SEG507 keyboard_event_scan::@22 + //SEG540 keyboard_event_scan::@22 b22: - //SEG508 [228] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] + //SEG541 [246] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] b10_from_b22: b10_from_b27: jmp b10 - //SEG509 keyboard_event_scan::@10 + //SEG542 keyboard_event_scan::@10 b10: - //SEG510 [229] call keyboard_event_pressed - //SEG511 [194] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG543 [247] call keyboard_event_pressed + //SEG544 [212] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG512 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG545 [212] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG513 [230] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG546 [248] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b28 - //SEG514 keyboard_event_scan::@28 + //SEG547 keyboard_event_scan::@28 b28: - //SEG515 [231] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG548 [249] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 // (byte~) keyboard_event_scan::$22 = (byte) keyboard_event_pressed::return#2 // register copy reg byte a - //SEG516 [232] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 + //SEG549 [250] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11_from_b28 - //SEG517 [233] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] + //SEG550 [251] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] b23_from_b28: jmp b23 - //SEG518 keyboard_event_scan::@23 + //SEG551 keyboard_event_scan::@23 b23: - //SEG519 [234] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] + //SEG552 [252] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] b11_from_b23: b11_from_b28: jmp b11 - //SEG520 keyboard_event_scan::@11 + //SEG553 keyboard_event_scan::@11 b11: - //SEG521 [235] call keyboard_event_pressed - //SEG522 [194] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG554 [253] call keyboard_event_pressed + //SEG555 [212] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG523 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG556 [212] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG524 [236] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG557 [254] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#10 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b29 - //SEG525 keyboard_event_scan::@29 + //SEG558 keyboard_event_scan::@29 b29: - //SEG526 [237] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + //SEG559 [255] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 // (byte~) keyboard_event_scan::$26 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a - //SEG527 [238] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 + //SEG560 [256] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 cmp #0 beq breturn - //SEG528 [239] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] + //SEG561 [257] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] b24_from_b29: jmp b24 - //SEG529 keyboard_event_scan::@24 + //SEG562 keyboard_event_scan::@24 b24: jmp breturn - //SEG530 keyboard_event_scan::@return + //SEG563 keyboard_event_scan::@return breturn: - //SEG531 [240] return + //SEG564 [258] return rts - //SEG532 [241] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG565 [259] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG533 [241] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG534 [241] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy - //SEG535 [241] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 + //SEG566 [259] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG567 [259] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG568 [259] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG536 [241] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG569 [259] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG537 [241] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG538 [241] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy - //SEG539 [241] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy + //SEG570 [259] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG571 [259] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG572 [259] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy jmp b4 - //SEG540 keyboard_event_scan::@4 + //SEG573 keyboard_event_scan::@4 b4: - //SEG541 [242] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 + //SEG574 [260] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 lda row_scan ldy row eor keyboard_scan_values,y - //SEG542 [243] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx + //SEG575 [261] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx and keyboard_matrix_col_bitmask,x - //SEG543 [244] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 + //SEG576 [262] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5_from_b4 jmp b15 - //SEG544 keyboard_event_scan::@15 + //SEG577 keyboard_event_scan::@15 b15: - //SEG545 [245] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG578 [263] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5_from_b15 jmp b16 - //SEG546 keyboard_event_scan::@16 + //SEG579 keyboard_event_scan::@16 b16: - //SEG547 [246] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx + //SEG580 [264] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx lda keyboard_matrix_col_bitmask,x and row_scan - //SEG548 [247] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 + //SEG581 [265] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 jmp b17 - //SEG549 keyboard_event_scan::@17 + //SEG582 keyboard_event_scan::@17 b17: - //SEG550 [248] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG583 [266] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG551 [249] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG584 [267] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG552 [250] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] + //SEG585 [268] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] b5_from_b15: b5_from_b17: b5_from_b4: b5_from_b7: - //SEG553 [250] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG586 [268] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy jmp b5 - //SEG554 keyboard_event_scan::@5 + //SEG587 keyboard_event_scan::@5 b5: - //SEG555 [251] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG588 [269] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG556 [252] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG589 [270] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG557 [253] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG590 [271] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b4_from_b5 jmp b19 - //SEG558 keyboard_event_scan::@19 + //SEG591 keyboard_event_scan::@19 b19: - //SEG559 [254] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG592 [272] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3_from_b19 - //SEG560 keyboard_event_scan::@7 + //SEG593 keyboard_event_scan::@7 b7: - //SEG561 [255] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 + //SEG594 [273] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 lda #$40 ora keycode - //SEG562 [256] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG595 [274] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa ldy keyboard_events_size sta keyboard_events,y - //SEG563 [257] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG596 [275] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG564 keyboard_matrix_read +//SEG597 keyboard_matrix_read keyboard_matrix_read: { - //SEG565 [258] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx + //SEG598 [276] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A - //SEG566 [259] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG599 [277] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff jmp breturn - //SEG567 keyboard_matrix_read::@return + //SEG600 keyboard_matrix_read::@return breturn: - //SEG568 [260] return + //SEG601 [278] return rts } -//SEG569 init +//SEG602 init init: { .label _13 = $c .label li = 5 .label pli = 5 .label line = 5 .label l = 2 - //SEG570 [262] call fill - //SEG571 [287] phi from init to fill [phi:init->fill] + //SEG603 [280] call fill + //SEG604 [305] phi from init to fill [phi:init->fill] fill_from_init: - //SEG572 [287] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:init->fill#0] -- vbuxx=vbuc1 + //SEG605 [305] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:init->fill#0] -- vbuxx=vbuc1 ldx #$a0 - //SEG573 [287] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:init->fill#1] -- pbuz1=pbuc1 + //SEG606 [305] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:init->fill#1] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG574 [263] phi from init to init::@9 [phi:init->init::@9] + //SEG607 [281] phi from init to init::@9 [phi:init->init::@9] b9_from_init: jmp b9 - //SEG575 init::@9 + //SEG608 init::@9 b9: - //SEG576 [264] call fill - //SEG577 [287] phi from init::@9 to fill [phi:init::@9->fill] + //SEG609 [282] call fill + //SEG610 [305] phi from init::@9 to fill [phi:init::@9->fill] fill_from_b9: - //SEG578 [287] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@9->fill#0] -- vbuxx=vbuc1 + //SEG611 [305] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@9->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG579 [287] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:init::@9->fill#1] -- pbuz1=pbuc1 + //SEG612 [305] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:init::@9->fill#1] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG580 [265] phi from init::@9 to init::@1 [phi:init::@9->init::@1] + //SEG613 [283] phi from init::@9 to init::@1 [phi:init::@9->init::@1] b1_from_b9: - //SEG581 [265] phi (byte*) init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:init::@9->init::@1#0] -- pbuz1=pbuc1 + //SEG614 [283] phi (byte*) init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:init::@9->init::@1#0] -- pbuz1=pbuc1 lda #COLS+$28+$f sta li+1 - //SEG582 [265] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@9->init::@1#1] -- vbuxx=vbuc1 + //SEG615 [283] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@9->init::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG583 [265] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG616 [283] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG584 [265] phi (byte*) init::li#2 = (byte*) init::li#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG585 [265] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#1] -- register_copy + //SEG617 [283] phi (byte*) init::li#2 = (byte*) init::li#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG618 [283] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#1] -- register_copy jmp b1 - //SEG586 init::@1 + //SEG619 init::@1 b1: - //SEG587 [266] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG620 [284] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG588 [267] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG621 [285] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li sta screen_lines,y lda li+1 sta screen_lines+1,y - //SEG589 [268] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG622 [286] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li clc adc #$28 @@ -9511,38 +10050,38 @@ init: { bcc !+ inc li+1 !: - //SEG590 [269] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx + //SEG623 [287] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG591 [270] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG624 [288] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES+2+1 bne b1_from_b1 - //SEG592 [271] phi from init::@1 to init::@2 [phi:init::@1->init::@2] + //SEG625 [289] phi from init::@1 to init::@2 [phi:init::@1->init::@2] b2_from_b1: - //SEG593 [271] phi (byte*) init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:init::@1->init::@2#0] -- pbuz1=pbuc1 + //SEG626 [289] phi (byte*) init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:init::@1->init::@2#0] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG594 [271] phi (byte) init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#1] -- vbuxx=vbuc1 + //SEG627 [289] phi (byte) init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#1] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG595 [271] phi from init::@2 to init::@2 [phi:init::@2->init::@2] + //SEG628 [289] phi from init::@2 to init::@2 [phi:init::@2->init::@2] b2_from_b2: - //SEG596 [271] phi (byte*) init::pli#2 = (byte*) init::pli#1 [phi:init::@2->init::@2#0] -- register_copy - //SEG597 [271] phi (byte) init::j#2 = (byte) init::j#1 [phi:init::@2->init::@2#1] -- register_copy + //SEG629 [289] phi (byte*) init::pli#2 = (byte*) init::pli#1 [phi:init::@2->init::@2#0] -- register_copy + //SEG630 [289] phi (byte) init::j#2 = (byte) init::j#1 [phi:init::@2->init::@2#1] -- register_copy jmp b2 - //SEG598 init::@2 + //SEG631 init::@2 b2: - //SEG599 [272] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG632 [290] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG600 [273] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG633 [291] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG601 [274] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- pbuz1=pbuz1_plus_vbuc1 + //SEG634 [292] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #$a @@ -9550,41 +10089,41 @@ init: { bcc !+ inc pli+1 !: - //SEG602 [275] (byte) init::j#1 ← ++ (byte) init::j#2 -- vbuxx=_inc_vbuxx + //SEG635 [293] (byte) init::j#1 ← ++ (byte) init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG603 [276] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG636 [294] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b2_from_b2 - //SEG604 [277] phi from init::@2 to init::@3 [phi:init::@2->init::@3] + //SEG637 [295] phi from init::@2 to init::@3 [phi:init::@2->init::@3] b3_from_b2: - //SEG605 [277] phi (byte) init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuz1=vbuc1 + //SEG638 [295] phi (byte) init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG606 [277] phi (byte*) init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:init::@2->init::@3#1] -- pbuz1=pbuc1 + //SEG639 [295] phi (byte*) init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:init::@2->init::@3#1] -- pbuz1=pbuc1 lda #COLS+$e sta line+1 jmp b3 - //SEG607 [277] phi from init::@7 to init::@3 [phi:init::@7->init::@3] + //SEG640 [295] phi from init::@7 to init::@3 [phi:init::@7->init::@3] b3_from_b7: - //SEG608 [277] phi (byte) init::l#4 = (byte) init::l#1 [phi:init::@7->init::@3#0] -- register_copy - //SEG609 [277] phi (byte*) init::line#4 = (byte*) init::line#1 [phi:init::@7->init::@3#1] -- register_copy + //SEG641 [295] phi (byte) init::l#4 = (byte) init::l#1 [phi:init::@7->init::@3#0] -- register_copy + //SEG642 [295] phi (byte*) init::line#4 = (byte*) init::line#1 [phi:init::@7->init::@3#1] -- register_copy jmp b3 - //SEG610 init::@3 + //SEG643 init::@3 b3: - //SEG611 [278] phi from init::@3 to init::@4 [phi:init::@3->init::@4] + //SEG644 [296] phi from init::@3 to init::@4 [phi:init::@3->init::@4] b4_from_b3: - //SEG612 [278] phi (byte) init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@4#0] -- vbuxx=vbuc1 + //SEG645 [296] phi (byte) init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@4#0] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG613 [278] phi from init::@4 to init::@4 [phi:init::@4->init::@4] + //SEG646 [296] phi from init::@4 to init::@4 [phi:init::@4->init::@4] b4_from_b4: - //SEG614 [278] phi (byte) init::c#2 = (byte) init::c#1 [phi:init::@4->init::@4#0] -- register_copy + //SEG647 [296] phi (byte) init::c#2 = (byte) init::c#1 [phi:init::@4->init::@4#0] -- register_copy jmp b4 - //SEG615 init::@4 + //SEG648 init::@4 b4: - //SEG616 [279] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 -- pbuz1=pbuz2_plus_vbuxx + //SEG649 [297] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 -- pbuz1=pbuz2_plus_vbuxx txa clc adc line @@ -9592,19 +10131,19 @@ init: { lda #0 adc line+1 sta _13+1 - //SEG617 [280] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG650 [298] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (_13),y - //SEG618 [281] (byte) init::c#1 ← ++ (byte) init::c#2 -- vbuxx=_inc_vbuxx + //SEG651 [299] (byte) init::c#1 ← ++ (byte) init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG619 [282] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG652 [300] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS+1+1 bne b4_from_b4 jmp b7 - //SEG620 init::@7 + //SEG653 init::@7 b7: - //SEG621 [283] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG654 [301] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -9612,23 +10151,23 @@ init: { bcc !+ inc line+1 !: - //SEG622 [284] (byte) init::l#1 ← ++ (byte) init::l#4 -- vbuz1=_inc_vbuz1 + //SEG655 [302] (byte) init::l#1 ← ++ (byte) init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG623 [285] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG656 [303] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES+1+1 bne b3_from_b7 jmp breturn - //SEG624 init::@return + //SEG657 init::@return breturn: - //SEG625 [286] return + //SEG658 [304] return rts } -//SEG626 fill +//SEG659 fill fill: { .label end = $c .label addr = 5 - //SEG627 [288] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG660 [306] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -9636,23 +10175,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG628 [289] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG661 [307] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG629 [289] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG662 [307] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG630 fill::@1 + //SEG663 fill::@1 b1: - //SEG631 [290] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG664 [308] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG632 [291] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG665 [309] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG633 [292] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG666 [310] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 lda addr+1 cmp end+1 bne b1_from_b1 @@ -9660,9 +10199,25 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG634 fill::@return + //SEG667 fill::@return breturn: - //SEG635 [293] return + //SEG668 [311] return + rts +} +//SEG669 sid_rnd_init +sid_rnd_init: { + //SEG670 [312] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + lda #<$ffff + sta SID_VOICE3_FREQ + lda #>$ffff + sta SID_VOICE3_FREQ+1 + //SEG671 [313] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + lda #SID_CONTROL_NOISE + sta SID_VOICE3_CONTROL + jmp breturn + //SEG672 sid_rnd_init::@return + breturn: + //SEG673 [314] return rts } keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f @@ -9670,29 +10225,44 @@ fill: { 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 ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b21 +Removing instruction jmp b23 Removing instruction jmp bend Removing instruction jmp b21 Removing instruction jmp b22 Removing instruction jmp b23 +Removing instruction jmp b24 Removing instruction jmp b1 Removing instruction jmp b4 Removing instruction jmp b7 Removing instruction jmp b9 -Removing instruction jmp b25 Removing instruction jmp b26 Removing instruction jmp b27 Removing instruction jmp b28 Removing instruction jmp b29 -Removing instruction jmp b19 Removing instruction jmp b30 +Removing instruction jmp b19 Removing instruction jmp b31 +Removing instruction jmp b32 Removing instruction jmp b10 Removing instruction jmp b1 Removing instruction jmp b6 @@ -9737,6 +10307,11 @@ Removing instruction jmp b13 Removing instruction jmp b19 Removing instruction jmp b7 Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b3 +Removing instruction jmp breturn +Removing instruction jmp b2 +Removing instruction jmp b7 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp b2 @@ -9780,15 +10355,18 @@ Removing instruction jmp b7 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn +Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda key_event Removing instruction lda #0 Removing instruction lda #0 -Removing instruction lda current_piece_orientation +Removing instruction lda current_orientation Removing instruction lda #0 Removing instruction lda #0 +Replacing instruction ldy _3 with TAY +Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda row_scan Succesful ASM optimization Pass5UnnecesaryLoadElimination @@ -9806,8 +10384,7 @@ Replacing label breturn_from_b11 with breturn_from_b8 Replacing label b2_from_b17 with b2 Replacing label b2_from_b9 with b2 Replacing label b4_from_b2 with b4 -Replacing label b2_from_b3 with b2 -Replacing label b1_from_b5 with b1 +Replacing label b2_from_b1 with b2 Replacing label b1_from_b3 with b1 Replacing label b9_from_b26 with b9 Replacing label b10_from_b27 with b10 @@ -9825,16 +10402,14 @@ Replacing label b3_from_b7 with b3 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b21_from_bbegin: -Removing instruction bend_from_b21: -Removing instruction b21_from_main: -Removing instruction spawn_current_from_b21: +Removing instruction b23_from_bbegin: +Removing instruction main_from_b23: +Removing instruction bend_from_b23: Removing instruction b22_from_b21: -Removing instruction render_playfield_from_b22: Removing instruction b23_from_b22: -Removing instruction render_current_from_b23: +Removing instruction render_playfield_from_b23: Removing instruction b1: -Removing instruction b25_from_b9: +Removing instruction b26_from_b9: Removing instruction b1_from_b2: Removing instruction b3_from_b4: Removing instruction b2_from_b1: @@ -9856,12 +10431,9 @@ Removing instruction b2_from_b9: Removing instruction b4_from_b11: Removing instruction b4_from_b2: Removing instruction b13_from_b18: -Removing instruction lock_current_from_b13: Removing instruction b19_from_b13: -Removing instruction spawn_current_from_b19: Removing instruction breturn_from_b7: -Removing instruction b1_from_b5: -Removing instruction b2_from_b3: +Removing instruction b2_from_b1: Removing instruction b1_from_b3: Removing instruction b3_from_b13: Removing instruction b3_from_b19: @@ -9899,25 +10471,27 @@ Removing instruction b4_from_b4: Removing instruction b1_from_fill: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b21: +Removing instruction b23: Removing instruction bend: -Removing instruction init_from_main: Removing instruction b21: +Removing instruction init_from_b21: Removing instruction b22: Removing instruction b23: -Removing instruction b1_from_b23: +Removing instruction b24: +Removing instruction render_current_from_b24: +Removing instruction b1_from_b24: Removing instruction b9: Removing instruction keyboard_event_scan_from_b9: -Removing instruction b25: Removing instruction b26: Removing instruction b27: Removing instruction b28: Removing instruction b29: +Removing instruction b30: Removing instruction b19: Removing instruction render_playfield_from_b19: -Removing instruction b30: -Removing instruction render_current_from_b30: Removing instruction b31: +Removing instruction render_current_from_b31: +Removing instruction b32: Removing instruction b1_from_b10: Removing instruction b1_from_render_current: Removing instruction b6: @@ -9965,12 +10539,19 @@ Removing instruction b13: Removing instruction b19: Removing instruction b7_from_b19: Removing instruction b7_from_b6: +Removing instruction b1_from_spawn_current: +Removing instruction b3: +Removing instruction breturn: +Removing instruction b7: +Removing instruction b1_from_b7: Removing instruction breturn: Removing instruction b1_from_lock_current: Removing instruction b2_from_b1: Removing instruction b4: Removing instruction b5: Removing instruction breturn: +Removing instruction b1_from_b7: +Removing instruction b2_from_b8: Removing instruction breturn: Removing instruction b3: Removing instruction breturn_from_b3: @@ -9995,6 +10576,7 @@ Removing instruction b3_from_b2: Removing instruction b7: Removing instruction breturn: Removing instruction breturn: +Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination Relabelling long label breturn_from_b6 to b3 Relabelling long label breturn_from_b8 to b2 @@ -10009,8 +10591,6 @@ Removing instruction jmp b3 Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b1 -Removing instruction jmp b2 -Removing instruction jmp b1 Removing instruction beq b9 Removing instruction beq b10 Removing instruction beq b11 @@ -10029,7 +10609,7 @@ Removing instruction b24: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE -(label) @21 +(label) @23 (label) @begin (label) @end (byte) BLACK @@ -10078,6 +10658,26 @@ FINAL SYMBOL TABLE (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 @@ -10086,6 +10686,16 @@ FINAL SYMBOL TABLE (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 @@ -10151,55 +10761,61 @@ FINAL SYMBOL TABLE (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 @@ -10343,34 +10959,39 @@ FINAL SYMBOL TABLE (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 @@ -10378,13 +10999,14 @@ FINAL SYMBOL TABLE (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 @@ -10394,8 +11016,6 @@ FINAL SYMBOL TABLE (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 @@ -10445,7 +11065,6 @@ FINAL SYMBOL TABLE (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 @@ -10458,7 +11077,7 @@ FINAL SYMBOL TABLE (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 @@ -10520,16 +11139,32 @@ FINAL SYMBOL TABLE (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 ] @@ -10542,12 +11177,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 ] @@ -10560,14 +11196,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 ] @@ -10575,7 +11211,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 ] @@ -10587,10 +11222,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 ] @@ -10614,7 +11248,7 @@ reg byte a [ init::$8 ] FINAL ASSEMBLER -Score: 345297 +Score: 359695 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -10627,8 +11261,10 @@ Score: 345297 .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 @@ -10638,11 +11274,15 @@ Score: 345297 .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 @@ -10650,457 +11290,457 @@ Score: 345297 .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 //SEG2 @begin -//SEG3 [1] phi from @begin to @21 [phi:@begin->@21] -//SEG4 @21 +//SEG3 [1] phi from @begin to @23 [phi:@begin->@23] +//SEG4 @23 //SEG5 [2] call main +//SEG6 [4] phi from @23 to main [phi:@23->main] jsr main -//SEG6 [3] phi from @21 to @end [phi:@21->@end] -//SEG7 @end -//SEG8 main +//SEG7 [3] phi from @23 to @end [phi:@23->@end] +//SEG8 @end +//SEG9 main main: { .label key_event = $14 .label render = $15 - //SEG9 asm { sei } + //SEG10 [5] call sid_rnd_init + jsr sid_rnd_init + //SEG11 main::@21 + //SEG12 asm { sei } sei - //SEG10 [5] call init - //SEG11 [261] phi from main to init [phi:main->init] + //SEG13 [7] call init + //SEG14 [279] phi from main::@21 to init [phi:main::@21->init] jsr init - //SEG12 [6] phi from main to main::@21 [phi:main->main::@21] - //SEG13 main::@21 - //SEG14 [7] call spawn_current - //SEG15 [176] phi from main::@21 to spawn_current [phi:main::@21->spawn_current] + //SEG15 [8] phi from main::@21 to main::@22 [phi:main::@21->main::@22] + //SEG16 main::@22 + //SEG17 [9] call spawn_current jsr spawn_current - //SEG16 [8] phi from main::@21 to main::@22 [phi:main::@21->main::@22] - //SEG17 main::@22 - //SEG18 [9] call render_playfield - //SEG19 [66] phi from main::@22 to render_playfield [phi:main::@22->render_playfield] + //SEG18 [10] phi from main::@22 to main::@23 [phi:main::@22->main::@23] + //SEG19 main::@23 + //SEG20 [11] call render_playfield + //SEG21 [70] phi from main::@23 to render_playfield [phi:main::@23->render_playfield] jsr render_playfield - //SEG20 [10] phi from main::@22 to main::@23 [phi:main::@22->main::@23] - //SEG21 main::@23 - //SEG22 [11] call render_current - //SEG23 [46] phi from main::@23 to render_current [phi:main::@23->render_current] - //SEG24 [46] phi (byte) current_piece_color#63 = (const byte) GREEN#0 [phi:main::@23->render_current#0] -- vbuz1=vbuc1 - lda #GREEN - sta current_piece_color_63 - //SEG25 [46] phi (byte*) current_piece_gfx#61 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->render_current#1] -- pbuz1=pbuc1 - lda #piece_t - sta current_piece_gfx_61+1 - //SEG26 [46] phi (byte) current_xpos#62 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@23->render_current#2] -- vbuz1=vbuc1 + //SEG22 main::@24 + //SEG23 [12] (byte*~) current_piece_gfx#84 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 + lda current_piece_gfx + sta current_piece_gfx_84 + lda current_piece_gfx+1 + sta current_piece_gfx_84+1 + //SEG24 [13] (byte~) current_piece_color#72 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 + lda current_piece_color + sta current_piece_color_72 + //SEG25 [14] call render_current + //SEG26 [50] phi from main::@24 to render_current [phi:main::@24->render_current] + //SEG27 [50] phi (byte) current_piece_color#64 = (byte~) current_piece_color#72 [phi:main::@24->render_current#0] -- register_copy + //SEG28 [50] phi (byte*) current_piece_gfx#62 = (byte*~) current_piece_gfx#84 [phi:main::@24->render_current#1] -- register_copy + //SEG29 [50] phi (byte) current_xpos#62 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@24->render_current#2] -- vbuz1=vbuc1 lda #3 sta current_xpos_62 - //SEG27 [46] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->render_current#3] -- vbuxx=vbuc1 + //SEG30 [50] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@24->render_current#3] -- vbuxx=vbuc1 ldx #0 jsr render_current - //SEG28 [12] phi from main::@23 to main::@1 [phi:main::@23->main::@1] - //SEG29 [12] phi (byte) current_movedown_counter#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#0] -- vbuz1=vbuc1 + //SEG31 [15] (byte*~) current_piece#68 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + ldy spawn_current._3 + lda PIECES,y + sta current_piece + lda PIECES+1,y + sta current_piece+1 + //SEG32 [16] phi from main::@24 to main::@1 [phi:main::@24->main::@1] + //SEG33 [16] phi (byte) current_movedown_counter#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@24->main::@1#0] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG30 [12] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#1] -- vbuz1=vbuc1 + //SEG34 [16] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@24->main::@1#1] -- vbuz1=vbuc1 sta keyboard_events_size - //SEG31 [12] phi (byte) current_ypos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#2] -- vbuz1=vbuc1 + //SEG35 [16] phi (byte) current_piece_color#11 = (byte) current_piece_color#15 [phi:main::@24->main::@1#2] -- register_copy + //SEG36 [16] phi (byte) current_ypos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@24->main::@1#3] -- vbuz1=vbuc1 sta current_ypos - //SEG32 [12] phi (byte) current_xpos#16 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@23->main::@1#3] -- vbuz1=vbuc1 + //SEG37 [16] phi (byte) current_xpos#16 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@24->main::@1#4] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG33 [12] phi (byte) current_piece_color#11 = (const byte) GREEN#0 [phi:main::@23->main::@1#4] -- vbuz1=vbuc1 - lda #GREEN - sta current_piece_color - //SEG34 [12] phi (byte*) current_piece_gfx#15 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->main::@1#5] -- pbuz1=pbuc1 - lda #piece_t - sta current_piece_gfx+1 - //SEG35 [12] phi (byte) current_piece_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#6] -- vbuz1=vbuc1 + //SEG38 [16] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#10 [phi:main::@24->main::@1#5] -- register_copy + //SEG39 [16] phi (byte) current_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@24->main::@1#6] -- vbuz1=vbuc1 lda #0 - sta current_piece_orientation - //SEG36 [12] phi (byte*) current_piece#11 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->main::@1#7] -- pbuz1=pbuc1 - lda #piece_t - sta current_piece+1 - //SEG37 main::@1 - //SEG38 main::@4 + sta current_orientation + //SEG40 [16] phi (byte*) current_piece#11 = (byte*~) current_piece#68 [phi:main::@24->main::@1#7] -- register_copy + //SEG41 main::@1 + //SEG42 main::@4 b4: - //SEG39 [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG43 [17] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 - //SEG40 main::@7 + //SEG44 main::@7 b7: - //SEG41 [14] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG45 [18] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b7 - //SEG42 main::@9 - //SEG43 [15] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG46 main::@9 + //SEG47 [19] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG44 [16] call keyboard_event_scan - //SEG45 [205] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] + //SEG48 [20] call keyboard_event_scan + //SEG49 [223] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] jsr keyboard_event_scan - //SEG46 [17] phi from main::@9 to main::@25 [phi:main::@9->main::@25] - //SEG47 main::@25 - //SEG48 [18] call keyboard_event_get + //SEG50 [21] phi from main::@9 to main::@26 [phi:main::@9->main::@26] + //SEG51 main::@26 + //SEG52 [22] call keyboard_event_get jsr keyboard_event_get - //SEG49 [19] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + //SEG53 [23] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 // (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#2 // register copy reg byte a - //SEG50 main::@26 - //SEG51 [20] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa + //SEG54 main::@27 + //SEG55 [24] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa sta key_event - //SEG52 [21] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 - //SEG53 [22] call play_move_down + //SEG56 [25] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG57 [26] call play_move_down jsr play_move_down - //SEG54 [23] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx + //SEG58 [27] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx txa - //SEG55 main::@27 - //SEG56 [24] (byte~) main::$8 ← (byte) play_move_down::return#0 - // (byte~) main::$8 = (byte) play_move_down::return#0 // register copy reg byte a - //SEG57 [25] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$8 -- vbuz1=vbuc1_plus_vbuaa + //SEG59 main::@28 + //SEG60 [28] (byte~) main::$9 ← (byte) play_move_down::return#0 + // (byte~) main::$9 = (byte) play_move_down::return#0 // register copy reg byte a + //SEG61 [29] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$9 -- vbuz1=vbuc1_plus_vbuaa clc adc #0 sta render - //SEG58 [26] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG62 [30] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG59 [27] call play_move_leftright + //SEG63 [31] call play_move_leftright jsr play_move_leftright - //SEG60 [28] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + //SEG64 [32] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 // (byte) play_move_leftright::return#0 = (byte) play_move_leftright::return#2 // register copy reg byte a - //SEG61 main::@28 - //SEG62 [29] (byte~) main::$9 ← (byte) play_move_leftright::return#0 - // (byte~) main::$9 = (byte) play_move_leftright::return#0 // register copy reg byte a - //SEG63 [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 -- vbuz1=vbuz1_plus_vbuaa + //SEG65 main::@29 + //SEG66 [33] (byte~) main::$10 ← (byte) play_move_leftright::return#0 + // (byte~) main::$10 = (byte) play_move_leftright::return#0 // register copy reg byte a + //SEG67 [34] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$10 -- vbuz1=vbuz1_plus_vbuaa clc adc render sta render - //SEG64 [31] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG68 [35] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG65 [32] call play_move_rotate + //SEG69 [36] call play_move_rotate jsr play_move_rotate - //SEG66 [33] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + //SEG70 [37] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 // (byte) play_move_rotate::return#0 = (byte) play_move_rotate::return#2 // register copy reg byte a - //SEG67 main::@29 - //SEG68 [34] (byte~) main::$10 ← (byte) play_move_rotate::return#0 - // (byte~) main::$10 = (byte) play_move_rotate::return#0 // register copy reg byte a - //SEG69 [35] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$10 -- vbuaa=vbuz1_plus_vbuaa + //SEG71 main::@30 + //SEG72 [38] (byte~) main::$11 ← (byte) play_move_rotate::return#0 + // (byte~) main::$11 = (byte) play_move_rotate::return#0 // register copy reg byte a + //SEG73 [39] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$11 -- vbuaa=vbuz1_plus_vbuaa clc adc render - //SEG70 [36] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuaa_eq_0_then_la1 + //SEG74 [40] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 - //SEG71 main::@19 - //SEG72 [37] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG75 main::@19 + //SEG76 [41] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG73 [38] call render_playfield - //SEG74 [66] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] + //SEG77 [42] call render_playfield + //SEG78 [70] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] jsr render_playfield - //SEG75 main::@30 - //SEG76 [39] (byte~) current_ypos#72 ← (byte) current_ypos#16 -- vbuxx=vbuz1 + //SEG79 main::@31 + //SEG80 [43] (byte~) current_ypos#68 ← (byte) current_ypos#16 -- vbuxx=vbuz1 ldx current_ypos - //SEG77 [40] (byte~) current_xpos#92 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG81 [44] (byte~) current_xpos#93 ← (byte) current_xpos#23 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_92 - //SEG78 [41] (byte*~) current_piece_gfx#82 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + sta current_xpos_93 + //SEG82 [45] (byte*~) current_piece_gfx#85 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 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 - //SEG79 [42] (byte~) current_piece_color#70 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 + sta current_piece_gfx_85+1 + //SEG83 [46] (byte~) current_piece_color#73 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 lda current_piece_color - sta current_piece_color_70 - //SEG80 [43] call render_current - //SEG81 [46] phi from main::@30 to render_current [phi:main::@30->render_current] - //SEG82 [46] phi (byte) current_piece_color#63 = (byte~) current_piece_color#70 [phi:main::@30->render_current#0] -- register_copy - //SEG83 [46] phi (byte*) current_piece_gfx#61 = (byte*~) current_piece_gfx#82 [phi:main::@30->render_current#1] -- register_copy - //SEG84 [46] phi (byte) current_xpos#62 = (byte~) current_xpos#92 [phi:main::@30->render_current#2] -- register_copy - //SEG85 [46] phi (byte) current_ypos#22 = (byte~) current_ypos#72 [phi:main::@30->render_current#3] -- register_copy + sta current_piece_color_73 + //SEG84 [47] call render_current + //SEG85 [50] phi from main::@31 to render_current [phi:main::@31->render_current] + //SEG86 [50] phi (byte) current_piece_color#64 = (byte~) current_piece_color#73 [phi:main::@31->render_current#0] -- register_copy + //SEG87 [50] phi (byte*) current_piece_gfx#62 = (byte*~) current_piece_gfx#85 [phi:main::@31->render_current#1] -- register_copy + //SEG88 [50] phi (byte) current_xpos#62 = (byte~) current_xpos#93 [phi:main::@31->render_current#2] -- register_copy + //SEG89 [50] phi (byte) current_ypos#22 = (byte~) current_ypos#68 [phi:main::@31->render_current#3] -- register_copy jsr render_current - //SEG86 main::@31 - //SEG87 [44] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG90 main::@32 + //SEG91 [48] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG88 main::@10 + //SEG92 main::@10 b10: - //SEG89 [45] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG93 [49] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG90 [12] phi from main::@10 to main::@1 [phi:main::@10->main::@1] - //SEG91 [12] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy - //SEG92 [12] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy - //SEG93 [12] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#2] -- register_copy - //SEG94 [12] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#3] -- register_copy - //SEG95 [12] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#4] -- register_copy - //SEG96 [12] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy - //SEG97 [12] phi (byte) current_piece_orientation#15 = (byte) current_piece_orientation#23 [phi:main::@10->main::@1#6] -- register_copy - //SEG98 [12] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy + //SEG94 [16] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + //SEG95 [16] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy + //SEG96 [16] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy + //SEG97 [16] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#2] -- register_copy + //SEG98 [16] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#3] -- register_copy + //SEG99 [16] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#4] -- register_copy + //SEG100 [16] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy + //SEG101 [16] phi (byte) current_orientation#15 = (byte) current_orientation#23 [phi:main::@10->main::@1#6] -- register_copy + //SEG102 [16] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy jmp b4 } -//SEG99 render_current +//SEG103 render_current render_current: { .label ypos2 = 8 .label l = 9 .label screen_line = $16 .label xpos = $b .label i = $a - //SEG100 [47] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG104 [51] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta ypos2 - //SEG101 [48] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] - //SEG102 [48] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 + //SEG105 [52] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] + //SEG106 [52] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG103 [48] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 + //SEG107 [52] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 sta l - //SEG104 [48] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy - //SEG105 [48] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] - //SEG106 [48] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy - //SEG107 [48] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy - //SEG108 [48] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy - //SEG109 render_current::@1 + //SEG108 [52] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy + //SEG109 [52] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] + //SEG110 [52] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy + //SEG111 [52] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy + //SEG112 [52] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy + //SEG113 render_current::@1 b1: - //SEG110 [49] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 + //SEG114 [53] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcs b2 - //SEG111 render_current::@6 - //SEG112 [50] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG115 render_current::@6 + //SEG116 [54] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 tay lda screen_lines,y sta screen_line lda screen_lines+1,y sta screen_line+1 - //SEG113 [51] (byte) render_current::xpos#0 ← (byte) current_xpos#62 -- vbuz1=vbuz2 + //SEG117 [55] (byte) render_current::xpos#0 ← (byte) current_xpos#62 -- vbuz1=vbuz2 lda current_xpos_62 sta xpos - //SEG114 [52] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] - //SEG115 [52] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuxx=vbuc1 + //SEG118 [56] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] + //SEG119 [56] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG116 [52] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy - //SEG117 [52] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy - //SEG118 [52] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] - //SEG119 [52] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy - //SEG120 [52] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy - //SEG121 [52] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy - //SEG122 render_current::@3 + //SEG120 [56] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy + //SEG121 [56] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy + //SEG122 [56] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] + //SEG123 [56] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy + //SEG124 [56] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy + //SEG125 [56] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy + //SEG126 render_current::@3 b3: - //SEG123 [53] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#61 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG127 [57] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#62 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i - lda (current_piece_gfx_61),y - //SEG124 [54] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 + lda (current_piece_gfx_62),y + //SEG128 [58] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG125 [55] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuaa_eq_0_then_la1 + //SEG129 [59] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG126 render_current::@7 - //SEG127 [56] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 + //SEG130 render_current::@7 + //SEG131 [60] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 lda xpos cmp #PLAYFIELD_COLS bcs b4 - //SEG128 render_current::@8 - //SEG129 [57] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#63 -- pbuz1_derefidx_vbuz2=vbuz3 - lda current_piece_color_63 + //SEG132 render_current::@8 + //SEG133 [61] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#64 -- pbuz1_derefidx_vbuz2=vbuz3 + lda current_piece_color_64 ldy xpos sta (screen_line),y - //SEG130 render_current::@4 + //SEG134 render_current::@4 b4: - //SEG131 [58] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG135 [62] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG132 [59] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx + //SEG136 [63] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG133 [60] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG137 [64] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b3 - //SEG134 [61] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] - //SEG135 [61] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy - //SEG136 render_current::@2 + //SEG138 [65] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] + //SEG139 [65] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy + //SEG140 render_current::@2 b2: - //SEG137 [62] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG141 [66] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG138 [63] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 + //SEG142 [67] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 inc l - //SEG139 [64] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG143 [68] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1 - //SEG140 render_current::@return - //SEG141 [65] return + //SEG144 render_current::@return + //SEG145 [69] return rts } -//SEG142 render_playfield +//SEG146 render_playfield render_playfield: { .label line = 5 .label i = 7 .label l = 4 - //SEG143 [67] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] - //SEG144 [67] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG147 [71] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG148 [71] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG145 [67] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG149 [71] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 sta l - //SEG146 [67] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] - //SEG147 [67] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG148 [67] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy - //SEG149 render_playfield::@1 + //SEG150 [71] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG151 [71] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG152 [71] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG153 render_playfield::@1 b1: - //SEG150 [68] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + //SEG154 [72] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 lda l asl - //SEG151 [69] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuaa + //SEG155 [73] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines,y sta line lda screen_lines+1,y sta line+1 - //SEG152 [70] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] - //SEG153 [70] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuxx=vbuc1 + //SEG156 [74] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG157 [74] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG154 [70] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG155 [70] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy - //SEG156 [70] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] - //SEG157 [70] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG158 [70] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG159 [70] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy - //SEG160 render_playfield::@2 + //SEG158 [74] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG159 [74] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG160 [74] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG161 [74] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG162 [74] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG163 [74] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG164 render_playfield::@2 b2: - //SEG161 [71] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG165 [75] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 sta (line),y - //SEG162 [72] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 + //SEG166 [76] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 inc line bne !+ inc line+1 !: - //SEG163 [73] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG167 [77] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG164 [74] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuxx=_inc_vbuxx + //SEG168 [78] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuxx=_inc_vbuxx inx - //SEG165 [75] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG169 [79] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS-1+1 bne b2 - //SEG166 render_playfield::@3 - //SEG167 [76] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG170 render_playfield::@3 + //SEG171 [80] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG168 [77] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG172 [81] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1 - //SEG169 render_playfield::@return - //SEG170 [78] return + //SEG173 render_playfield::@return + //SEG174 [82] return rts } -//SEG171 play_move_rotate +//SEG175 play_move_rotate play_move_rotate: { .label orientation = 4 - //SEG172 [79] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG176 [83] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_Z beq b1 - //SEG173 play_move_rotate::@6 - //SEG174 [80] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + //SEG177 play_move_rotate::@6 + //SEG178 [84] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_X beq b2 - //SEG175 [81] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] + //SEG179 [85] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] b3: - //SEG176 [81] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#17 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG177 [81] phi (byte) current_piece_orientation#23 = (byte) current_piece_orientation#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG178 [81] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG180 [85] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#17 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG181 [85] phi (byte) current_orientation#23 = (byte) current_orientation#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG182 [85] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #0 - //SEG179 play_move_rotate::@return + //SEG183 play_move_rotate::@return breturn: - //SEG180 [82] return + //SEG184 [86] return rts - //SEG181 play_move_rotate::@2 + //SEG185 play_move_rotate::@2 b2: - //SEG182 [83] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 + //SEG186 [87] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 lda #$10 clc - adc current_piece_orientation - //SEG183 [84] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + adc current_orientation + //SEG187 [88] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f sta orientation - //SEG184 [85] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] - //SEG185 [85] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy - //SEG186 play_move_rotate::@4 + //SEG188 [89] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] + //SEG189 [89] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy + //SEG190 play_move_rotate::@4 b4: - //SEG187 [86] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG191 [90] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 lda current_xpos sta collision.xpos - //SEG188 [87] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + //SEG192 [91] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuyy=vbuz1 ldy current_ypos - //SEG189 [88] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG193 [92] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG190 [89] (byte*~) current_piece#70 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG194 [93] (byte*~) current_piece#72 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece - sta current_piece_70 + sta current_piece_72 lda current_piece+1 - sta current_piece_70+1 - //SEG191 [90] call collision - //SEG192 [99] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] - //SEG193 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy - //SEG194 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy - //SEG195 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy - //SEG196 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#70 [phi:play_move_rotate::@4->collision#3] -- register_copy + sta current_piece_72+1 + //SEG195 [94] call collision + //SEG196 [102] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] + //SEG197 [102] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy + //SEG198 [102] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy + //SEG199 [102] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy + //SEG200 [102] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_rotate::@4->collision#3] -- register_copy jsr collision - //SEG197 [91] (byte) collision::return#13 ← (byte) collision::return#14 + //SEG201 [95] (byte) collision::return#13 ← (byte) collision::return#14 // (byte) collision::return#13 = (byte) collision::return#14 // register copy reg byte a - //SEG198 play_move_rotate::@14 - //SEG199 [92] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 + //SEG202 play_move_rotate::@14 + //SEG203 [96] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 // (byte~) play_move_rotate::$6 = (byte) collision::return#13 // register copy reg byte a - //SEG200 [93] (byte~) play_move_rotate::$8 ← (byte~) play_move_rotate::$6 & (const byte) COLLISION_LEFT#0|(const byte) COLLISION_RIGHT#0 -- vbuaa=vbuaa_band_vbuc1 - and #COLLISION_LEFT|COLLISION_RIGHT - //SEG201 [94] if((byte~) play_move_rotate::$8!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@return -- vbuaa_neq_0_then_la1 + //SEG204 [97] if((byte~) play_move_rotate::$6!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@return -- vbuaa_neq_0_then_la1 cmp #0 bne b3 - //SEG202 play_move_rotate::@11 - //SEG203 [95] (byte) current_piece_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG205 play_move_rotate::@11 + //SEG206 [98] (byte) current_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation - sta current_piece_orientation - //SEG204 [96] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_piece_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 + sta current_orientation + //SEG207 [99] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 clc adc current_piece sta current_piece_gfx lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG205 [81] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] - //SEG206 [81] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG207 [81] phi (byte) current_piece_orientation#23 = (byte) current_piece_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG208 [81] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG208 [85] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG209 [85] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG210 [85] phi (byte) current_orientation#23 = (byte) current_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG211 [85] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #1 jmp breturn - //SEG209 play_move_rotate::@1 + //SEG212 play_move_rotate::@1 b1: - //SEG210 [97] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 - lda current_piece_orientation + //SEG213 [100] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 + lda current_orientation sec sbc #$10 - //SEG211 [98] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG214 [101] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f sta orientation jmp b4 } -//SEG212 collision +//SEG215 collision collision: { .label xpos = 7 .label piece_gfx = 5 @@ -11113,7 +11753,7 @@ collision: { .label i_3 = $a .label i_11 = $a .label i_13 = $a - //SEG213 [100] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx + //SEG216 [103] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -11121,770 +11761,839 @@ collision: { lda #0 adc piece_gfx+1 sta piece_gfx+1 - //SEG214 [101] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 + //SEG217 [104] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 tya asl sta ypos2 - //SEG215 [102] phi from collision to collision::@1 [phi:collision->collision::@1] - //SEG216 [102] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 + //SEG218 [105] phi from collision to collision::@1 [phi:collision->collision::@1] + //SEG219 [105] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG217 [102] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 + //SEG220 [105] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 sta i_3 - //SEG218 [102] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy - //SEG219 collision::@1 + //SEG221 [105] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy + //SEG222 collision::@1 b1: - //SEG220 [103] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG223 [106] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG221 [104] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 + //SEG224 [107] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 lda xpos sta col - //SEG222 [105] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] - //SEG223 [105] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuxx=vbuc1 + //SEG225 [108] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] + //SEG226 [108] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG224 [105] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy - //SEG225 [105] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy - //SEG226 collision::@2 + //SEG227 [108] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy + //SEG228 [108] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy + //SEG229 collision::@2 b2: - //SEG227 [106] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG230 [109] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG228 [107] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG231 [110] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 - //SEG229 collision::@8 - //SEG230 [108] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG232 collision::@8 + //SEG233 [111] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG231 [109] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] - //SEG232 [109] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuaa=vbuc1 + //SEG234 [112] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] + //SEG235 [112] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM - //SEG233 collision::@return + //SEG236 collision::@return breturn: - //SEG234 [110] return + //SEG237 [113] return rts - //SEG235 collision::@4 + //SEG238 collision::@4 b4: - //SEG236 [111] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG239 [114] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and col - //SEG237 [112] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuaa_eq_0_then_la1 + //SEG240 [115] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG238 [109] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] - //SEG239 [109] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuaa=vbuc1 + //SEG241 [112] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] + //SEG242 [112] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT jmp breturn - //SEG240 collision::@5 + //SEG243 collision::@5 b5: - //SEG241 [113] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG244 [116] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG242 [109] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] - //SEG243 [109] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuaa=vbuc1 + //SEG245 [112] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] + //SEG246 [112] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT jmp breturn - //SEG244 collision::@6 + //SEG247 collision::@6 b6: - //SEG245 [114] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG248 [117] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG246 [109] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] - //SEG247 [109] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuaa=vbuc1 + //SEG249 [112] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] + //SEG250 [112] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD jmp breturn - //SEG248 collision::@3 + //SEG251 collision::@3 b3: - //SEG249 [115] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG252 [118] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG250 [116] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuxx=_inc_vbuxx + //SEG253 [119] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG251 [117] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuxx_neq_vbuc1_then_la1 + //SEG254 [120] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b21 - //SEG252 collision::@17 - //SEG253 [118] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG255 collision::@17 + //SEG256 [121] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG254 [119] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG257 [122] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG255 [120] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG258 [123] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG256 [109] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] - //SEG257 [109] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuaa=vbuc1 + //SEG259 [112] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] + //SEG260 [112] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE jmp breturn - //SEG258 collision::@20 + //SEG261 collision::@20 b20: - //SEG259 [121] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG262 [124] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG260 [102] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] - //SEG261 [102] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy - //SEG262 [102] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy - //SEG263 [102] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy + //SEG263 [105] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] + //SEG264 [105] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy + //SEG265 [105] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy + //SEG266 [105] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy jmp b1 - //SEG264 collision::@21 + //SEG267 collision::@21 b21: - //SEG265 [122] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG268 [125] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG266 [105] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] - //SEG267 [105] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy - //SEG268 [105] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy - //SEG269 [105] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy + //SEG269 [108] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] + //SEG270 [108] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy + //SEG271 [108] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy + //SEG272 [108] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy jmp b2 } -//SEG270 play_move_leftright +//SEG273 play_move_leftright play_move_leftright: { - //SEG271 [123] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG274 [126] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_COMMA beq b1 - //SEG272 play_move_leftright::@6 - //SEG273 [124] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG275 play_move_leftright::@6 + //SEG276 [127] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_DOT bne b3 - //SEG274 play_move_leftright::@7 - //SEG275 [125] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG277 play_move_leftright::@7 + //SEG278 [128] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty collision.xpos - //SEG276 [126] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + //SEG279 [129] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuyy=vbuz1 ldy current_ypos - //SEG277 [127] (byte) collision::orientation#2 ← (byte) current_piece_orientation#18 -- vbuxx=vbuz1 - ldx current_piece_orientation - //SEG278 [128] (byte*~) current_piece#69 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG280 [130] (byte) collision::orientation#2 ← (byte) current_orientation#18 -- vbuxx=vbuz1 + ldx current_orientation + //SEG281 [131] (byte*~) current_piece#71 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_71 + lda current_piece+1 + sta current_piece_71+1 + //SEG282 [132] call collision + //SEG283 [102] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] + //SEG284 [102] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy + //SEG285 [102] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy + //SEG286 [102] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy + //SEG287 [102] phi (byte*) current_piece#15 = (byte*~) current_piece#71 [phi:play_move_leftright::@7->collision#3] -- register_copy + jsr collision + //SEG288 [133] (byte) collision::return#12 ← (byte) collision::return#14 + // (byte) collision::return#12 = (byte) collision::return#14 // register copy reg byte a + //SEG289 play_move_leftright::@15 + //SEG290 [134] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 + // (byte~) play_move_leftright::$4 = (byte) collision::return#12 // register copy reg byte a + //SEG291 [135] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + cmp #COLLISION_NONE + bne b3 + //SEG292 play_move_leftright::@8 + //SEG293 [136] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 + inc current_xpos + //SEG294 [137] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] + b2: + //SEG295 [137] phi (byte) current_xpos#23 = (byte) current_xpos#9 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG296 [137] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 + lda #1 + jmp breturn + //SEG297 [137] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] + b3: + //SEG298 [137] phi (byte) current_xpos#23 = (byte) current_xpos#19 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG299 [137] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 + lda #0 + //SEG300 play_move_leftright::@return + breturn: + //SEG301 [138] return + rts + //SEG302 play_move_leftright::@1 + b1: + //SEG303 [139] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + ldx current_xpos + dex + stx collision.xpos + //SEG304 [140] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + ldy current_ypos + //SEG305 [141] (byte) collision::orientation#1 ← (byte) current_orientation#18 -- vbuxx=vbuz1 + ldx current_orientation + //SEG306 [142] (byte*~) current_piece#70 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_70 + lda current_piece+1 + sta current_piece_70+1 + //SEG307 [143] call collision + //SEG308 [102] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] + //SEG309 [102] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy + //SEG310 [102] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy + //SEG311 [102] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy + //SEG312 [102] phi (byte*) current_piece#15 = (byte*~) current_piece#70 [phi:play_move_leftright::@1->collision#3] -- register_copy + jsr collision + //SEG313 [144] (byte) collision::return#1 ← (byte) collision::return#14 + // (byte) collision::return#1 = (byte) collision::return#14 // register copy reg byte a + //SEG314 play_move_leftright::@14 + //SEG315 [145] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 + // (byte~) play_move_leftright::$8 = (byte) collision::return#1 // register copy reg byte a + //SEG316 [146] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + cmp #COLLISION_NONE + bne b3 + //SEG317 play_move_leftright::@11 + //SEG318 [147] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 + dec current_xpos + jmp b2 +} +//SEG319 play_move_down +play_move_down: { + //SEG320 [148] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 + inc current_movedown_counter + //SEG321 [149] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 + cmp #KEY_SPACE + bne b3 + //SEG322 [150] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG323 play_move_down::@8 + //SEG324 [151] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG325 [151] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 + ldx #1 + jmp b1 + //SEG326 [151] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + b3: + //SEG327 [151] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 + ldx #0 + //SEG328 play_move_down::@1 + b1: + //SEG329 [152] call keyboard_event_pressed + //SEG330 [212] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG331 [212] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + lda #KEY_SPACE + sta keyboard_event_pressed.keycode + jsr keyboard_event_pressed + //SEG332 [153] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + // (byte) keyboard_event_pressed::return#12 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a + //SEG333 play_move_down::@17 + //SEG334 [154] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + // (byte~) play_move_down::$2 = (byte) keyboard_event_pressed::return#12 // register copy reg byte a + //SEG335 [155] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 + cmp #0 + beq b2 + //SEG336 play_move_down::@9 + //SEG337 [156] if((byte) current_movedown_counter#10<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + lda current_movedown_counter + cmp #current_movedown_fast + bcc b2 + //SEG338 play_move_down::@10 + //SEG339 [157] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx + inx + //SEG340 [158] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] + //SEG341 [158] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy + //SEG342 play_move_down::@2 + b2: + //SEG343 [159] if((byte) current_movedown_counter#10<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 + lda current_movedown_counter + cmp #current_movedown_slow + bcc b4 + //SEG344 play_move_down::@11 + //SEG345 [160] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx + inx + //SEG346 [161] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] + //SEG347 [161] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy + //SEG348 play_move_down::@4 + b4: + //SEG349 [162] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 + cpx #0 + beq b5 + //SEG350 play_move_down::@12 + //SEG351 [163] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 + ldy current_ypos + iny + //SEG352 [164] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + lda current_xpos + sta collision.xpos + //SEG353 [165] (byte) collision::orientation#0 ← (byte) current_orientation#15 -- vbuxx=vbuz1 + ldx current_orientation + //SEG354 [166] (byte*~) current_piece#69 ← (byte*) current_piece#11 -- pbuz1=pbuz2 lda current_piece sta current_piece_69 lda current_piece+1 sta current_piece_69+1 - //SEG279 [129] call collision - //SEG280 [99] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] - //SEG281 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy - //SEG282 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy - //SEG283 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy - //SEG284 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#69 [phi:play_move_leftright::@7->collision#3] -- register_copy + //SEG355 [167] call collision + //SEG356 [102] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] + //SEG357 [102] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy + //SEG358 [102] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy + //SEG359 [102] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy + //SEG360 [102] phi (byte*) current_piece#15 = (byte*~) current_piece#69 [phi:play_move_down::@12->collision#3] -- register_copy jsr collision - //SEG285 [130] (byte) collision::return#12 ← (byte) collision::return#14 - // (byte) collision::return#12 = (byte) collision::return#14 // register copy reg byte a - //SEG286 play_move_leftright::@15 - //SEG287 [131] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 - // (byte~) play_move_leftright::$4 = (byte) collision::return#12 // register copy reg byte a - //SEG288 [132] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 - cmp #COLLISION_NONE - bne b3 - //SEG289 play_move_leftright::@8 - //SEG290 [133] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 - inc current_xpos - //SEG291 [134] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] - b2: - //SEG292 [134] phi (byte) current_xpos#23 = (byte) current_xpos#9 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG293 [134] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 - lda #1 - jmp breturn - //SEG294 [134] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] - b3: - //SEG295 [134] phi (byte) current_xpos#23 = (byte) current_xpos#19 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG296 [134] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 - lda #0 - //SEG297 play_move_leftright::@return - breturn: - //SEG298 [135] return - rts - //SEG299 play_move_leftright::@1 - b1: - //SEG300 [136] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 - ldx current_xpos - dex - stx collision.xpos - //SEG301 [137] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuyy=vbuz1 - ldy current_ypos - //SEG302 [138] (byte) collision::orientation#1 ← (byte) current_piece_orientation#18 -- vbuxx=vbuz1 - ldx current_piece_orientation - //SEG303 [139] (byte*~) current_piece#68 ← (byte*) current_piece#13 -- pbuz1=pbuz2 - lda current_piece - sta current_piece_68 - lda current_piece+1 - sta current_piece_68+1 - //SEG304 [140] call collision - //SEG305 [99] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] - //SEG306 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy - //SEG307 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy - //SEG308 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy - //SEG309 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#68 [phi:play_move_leftright::@1->collision#3] -- register_copy - jsr collision - //SEG310 [141] (byte) collision::return#1 ← (byte) collision::return#14 - // (byte) collision::return#1 = (byte) collision::return#14 // register copy reg byte a - //SEG311 play_move_leftright::@14 - //SEG312 [142] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 - // (byte~) play_move_leftright::$8 = (byte) collision::return#1 // register copy reg byte a - //SEG313 [143] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 - cmp #COLLISION_NONE - bne b3 - //SEG314 play_move_leftright::@11 - //SEG315 [144] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 - dec current_xpos - jmp b2 -} -//SEG316 play_move_down -play_move_down: { - //SEG317 [145] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 - inc current_movedown_counter - //SEG318 [146] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 - cmp #KEY_SPACE - bne b3 - //SEG319 [147] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] - //SEG320 play_move_down::@8 - //SEG321 [148] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] - //SEG322 [148] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 - ldx #1 - jmp b1 - //SEG323 [148] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] - b3: - //SEG324 [148] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 - ldx #0 - //SEG325 play_move_down::@1 - b1: - //SEG326 [149] call keyboard_event_pressed - //SEG327 [194] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] - //SEG328 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 - lda #KEY_SPACE - sta keyboard_event_pressed.keycode - jsr keyboard_event_pressed - //SEG329 [150] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 - // (byte) keyboard_event_pressed::return#12 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG330 play_move_down::@17 - //SEG331 [151] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - // (byte~) play_move_down::$2 = (byte) keyboard_event_pressed::return#12 // register copy reg byte a - //SEG332 [152] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 - cmp #0 - beq b2 - //SEG333 play_move_down::@9 - //SEG334 [153] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 - lda current_movedown_counter - cmp #current_movedown_rate_fast - bcc b2 - //SEG335 play_move_down::@10 - //SEG336 [154] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx - inx - //SEG337 [155] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] - //SEG338 [155] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy - //SEG339 play_move_down::@2 - b2: - //SEG340 [156] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 - lda current_movedown_counter - cmp #current_movedown_rate - bcc b4 - //SEG341 play_move_down::@11 - //SEG342 [157] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx - inx - //SEG343 [158] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] - //SEG344 [158] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy - //SEG345 play_move_down::@4 - b4: - //SEG346 [159] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 - cpx #0 - beq b5 - //SEG347 play_move_down::@12 - //SEG348 [160] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 - ldy current_ypos - iny - //SEG349 [161] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 - lda current_xpos - sta collision.xpos - //SEG350 [162] (byte) collision::orientation#0 ← (byte) current_piece_orientation#15 -- vbuxx=vbuz1 - ldx current_piece_orientation - //SEG351 [163] (byte*~) current_piece#67 ← (byte*) current_piece#11 -- pbuz1=pbuz2 - lda current_piece - sta current_piece_67 - lda current_piece+1 - sta current_piece_67+1 - //SEG352 [164] call collision - //SEG353 [99] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] - //SEG354 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy - //SEG355 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy - //SEG356 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy - //SEG357 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#67 [phi:play_move_down::@12->collision#3] -- register_copy - jsr collision - //SEG358 [165] (byte) collision::return#0 ← (byte) collision::return#14 + //SEG361 [168] (byte) collision::return#0 ← (byte) collision::return#14 // (byte) collision::return#0 = (byte) collision::return#14 // register copy reg byte a - //SEG359 play_move_down::@18 - //SEG360 [166] (byte~) play_move_down::$12 ← (byte) collision::return#0 + //SEG362 play_move_down::@18 + //SEG363 [169] (byte~) play_move_down::$12 ← (byte) collision::return#0 // (byte~) play_move_down::$12 = (byte) collision::return#0 // register copy reg byte a - //SEG361 [167] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 + //SEG364 [170] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 cmp #COLLISION_NONE beq b6 - //SEG362 [168] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] - //SEG363 play_move_down::@13 - //SEG364 [169] call lock_current - //SEG365 [178] phi from play_move_down::@13 to lock_current [phi:play_move_down::@13->lock_current] + //SEG365 [171] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG366 play_move_down::@13 + //SEG367 [172] call lock_current jsr lock_current - //SEG366 [170] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] - //SEG367 play_move_down::@19 - //SEG368 [171] call spawn_current - //SEG369 [176] phi from play_move_down::@19 to spawn_current [phi:play_move_down::@19->spawn_current] + //SEG368 [173] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG369 play_move_down::@19 + //SEG370 [174] call spawn_current jsr spawn_current - //SEG370 [172] phi from play_move_down::@19 to play_move_down::@7 [phi:play_move_down::@19->play_move_down::@7] - //SEG371 [172] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@19->play_move_down::@7#0] -- vbuz1=vbuc1 + //SEG371 [175] (byte*~) current_piece#73 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + ldy spawn_current._3 + lda PIECES,y + sta current_piece + lda PIECES+1,y + sta current_piece+1 + //SEG372 [176] phi from play_move_down::@19 to play_move_down::@7 [phi:play_move_down::@19->play_move_down::@7] + //SEG373 [176] phi (byte) current_piece_color#23 = (byte) current_piece_color#15 [phi:play_move_down::@19->play_move_down::@7#0] -- register_copy + //SEG374 [176] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@19->play_move_down::@7#1] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG372 [172] phi (byte) current_piece_color#23 = (const byte) GREEN#0 [phi:play_move_down::@19->play_move_down::@7#1] -- vbuz1=vbuc1 - lda #GREEN - sta current_piece_color - //SEG373 [172] phi (byte*) current_piece_gfx#29 = (const byte[4*4*4]) piece_t#0 [phi:play_move_down::@19->play_move_down::@7#2] -- pbuz1=pbuc1 - lda #piece_t - sta current_piece_gfx+1 - //SEG374 [172] phi (byte) current_piece_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#3] -- vbuz1=vbuc1 - lda #0 - sta current_piece_orientation - //SEG375 [172] phi (byte*) current_piece#23 = (const byte[4*4*4]) piece_t#0 [phi:play_move_down::@19->play_move_down::@7#4] -- pbuz1=pbuc1 - lda #piece_t - sta current_piece+1 - //SEG376 [172] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#5] -- vbuz1=vbuc1 + //SEG375 [176] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#10 [phi:play_move_down::@19->play_move_down::@7#2] -- register_copy + //SEG376 [176] phi (byte) current_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 + sta current_orientation + //SEG377 [176] phi (byte*) current_piece#23 = (byte*~) current_piece#73 [phi:play_move_down::@19->play_move_down::@7#4] -- register_copy + //SEG378 [176] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#5] -- vbuz1=vbuc1 sta current_ypos - //SEG377 play_move_down::@7 + //SEG379 play_move_down::@7 b7: - //SEG378 [173] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] - //SEG379 [173] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG380 [173] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG381 [173] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG382 [173] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG383 [173] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG384 [173] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG385 [173] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 + //SEG380 [177] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG381 [177] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG382 [177] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG383 [177] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG384 [177] phi (byte) current_orientation#18 = (byte) current_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG385 [177] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG386 [177] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG387 [177] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG386 [173] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuxx=vbuc1 + //SEG388 [177] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuxx=vbuc1 ldx #1 jmp breturn - //SEG387 [173] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG389 [177] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] b5: - //SEG388 [173] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG389 [173] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG390 [173] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG391 [173] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG392 [173] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG393 [173] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG394 [173] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG395 [173] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuxx=vbuc1 + //SEG390 [177] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG391 [177] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG392 [177] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG393 [177] phi (byte) current_orientation#18 = (byte) current_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG394 [177] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG395 [177] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG396 [177] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG397 [177] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuxx=vbuc1 ldx #0 - //SEG396 play_move_down::@return + //SEG398 play_move_down::@return breturn: - //SEG397 [174] return + //SEG399 [178] return rts - //SEG398 play_move_down::@6 + //SEG400 play_move_down::@6 b6: - //SEG399 [175] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 + //SEG401 [179] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG400 [172] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] - //SEG401 [172] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG402 [172] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG403 [172] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG404 [172] phi (byte) current_piece_orientation#33 = (byte) current_piece_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG405 [172] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG406 [172] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG402 [176] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG403 [176] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG404 [176] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG405 [176] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG406 [176] phi (byte) current_orientation#33 = (byte) current_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG407 [176] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG408 [176] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG407 spawn_current +//SEG409 spawn_current spawn_current: { - //SEG408 spawn_current::@return - //SEG409 [177] return + .label _3 = 2 + //SEG410 [180] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + inc BORDERCOL + //SEG411 [181] phi from spawn_current to spawn_current::@1 [phi:spawn_current->spawn_current::@1] + //SEG412 [181] phi (byte) spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:spawn_current->spawn_current::@1#0] -- vbuxx=vbuc1 + ldx #7 + //SEG413 spawn_current::@1 + b1: + //SEG414 [182] if((byte) spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto spawn_current::@2 -- vbuxx_eq_vbuc1_then_la1 + cpx #7 + beq b2 + //SEG415 spawn_current::@3 + //SEG416 [183] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + dec BORDERCOL + //SEG417 [184] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + txa + asl + sta _3 + //SEG418 [185] (byte*) current_piece_gfx#10 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 + tay + lda PIECES,y + sta current_piece_gfx + lda PIECES+1,y + sta current_piece_gfx+1 + //SEG419 [186] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + lda PIECES_COLORS,x + sta current_piece_color + //SEG420 spawn_current::@return + //SEG421 [187] return + rts + //SEG422 [188] phi from spawn_current::@1 to spawn_current::@2 [phi:spawn_current::@1->spawn_current::@2] + //SEG423 spawn_current::@2 + b2: + //SEG424 [189] call sid_rnd + jsr sid_rnd + //SEG425 [190] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + // (byte) sid_rnd::return#2 = (byte) sid_rnd::return#0 // register copy reg byte a + //SEG426 spawn_current::@7 + //SEG427 [191] (byte~) spawn_current::$1 ← (byte) sid_rnd::return#2 + // (byte~) spawn_current::$1 = (byte) sid_rnd::return#2 // register copy reg byte a + //SEG428 [192] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 + and #7 + tax + //SEG429 [181] phi from spawn_current::@7 to spawn_current::@1 [phi:spawn_current::@7->spawn_current::@1] + //SEG430 [181] phi (byte) spawn_current::piece_idx#2 = (byte) spawn_current::piece_idx#1 [phi:spawn_current::@7->spawn_current::@1#0] -- register_copy + jmp b1 +} +//SEG431 sid_rnd +sid_rnd: { + //SEG432 [193] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + lda SID_VOICE3_OSC + //SEG433 sid_rnd::@return + //SEG434 [194] return rts } -//SEG410 lock_current +//SEG435 lock_current lock_current: { + .label ypos2 = 2 .label playfield_line = 5 - .label i = 4 + .label col = 7 + .label i = 8 .label l = 3 - //SEG411 [179] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] - //SEG412 [179] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 + .label i_2 = 4 + .label i_3 = 4 + .label i_7 = 4 + .label i_9 = 4 + //SEG436 [195] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + asl ypos2 + //SEG437 [196] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] + //SEG438 [196] phi (byte) lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 lda #0 - sta i - //SEG413 [179] phi (byte) lock_current::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 sta l - //SEG414 [179] phi from lock_current::@5 to lock_current::@1 [phi:lock_current::@5->lock_current::@1] - //SEG415 [179] phi (byte) lock_current::i#3 = (byte) lock_current::i#1 [phi:lock_current::@5->lock_current::@1#0] -- register_copy - //SEG416 [179] phi (byte) lock_current::l#2 = (byte) lock_current::l#1 [phi:lock_current::@5->lock_current::@1#1] -- register_copy - //SEG417 lock_current::@1 + //SEG439 [196] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 + sta i_3 + //SEG440 [196] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy + //SEG441 lock_current::@1 b1: - //SEG418 [180] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 -- vbuaa=vbuz1_plus_vbuz2 - lda current_ypos - clc - adc l - //SEG419 [181] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_rol_1 - asl - //SEG420 [182] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) -- pbuz1=pptc1_derefidx_vbuaa - tay + //SEG442 [197] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG421 [183] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] - //SEG422 [183] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuxx=vbuc1 + //SEG443 [198] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + lda current_xpos + sta col + //SEG444 [199] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] + //SEG445 [199] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG423 [183] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#1] -- register_copy - //SEG424 [183] phi from lock_current::@3 to lock_current::@2 [phi:lock_current::@3->lock_current::@2] - //SEG425 [183] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@3->lock_current::@2#0] -- register_copy - //SEG426 [183] phi (byte) lock_current::i#2 = (byte) lock_current::i#1 [phi:lock_current::@3->lock_current::@2#1] -- register_copy - //SEG427 lock_current::@2 + //SEG446 [199] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy + //SEG447 [199] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy + //SEG448 lock_current::@2 b2: - //SEG428 [184] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#15 + (byte) lock_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 - ldy i + //SEG449 [200] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 + ldy i_2 + iny + sty i + //SEG450 [201] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + ldy i_2 lda (current_piece_gfx),y - //SEG429 [185] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz1 - inc i - //SEG430 [186] if((byte) lock_current::cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 - //SEG431 lock_current::@4 - //SEG432 [187] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 -- vbuaa=vbuz1_plus_vbuxx - txa - clc - adc current_xpos - //SEG433 [188] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuaa=vbuz2 - tay + //SEG451 lock_current::@4 + //SEG452 [202] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_color + ldy col sta (playfield_line),y - //SEG434 lock_current::@3 + //SEG453 lock_current::@3 b3: - //SEG435 [189] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG454 [203] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 + inc col + //SEG455 [204] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG436 [190] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG456 [205] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #4 - bne b2 - //SEG437 lock_current::@5 - //SEG438 [191] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#2 -- vbuz1=_inc_vbuz1 + bne b8 + //SEG457 lock_current::@5 + //SEG458 [206] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + lda ypos2 + clc + adc #2 + sta ypos2 + //SEG459 [207] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG439 [192] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG460 [208] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 - bne b1 - //SEG440 lock_current::@return - //SEG441 [193] return + bne b7 + //SEG461 lock_current::@return + //SEG462 [209] return rts + //SEG463 lock_current::@7 + b7: + //SEG464 [210] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + lda i + sta i_7 + //SEG465 [196] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] + //SEG466 [196] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy + //SEG467 [196] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy + //SEG468 [196] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy + jmp b1 + //SEG469 lock_current::@8 + b8: + //SEG470 [211] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + lda i + sta i_9 + //SEG471 [199] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] + //SEG472 [199] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy + //SEG473 [199] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy + //SEG474 [199] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy + jmp b2 } -//SEG442 keyboard_event_pressed +//SEG475 keyboard_event_pressed keyboard_event_pressed: { .label row_bits = 7 .label keycode = 4 - //SEG443 [195] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 + //SEG476 [213] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 lda keycode lsr lsr lsr - //SEG444 [196] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG477 [214] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda keyboard_scan_values,y sta row_bits - //SEG445 [197] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 + //SEG478 [215] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 lda #7 and keycode - //SEG446 [198] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa + //SEG479 [216] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa tay lda keyboard_matrix_col_bitmask,y and row_bits - //SEG447 keyboard_event_pressed::@return - //SEG448 [199] return + //SEG480 keyboard_event_pressed::@return + //SEG481 [217] return rts } -//SEG449 keyboard_event_get +//SEG482 keyboard_event_get keyboard_event_get: { - //SEG450 [200] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + //SEG483 [218] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq b1 - //SEG451 keyboard_event_get::@3 - //SEG452 [201] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG484 keyboard_event_get::@3 + //SEG485 [219] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG453 [202] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG486 [220] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 ldy keyboard_events_size lda keyboard_events,y - //SEG454 [203] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] - //SEG455 [203] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG456 [203] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy + //SEG487 [221] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG488 [221] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG489 [221] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG457 [203] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG490 [221] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] b1: - //SEG458 [203] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG459 [203] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 + //SEG491 [221] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG492 [221] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 lda #$ff - //SEG460 keyboard_event_get::@return + //SEG493 keyboard_event_get::@return breturn: - //SEG461 [204] return + //SEG494 [222] return rts } -//SEG462 keyboard_event_scan +//SEG495 keyboard_event_scan keyboard_event_scan: { .label row_scan = 8 .label keycode = 7 .label row = 4 - //SEG463 [206] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] - //SEG464 [206] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG465 [206] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 + //SEG496 [224] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG497 [224] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG498 [224] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG466 [206] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 + //SEG499 [224] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 sta row - //SEG467 [206] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] - //SEG468 [206] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG469 [206] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy - //SEG470 [206] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy - //SEG471 keyboard_event_scan::@1 + //SEG500 [224] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG501 [224] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG502 [224] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG503 [224] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy + //SEG504 keyboard_event_scan::@1 b1: - //SEG472 [207] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG505 [225] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG473 [208] call keyboard_matrix_read + //SEG506 [226] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG474 [209] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG507 [227] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 // (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#0 // register copy reg byte a - //SEG475 keyboard_event_scan::@25 - //SEG476 [210] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG508 keyboard_event_scan::@25 + //SEG509 [228] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG477 [211] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG510 [229] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 ldy row cmp keyboard_scan_values,y bne b2 - //SEG478 keyboard_event_scan::@13 - //SEG479 [212] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 + //SEG511 keyboard_event_scan::@13 + //SEG512 [230] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG480 [213] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] - //SEG481 [213] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG482 [213] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy - //SEG483 keyboard_event_scan::@3 + //SEG513 [231] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] + //SEG514 [231] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG515 [231] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy + //SEG516 keyboard_event_scan::@3 b3: - //SEG484 [214] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG517 [232] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG485 [215] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG518 [233] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1 - //SEG486 [216] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] - //SEG487 keyboard_event_scan::@20 - //SEG488 [217] call keyboard_event_pressed - //SEG489 [194] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] - //SEG490 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG519 [234] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG520 keyboard_event_scan::@20 + //SEG521 [235] call keyboard_event_pressed + //SEG522 [212] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG523 [212] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG491 [218] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG524 [236] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG492 keyboard_event_scan::@26 - //SEG493 [219] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG525 keyboard_event_scan::@26 + //SEG526 [237] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 // (byte~) keyboard_event_scan::$14 = (byte) keyboard_event_pressed::return#0 // register copy reg byte a - //SEG494 [220] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 + //SEG527 [238] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG495 [221] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] - //SEG496 keyboard_event_scan::@21 - //SEG497 [222] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] - //SEG498 keyboard_event_scan::@9 - //SEG499 [223] call keyboard_event_pressed - //SEG500 [194] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] - //SEG501 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG528 [239] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG529 keyboard_event_scan::@21 + //SEG530 [240] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG531 keyboard_event_scan::@9 + //SEG532 [241] call keyboard_event_pressed + //SEG533 [212] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG534 [212] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG502 [224] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG535 [242] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG503 keyboard_event_scan::@27 - //SEG504 [225] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG536 keyboard_event_scan::@27 + //SEG537 [243] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 // (byte~) keyboard_event_scan::$18 = (byte) keyboard_event_pressed::return#1 // register copy reg byte a - //SEG505 [226] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 + //SEG538 [244] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG506 [227] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] - //SEG507 keyboard_event_scan::@22 - //SEG508 [228] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] - //SEG509 keyboard_event_scan::@10 - //SEG510 [229] call keyboard_event_pressed - //SEG511 [194] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] - //SEG512 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG539 [245] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] + //SEG540 keyboard_event_scan::@22 + //SEG541 [246] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] + //SEG542 keyboard_event_scan::@10 + //SEG543 [247] call keyboard_event_pressed + //SEG544 [212] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG545 [212] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG513 [230] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG546 [248] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG514 keyboard_event_scan::@28 - //SEG515 [231] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG547 keyboard_event_scan::@28 + //SEG548 [249] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 // (byte~) keyboard_event_scan::$22 = (byte) keyboard_event_pressed::return#2 // register copy reg byte a - //SEG516 [232] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 + //SEG549 [250] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG517 [233] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] - //SEG518 keyboard_event_scan::@23 - //SEG519 [234] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] - //SEG520 keyboard_event_scan::@11 - //SEG521 [235] call keyboard_event_pressed - //SEG522 [194] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] - //SEG523 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG550 [251] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] + //SEG551 keyboard_event_scan::@23 + //SEG552 [252] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] + //SEG553 keyboard_event_scan::@11 + //SEG554 [253] call keyboard_event_pressed + //SEG555 [212] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG556 [212] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG524 [236] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG557 [254] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#10 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG525 keyboard_event_scan::@29 - //SEG526 [237] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + //SEG558 keyboard_event_scan::@29 + //SEG559 [255] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 // (byte~) keyboard_event_scan::$26 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a - //SEG527 [238] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 + //SEG560 [256] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 cmp #0 - //SEG528 [239] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] - //SEG529 keyboard_event_scan::@24 - //SEG530 keyboard_event_scan::@return - //SEG531 [240] return + //SEG561 [257] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] + //SEG562 keyboard_event_scan::@24 + //SEG563 keyboard_event_scan::@return + //SEG564 [258] return rts - //SEG532 [241] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG565 [259] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b2: - //SEG533 [241] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG534 [241] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy - //SEG535 [241] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 + //SEG566 [259] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG567 [259] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG568 [259] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 ldx #0 - //SEG536 [241] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] - //SEG537 [241] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG538 [241] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy - //SEG539 [241] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy - //SEG540 keyboard_event_scan::@4 + //SEG569 [259] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG570 [259] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG571 [259] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG572 [259] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy + //SEG573 keyboard_event_scan::@4 b4: - //SEG541 [242] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 + //SEG574 [260] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 lda row_scan ldy row eor keyboard_scan_values,y - //SEG542 [243] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx + //SEG575 [261] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx and keyboard_matrix_col_bitmask,x - //SEG543 [244] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 + //SEG576 [262] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG544 keyboard_event_scan::@15 - //SEG545 [245] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG577 keyboard_event_scan::@15 + //SEG578 [263] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5 - //SEG546 keyboard_event_scan::@16 - //SEG547 [246] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx + //SEG579 keyboard_event_scan::@16 + //SEG580 [264] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx lda keyboard_matrix_col_bitmask,x and row_scan - //SEG548 [247] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 + //SEG581 [265] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 - //SEG549 keyboard_event_scan::@17 - //SEG550 [248] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG582 keyboard_event_scan::@17 + //SEG583 [266] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG551 [249] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG584 [267] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG552 [250] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] - //SEG553 [250] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy - //SEG554 keyboard_event_scan::@5 + //SEG585 [268] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] + //SEG586 [268] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG587 keyboard_event_scan::@5 b5: - //SEG555 [251] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG588 [269] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG556 [252] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG589 [270] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG557 [253] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG590 [271] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b4 - //SEG558 keyboard_event_scan::@19 - //SEG559 [254] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG591 keyboard_event_scan::@19 + //SEG592 [272] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3 - //SEG560 keyboard_event_scan::@7 + //SEG593 keyboard_event_scan::@7 b7: - //SEG561 [255] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 + //SEG594 [273] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 lda #$40 ora keycode - //SEG562 [256] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG595 [274] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa ldy keyboard_events_size sta keyboard_events,y - //SEG563 [257] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG596 [275] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5 } -//SEG564 keyboard_matrix_read +//SEG597 keyboard_matrix_read keyboard_matrix_read: { - //SEG565 [258] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx + //SEG598 [276] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A - //SEG566 [259] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG599 [277] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff - //SEG567 keyboard_matrix_read::@return - //SEG568 [260] return + //SEG600 keyboard_matrix_read::@return + //SEG601 [278] return rts } -//SEG569 init +//SEG602 init init: { .label _13 = $c .label li = 5 .label pli = 5 .label line = 5 .label l = 2 - //SEG570 [262] call fill - //SEG571 [287] phi from init to fill [phi:init->fill] - //SEG572 [287] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:init->fill#0] -- vbuxx=vbuc1 + //SEG603 [280] call fill + //SEG604 [305] phi from init to fill [phi:init->fill] + //SEG605 [305] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:init->fill#0] -- vbuxx=vbuc1 ldx #$a0 - //SEG573 [287] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:init->fill#1] -- pbuz1=pbuc1 + //SEG606 [305] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:init->fill#1] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG574 [263] phi from init to init::@9 [phi:init->init::@9] - //SEG575 init::@9 - //SEG576 [264] call fill - //SEG577 [287] phi from init::@9 to fill [phi:init::@9->fill] - //SEG578 [287] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@9->fill#0] -- vbuxx=vbuc1 + //SEG607 [281] phi from init to init::@9 [phi:init->init::@9] + //SEG608 init::@9 + //SEG609 [282] call fill + //SEG610 [305] phi from init::@9 to fill [phi:init::@9->fill] + //SEG611 [305] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@9->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG579 [287] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:init::@9->fill#1] -- pbuz1=pbuc1 + //SEG612 [305] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:init::@9->fill#1] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG580 [265] phi from init::@9 to init::@1 [phi:init::@9->init::@1] - //SEG581 [265] phi (byte*) init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:init::@9->init::@1#0] -- pbuz1=pbuc1 + //SEG613 [283] phi from init::@9 to init::@1 [phi:init::@9->init::@1] + //SEG614 [283] phi (byte*) init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:init::@9->init::@1#0] -- pbuz1=pbuc1 lda #COLS+$28+$f sta li+1 - //SEG582 [265] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@9->init::@1#1] -- vbuxx=vbuc1 + //SEG615 [283] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@9->init::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG583 [265] phi from init::@1 to init::@1 [phi:init::@1->init::@1] - //SEG584 [265] phi (byte*) init::li#2 = (byte*) init::li#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG585 [265] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#1] -- register_copy - //SEG586 init::@1 + //SEG616 [283] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG617 [283] phi (byte*) init::li#2 = (byte*) init::li#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG618 [283] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#1] -- register_copy + //SEG619 init::@1 b1: - //SEG587 [266] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG620 [284] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG588 [267] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG621 [285] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li sta screen_lines,y lda li+1 sta screen_lines+1,y - //SEG589 [268] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG622 [286] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li clc adc #$28 @@ -11892,34 +12601,34 @@ init: { bcc !+ inc li+1 !: - //SEG590 [269] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx + //SEG623 [287] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG591 [270] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG624 [288] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES+2+1 bne b1 - //SEG592 [271] phi from init::@1 to init::@2 [phi:init::@1->init::@2] - //SEG593 [271] phi (byte*) init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:init::@1->init::@2#0] -- pbuz1=pbuc1 + //SEG625 [289] phi from init::@1 to init::@2 [phi:init::@1->init::@2] + //SEG626 [289] phi (byte*) init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:init::@1->init::@2#0] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG594 [271] phi (byte) init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#1] -- vbuxx=vbuc1 + //SEG627 [289] phi (byte) init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#1] -- vbuxx=vbuc1 ldx #0 - //SEG595 [271] phi from init::@2 to init::@2 [phi:init::@2->init::@2] - //SEG596 [271] phi (byte*) init::pli#2 = (byte*) init::pli#1 [phi:init::@2->init::@2#0] -- register_copy - //SEG597 [271] phi (byte) init::j#2 = (byte) init::j#1 [phi:init::@2->init::@2#1] -- register_copy - //SEG598 init::@2 + //SEG628 [289] phi from init::@2 to init::@2 [phi:init::@2->init::@2] + //SEG629 [289] phi (byte*) init::pli#2 = (byte*) init::pli#1 [phi:init::@2->init::@2#0] -- register_copy + //SEG630 [289] phi (byte) init::j#2 = (byte) init::j#1 [phi:init::@2->init::@2#1] -- register_copy + //SEG631 init::@2 b2: - //SEG599 [272] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG632 [290] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG600 [273] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG633 [291] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG601 [274] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- pbuz1=pbuz1_plus_vbuc1 + //SEG634 [292] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #$a @@ -11927,33 +12636,33 @@ init: { bcc !+ inc pli+1 !: - //SEG602 [275] (byte) init::j#1 ← ++ (byte) init::j#2 -- vbuxx=_inc_vbuxx + //SEG635 [293] (byte) init::j#1 ← ++ (byte) init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG603 [276] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG636 [294] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b2 - //SEG604 [277] phi from init::@2 to init::@3 [phi:init::@2->init::@3] - //SEG605 [277] phi (byte) init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuz1=vbuc1 + //SEG637 [295] phi from init::@2 to init::@3 [phi:init::@2->init::@3] + //SEG638 [295] phi (byte) init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG606 [277] phi (byte*) init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:init::@2->init::@3#1] -- pbuz1=pbuc1 + //SEG639 [295] phi (byte*) init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:init::@2->init::@3#1] -- pbuz1=pbuc1 lda #COLS+$e sta line+1 - //SEG607 [277] phi from init::@7 to init::@3 [phi:init::@7->init::@3] - //SEG608 [277] phi (byte) init::l#4 = (byte) init::l#1 [phi:init::@7->init::@3#0] -- register_copy - //SEG609 [277] phi (byte*) init::line#4 = (byte*) init::line#1 [phi:init::@7->init::@3#1] -- register_copy - //SEG610 init::@3 + //SEG640 [295] phi from init::@7 to init::@3 [phi:init::@7->init::@3] + //SEG641 [295] phi (byte) init::l#4 = (byte) init::l#1 [phi:init::@7->init::@3#0] -- register_copy + //SEG642 [295] phi (byte*) init::line#4 = (byte*) init::line#1 [phi:init::@7->init::@3#1] -- register_copy + //SEG643 init::@3 b3: - //SEG611 [278] phi from init::@3 to init::@4 [phi:init::@3->init::@4] - //SEG612 [278] phi (byte) init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@4#0] -- vbuxx=vbuc1 + //SEG644 [296] phi from init::@3 to init::@4 [phi:init::@3->init::@4] + //SEG645 [296] phi (byte) init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG613 [278] phi from init::@4 to init::@4 [phi:init::@4->init::@4] - //SEG614 [278] phi (byte) init::c#2 = (byte) init::c#1 [phi:init::@4->init::@4#0] -- register_copy - //SEG615 init::@4 + //SEG646 [296] phi from init::@4 to init::@4 [phi:init::@4->init::@4] + //SEG647 [296] phi (byte) init::c#2 = (byte) init::c#1 [phi:init::@4->init::@4#0] -- register_copy + //SEG648 init::@4 b4: - //SEG616 [279] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 -- pbuz1=pbuz2_plus_vbuxx + //SEG649 [297] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 -- pbuz1=pbuz2_plus_vbuxx txa clc adc line @@ -11961,17 +12670,17 @@ init: { lda #0 adc line+1 sta _13+1 - //SEG617 [280] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG650 [298] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (_13),y - //SEG618 [281] (byte) init::c#1 ← ++ (byte) init::c#2 -- vbuxx=_inc_vbuxx + //SEG651 [299] (byte) init::c#1 ← ++ (byte) init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG619 [282] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG652 [300] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS+1+1 bne b4 - //SEG620 init::@7 - //SEG621 [283] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG653 init::@7 + //SEG654 [301] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -11979,21 +12688,21 @@ init: { bcc !+ inc line+1 !: - //SEG622 [284] (byte) init::l#1 ← ++ (byte) init::l#4 -- vbuz1=_inc_vbuz1 + //SEG655 [302] (byte) init::l#1 ← ++ (byte) init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG623 [285] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG656 [303] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES+1+1 bne b3 - //SEG624 init::@return - //SEG625 [286] return + //SEG657 init::@return + //SEG658 [304] return rts } -//SEG626 fill +//SEG659 fill fill: { .label end = $c .label addr = 5 - //SEG627 [288] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG660 [306] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -12001,28 +12710,42 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG628 [289] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] - //SEG629 [289] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy - //SEG630 fill::@1 + //SEG661 [307] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG662 [307] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG663 fill::@1 b1: - //SEG631 [290] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG664 [308] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG632 [291] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG665 [309] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG633 [292] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG666 [310] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 lda addr+1 cmp end+1 bne b1 lda addr cmp end bne b1 - //SEG634 fill::@return - //SEG635 [293] return + //SEG667 fill::@return + //SEG668 [311] return + rts +} +//SEG669 sid_rnd_init +sid_rnd_init: { + //SEG670 [312] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + lda #<$ffff + sta SID_VOICE3_FREQ + lda #>$ffff + sta SID_VOICE3_FREQ+1 + //SEG671 [313] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + lda #SID_CONTROL_NOISE + sta SID_VOICE3_CONTROL + //SEG672 sid_rnd_init::@return + //SEG673 [314] return rts } keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f @@ -12030,8 +12753,22 @@ fill: { 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 diff --git a/src/test/ref/examples/tetris/tetris.sym b/src/test/ref/examples/tetris/tetris.sym index 1bd4352ee..70193eb19 100644 --- a/src/test/ref/examples/tetris/tetris.sym +++ b/src/test/ref/examples/tetris/tetris.sym @@ -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 ]