From d956ff9fcf652a5c086ada61a11381470d55b2c8 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Thu, 27 Dec 2018 00:09:10 +0100 Subject: [PATCH] Rearranged Tetris files. --- src/test/kc/examples/tetris/test-sprites.kc | 2 +- src/test/kc/examples/tetris/tetris-data.kc | 28 + src/test/kc/examples/tetris/tetris-play.kc | 225 + src/test/kc/examples/tetris/tetris-render.kc | 67 + ...playfield-sprites.kc => tetris-sprites.kc} | 38 +- src/test/kc/examples/tetris/tetris.kc | 320 +- src/test/ref/examples/tetris/test-sprites.asm | 6 +- src/test/ref/examples/tetris/test-sprites.cfg | 28 +- src/test/ref/examples/tetris/test-sprites.log | 352 +- src/test/ref/examples/tetris/test-sprites.sym | 13 +- src/test/ref/examples/tetris/tetris.asm | 96 +- src/test/ref/examples/tetris/tetris.cfg | 538 +- src/test/ref/examples/tetris/tetris.log | 9837 ++++++++--------- src/test/ref/examples/tetris/tetris.sym | 482 +- 14 files changed, 6055 insertions(+), 5977 deletions(-) create mode 100644 src/test/kc/examples/tetris/tetris-data.kc create mode 100644 src/test/kc/examples/tetris/tetris-play.kc create mode 100644 src/test/kc/examples/tetris/tetris-render.kc rename src/test/kc/examples/tetris/{playfield-sprites.kc => tetris-sprites.kc} (90%) diff --git a/src/test/kc/examples/tetris/test-sprites.kc b/src/test/kc/examples/tetris/test-sprites.kc index fcdd2cba2..2e0b61102 100644 --- a/src/test/kc/examples/tetris/test-sprites.kc +++ b/src/test/kc/examples/tetris/test-sprites.kc @@ -1,4 +1,4 @@ -import "playfield-sprites" +import "tetris-sprites" void main() { init_sprites(); diff --git a/src/test/kc/examples/tetris/tetris-data.kc b/src/test/kc/examples/tetris/tetris-data.kc new file mode 100644 index 000000000..320dc1af0 --- /dev/null +++ b/src/test/kc/examples/tetris/tetris-data.kc @@ -0,0 +1,28 @@ +// Memory Layout and Shared Data + +// Address of the screen +const byte* PLAYFIELD_SCREEN = $0400; +// Screen Sprite pointers +const byte* PLAYFIELD_SPRITE_PTRS = (PLAYFIELD_SCREEN+SPRITE_PTRS); +// Address of the sprites covering the playfield +const byte* PLAYFIELD_SPRITES = $2000; +// Address of the charset +byte* PLAYFIELD_CHARSET = $2800; + +// The size of the playfield +const byte PLAYFIELD_LINES = 22; +const byte PLAYFIELD_COLS = 10; + +// The playfield. 0 is empty non-zero is color. +// 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; + +// 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 +byte current_piece_color = 0; + +// Position of top left corner of current moving piece on the playfield +byte current_xpos = 3; +byte current_ypos = 0; \ No newline at end of file diff --git a/src/test/kc/examples/tetris/tetris-play.kc b/src/test/kc/examples/tetris/tetris-play.kc new file mode 100644 index 000000000..3288f3c59 --- /dev/null +++ b/src/test/kc/examples/tetris/tetris-play.kc @@ -0,0 +1,225 @@ +// Implementation of the games play logic + +import "tetris-data" +import "tetris-pieces" + +// Pointers to the playfield address for each playfield line +byte*[PLAYFIELD_LINES] playfield_lines; + +// Indixes into the playfield for each playfield line +byte[PLAYFIELD_LINES+1] playfield_lines_idx; + +// The current moving piece. Points to the start of the piece definition. +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_orientation = 0; + +// The rate of moving down the current piece (number of frames between moves if movedown is not forced) +const byte current_movedown_slow = 50; + +// The rate of moving down the current piece fast (number of frames between moves if movedown is not forced) +const byte current_movedown_fast = 5; + +// Counts up to the next movedown of current piece +byte current_movedown_counter = 0; + +// Move down the current piece +// Return non-zero if a render is needed +byte play_move_down(byte key_event) { + // Handle moving down current piece + ++current_movedown_counter; + byte movedown = 0; + // As soon as space is pressed move down once + if(key_event==KEY_SPACE) { + movedown++; + } + // While space is held down move down faster + if(keyboard_event_pressed(KEY_SPACE)!=0) { + if(current_movedown_counter>=current_movedown_fast) { + movedown++; + } + } + // Move down slowly otherwise + if(current_movedown_counter>=current_movedown_slow) { + movedown++; + } + // Attempt movedown + if(movedown!=0) { + if(play_collision(current_xpos,current_ypos+1,current_orientation)==COLLISION_NONE) { + // Move current piece down + current_ypos++; + } else { + // Lock current piece + play_lock_current(); + // Check for any lines and remove them + play_remove_lines(); + // Spawn a new piece + play_spawn_current(); + } + current_movedown_counter = 0; + return 1; + } + return 0; +} + +// Move left/right or rotate the current piece +// Return non-zero if a render is needed +byte play_move_leftright(byte key_event) { + // Handle keyboard events + if(key_event==KEY_COMMA) { + if(play_collision(current_xpos-1,current_ypos,current_orientation)==COLLISION_NONE) { + current_xpos--; + return 1; + } + } else if(key_event==KEY_DOT) { + if(play_collision(current_xpos+1,current_ypos,current_orientation)==COLLISION_NONE) { + current_xpos++; + return 1; + } + } + return 0; +} + +// Rotate the current piece based on key-presses +// Return non-zero if a render is needed +byte play_move_rotate(byte key_event) { + // Handle keyboard events + byte orientation = $80; + if(key_event==KEY_Z) { + orientation = (current_orientation-$10)&$3f; + } else if(key_event==KEY_X) { + orientation = (current_orientation+$10)&$3f; + } else { + return 0; + } + if(play_collision(current_xpos, current_ypos, orientation) == COLLISION_NONE) { + current_orientation = orientation; + current_piece_gfx = current_piece + current_orientation; + return 1; + } + return 0; +} + +// No collision +const byte COLLISION_NONE = 0; +// Playfield piece collision (cell on top of other cell on the playfield) +const byte COLLISION_PLAYFIELD = 1; +// Bottom collision (cell below bottom of the playfield) +const byte COLLISION_BOTTOM = 2; +// Left side collision (cell beyond the left side of the playfield) +const byte COLLISION_LEFT = 4; +// Right side collision (cell beyond the right side of the playfield) +const byte COLLISION_RIGHT = 8; + +// Test if there is a collision between the current piece moved to (x, y) and anything on the playfield or the playfield boundaries +// Returns information about the type of the collision detected +byte play_collision(byte xpos, byte ypos, byte orientation) { + byte* piece_gfx = current_piece + orientation; + byte i = 0; + byte ypos2 = ypos<<1; + for(byte l:0..3) { + byte* playfield_line = playfield_lines[ypos2]; + byte col = xpos; + for(byte c:0..3) { + if(piece_gfx[i++]!=0) { + if(ypos2>=2*PLAYFIELD_LINES) { + // Below the playfield bottom + return COLLISION_BOTTOM; + } + if((col&$80)!=0) { + // Beyond left side of the playfield + return COLLISION_LEFT; + } + if(col>=PLAYFIELD_COLS) { + // Beyond left side of the playfield + return COLLISION_RIGHT; + } + if(playfield_line[col]!=0) { + // Collision with a playfield cell + return COLLISION_PLAYFIELD; + } + } + col++; + } + ypos2 += 2; + } + return COLLISION_NONE; +} + +// Lock the current piece onto the playfield +void play_lock_current() { + byte i = 0; + byte ypos2 = current_ypos<<1; + for(byte l:0..3) { + byte* playfield_line = playfield_lines[ypos2]; + byte col = current_xpos; + for(byte c:0..3) { + if(current_piece_gfx[i++]!=0) { + playfield_line[col] = current_piece_color; + } + col++; + } + ypos2 += 2; + } +} + +// Spawn a new piece +void play_spawn_current() { + // Pick a random piece (0-6) + byte piece_idx = 7; + while(piece_idx==7) { + piece_idx = sid_rnd()&7; + } + 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]; +} + +// Look through the playfield for lines - and remove any lines found +// Utilizes two cursors on the playfield - one reading cells and one writing cells +// Whenever a full line is detected the writing cursor is instructed to write to the same line once more. +void play_remove_lines() { + // Start both cursors at the end of the playfield + byte r = PLAYFIELD_LINES*PLAYFIELD_COLS-1; + byte w = PLAYFIELD_LINES*PLAYFIELD_COLS-1; + + // Read all lines and rewrite them + for(byte y:0..PLAYFIELD_LINES-1) { + byte full = 1; + for(byte x:0..PLAYFIELD_COLS-1) { + byte c = playfield[r--]; + if(c==0) { + full = 0; + } + playfield[w--] = c; + } + // If the line is full then re-write it. + if(full==1) { + w = w + PLAYFIELD_COLS; + } + } + + // Write zeros in the rest of the lines + while(w!=$ff) { + playfield[w--] = 0; + } +} + +// Initialize data tables +void play_init() { + // Initialize the playfield line pointers; + byte idx = 0; + byte* pli = playfield; + for(byte j:0..PLAYFIELD_LINES-1) { + playfield_lines[j<<1] = pli; + playfield_lines_idx[j] = idx; + pli += PLAYFIELD_COLS; + idx += PLAYFIELD_COLS; + } + playfield_lines_idx[PLAYFIELD_LINES] = PLAYFIELD_COLS*PLAYFIELD_LINES; +} diff --git a/src/test/kc/examples/tetris/tetris-render.kc b/src/test/kc/examples/tetris/tetris-render.kc new file mode 100644 index 000000000..27900ba68 --- /dev/null +++ b/src/test/kc/examples/tetris/tetris-render.kc @@ -0,0 +1,67 @@ +import "tetris-data" + +kickasm(pc PLAYFIELD_CHARSET, resource "nes-charset.png") {{ + .var charset = LoadPicture("nes-charset.png", List().add($000000, $ffffff)) + .for (var c=0; c<32; c++) + .for (var y=0;y<8; y++) + .byte charset.getSinglecolorByte(c,y) +}} + +// Pointers to the screen address for rendering each playfield line +byte*[PLAYFIELD_LINES+3] screen_lines; + +// Initialize rendering +void render_init() { + *BGCOL = BLACK; + // Clear the screen + fill(PLAYFIELD_SCREEN,1000,$d0); + fill(COLS,1000,BLACK); + // Initialize the screen line pointers; + byte* li = COLS + 40 + 15; + for(byte i:0..PLAYFIELD_LINES+2) { + screen_lines[i<<1] = li; + li += 40; + } + // Prepare the playfield frame + byte* line = COLS + 14; + for(byte l:0..PLAYFIELD_LINES+1) { + for(byte c:0..PLAYFIELD_COLS+1) { + *(line+c) = DARK_GREY; + } + line +=40; + } + +} + +// Render the static playfield on the screen +void render_playfield() { + byte i = 0; + for(byte l:0..PLAYFIELD_LINES-1) { + byte* line = screen_lines[l<<1]; + for(byte c:0..PLAYFIELD_COLS-1) { + *(line++) = playfield[i++]; + } + } +} + +// Render the current moving piece at position (current_xpos, current_ypos) +void render_current() { + byte i = 0; + byte ypos2 = current_ypos<<1; + for(byte l:0..3) { + if(ypos2<2*PLAYFIELD_LINES) { + byte* screen_line = screen_lines[ypos2]; + byte xpos = current_xpos; + for(byte c:0..3) { + byte current_cell = current_piece_gfx[i++]; + if(current_cell!=0) { + if(xpos=current_movedown_fast) { - movedown++; - } - } - // Move down slowly otherwise - if(current_movedown_counter>=current_movedown_slow) { - movedown++; - } - // Attempt movedown - if(movedown!=0) { - if(collision(current_xpos,current_ypos+1,current_orientation)==COLLISION_NONE) { - // Move current piece down - current_ypos++; - } else { - // Lock current piece - lock_current(); - // Check for new lines - remove_lines(); - // Spawn a new piece - spawn_current(); - } - current_movedown_counter = 0; - return 1; - } - return 0; -} - -// Move left/right or rotate the current piece -// Return non-zero if a render is needed -byte play_move_leftright(byte key_event) { - // Handle keyboard events - if(key_event==KEY_COMMA) { - 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_orientation)==COLLISION_NONE) { - current_xpos++; - return 1; - } - } - return 0; -} - -// Rotate the current piece based on key-presses -// Return non-zero if a render is needed -byte play_move_rotate(byte key_event) { - // Handle keyboard events - byte orientation = $80; - if(key_event==KEY_Z) { - orientation = (current_orientation-$10)&$3f; - } else if(key_event==KEY_X) { - orientation = (current_orientation+$10)&$3f; - } else { - return 0; - } - if(collision(current_xpos, current_ypos, orientation) == COLLISION_NONE) { - current_orientation = orientation; - current_piece_gfx = current_piece + current_orientation; - return 1; - } - return 0; -} - -// No collision -const byte COLLISION_NONE = 0; -// Playfield piece collision (cell on top of other cell on the playfield) -const byte COLLISION_PLAYFIELD = 1; -// Bottom collision (cell below bottom of the playfield) -const byte COLLISION_BOTTOM = 2; -// Left side collision (cell beyond the left side of the playfield) -const byte COLLISION_LEFT = 4; -// Right side collision (cell beyond the right side of the playfield) -const byte COLLISION_RIGHT = 8; - -// Test if there is a collision between the current piece moved to (x, y) and anything on the playfield or the playfield boundaries -// Returns information about the type of the collision detected -byte collision(byte xpos, byte ypos, byte orientation) { - byte* piece_gfx = current_piece + orientation; - byte i = 0; - byte ypos2 = ypos<<1; - for(byte l:0..3) { - byte* playfield_line = playfield_lines[ypos2]; - byte col = xpos; - for(byte c:0..3) { - if(piece_gfx[i++]!=0) { - if(ypos2>=2*PLAYFIELD_LINES) { - // Below the playfield bottom - return COLLISION_BOTTOM; - } - if((col&$80)!=0) { - // Beyond left side of the playfield - return COLLISION_LEFT; - } - if(col>=PLAYFIELD_COLS) { - // Beyond left side of the playfield - return COLLISION_RIGHT; - } - if(playfield_line[col]!=0) { - // Collision with a playfield cell - return COLLISION_PLAYFIELD; - } - } - col++; - } - ypos2 += 2; - } - return COLLISION_NONE; -} - -// Lock the current piece onto the playfield -void lock_current() { - byte i = 0; - byte ypos2 = current_ypos<<1; - for(byte l:0..3) { - byte* playfield_line = playfield_lines[ypos2]; - byte col = current_xpos; - for(byte c:0..3) { - if(current_piece_gfx[i++]!=0) { - playfield_line[col] = current_piece_color; - } - col++; - } - ypos2 += 2; - } -} - -// Spawn a new piece -void spawn_current() { - // Pick a random piece (0-6) - byte piece_idx = 7; - while(piece_idx==7) { - piece_idx = sid_rnd()&7; - } - 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]; -} - -// Look through the playfield for lines - and remove any lines found -// Utilizes two cursors on the playfield - one reading cells and one writing cells -// Whenever a full line is detected the writing cursor is instructed to write to the same line once more. -void remove_lines() { - // Start both cursors at the end of the playfield - byte r = PLAYFIELD_LINES*PLAYFIELD_COLS-1; - byte w = PLAYFIELD_LINES*PLAYFIELD_COLS-1; - - // Read all lines and rewrite them - for(byte y:0..PLAYFIELD_LINES-1) { - byte full = 1; - for(byte x:0..PLAYFIELD_COLS-1) { - byte c = playfield[r--]; - if(c==0) { - full = 0; - } - playfield[w--] = c; - } - // If the line is full then re-write it. - if(full==1) { - w = w + PLAYFIELD_COLS; - } - } - - // Write zeros in the rest of the lines - while(w!=$ff) { - playfield[w--] = 0; - } -} - -// Initialize data tables -void tables_init() { - // Initialize the playfield line pointers; - byte idx = 0; - byte* pli = playfield; - for(byte j:0..PLAYFIELD_LINES-1) { - playfield_lines[j<<1] = pli; - playfield_lines_idx[j] = idx; - pli += PLAYFIELD_COLS; - idx += PLAYFIELD_COLS; - } - playfield_lines_idx[PLAYFIELD_LINES] = PLAYFIELD_COLS*PLAYFIELD_LINES; - -} - -// The screen -byte* SCREEN = $400; - -// The charset -byte* CHARSET = $2800; -kickasm(pc CHARSET, resource "charset.png") {{ - .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9)) - .for (var c=0; c<16; c++) - .for (var y=0;y<8; y++) - .byte charset.getMulticolorByte(c,y) -}} - -// Pointers to the screen address for rendering each playfield line -byte*[PLAYFIELD_LINES+3] screen_lines; - -// Initialize rendering -void render_init() { - *BGCOL = BLACK; - // Clear the screen - fill(SCREEN,1000,$d0); - fill(COLS,1000,BLACK); - // Initialize the screen line pointers; - byte* li = COLS + 40 + 15; - for(byte i:0..PLAYFIELD_LINES+2) { - screen_lines[i<<1] = li; - li += 40; - } - // Prepare the playfield frame - byte* line = COLS + 14; - for(byte l:0..PLAYFIELD_LINES+1) { - for(byte c:0..PLAYFIELD_COLS+1) { - *(line+c) = DARK_GREY; - } - line +=40; - } - -} - -// Render the static playfield on the screen -void render_playfield() { - byte i = 0; - for(byte l:0..PLAYFIELD_LINES-1) { - byte* line = screen_lines[l<<1]; - for(byte c:0..PLAYFIELD_COLS-1) { - *(line++) = playfield[i++]; - } - } -} - -// Render the current moving piece at position (current_xpos, current_ypos) -void render_current() { - byte i = 0; - byte ypos2 = current_ypos<<1; - for(byte l:0..3) { - if(ypos2<2*PLAYFIELD_LINES) { - byte* screen_line = screen_lines[ypos2]; - byte xpos = current_xpos; - for(byte c:0..3) { - byte current_cell = current_piece_gfx[i++]; - if(current_cell!=0) { - if(xpos>6 diff --git a/src/test/ref/examples/tetris/test-sprites.cfg b/src/test/ref/examples/tetris/test-sprites.cfg index ff55d2f5c..777cb562b 100644 --- a/src/test/ref/examples/tetris/test-sprites.cfg +++ b/src/test/ref/examples/tetris/test-sprites.cfg @@ -1,18 +1,7 @@ @begin: scope:[] from [0] phi() - to:@5 -@5: scope:[] from @begin - [1] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 - [2] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 - to:toSpritePtr1 -toSpritePtr1: scope:[] from @5 - [3] phi() - to:@9 -@9: scope:[] from toSpritePtr1 - [4] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 - [5] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@7 -@7: scope:[] from @9 + to:@4 +@4: scope:[] from @begin kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { @@ -25,8 +14,19 @@ toSpritePtr1: scope:[] from @5 } } }} + to:@5 +@5: scope:[] from @4 + [2] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 + [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + to:toSpritePtr1 +toSpritePtr1: scope:[] from @5 + [4] phi() + to:@9 +@9: scope:[] from toSpritePtr1 + [5] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 + [6] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@8 -@8: scope:[] from @7 +@8: scope:[] from @9 [7] phi() [8] call main to:@end diff --git a/src/test/ref/examples/tetris/test-sprites.log b/src/test/ref/examples/tetris/test-sprites.log index e2fe7d499..ee472b61e 100644 --- a/src/test/ref/examples/tetris/test-sprites.log +++ b/src/test/ref/examples/tetris/test-sprites.log @@ -2,7 +2,7 @@ Resolved forward reference irq to interrupt(HARDWARE_CLOBBER)(void()) irq() Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx Inlined call call vicSelectGfxBank (byte*) PLAYFIELD_SCREEN Inlined call (byte~) init_sprites::$1 ← call toD018 (byte*) PLAYFIELD_SCREEN (byte*) PLAYFIELD_CHARSET -Inlined call (byte~) $1 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES +Inlined call (byte~) $2 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES Inlined call (byte~) irq::$2 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES CONTROL FLOW GRAPH SSA @@ -88,21 +88,44 @@ CONTROL FLOW GRAPH SSA (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 to:@4 @4: scope:[] from @begin - (byte*) PLAYFIELD_SPRITES#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 - (byte*) PLAYFIELD_CHARSET#0 ← ((byte*)) (word/signed word/dword/signed dword) 4096 (byte*) PLAYFIELD_SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*~) $0 ← (byte*) PLAYFIELD_SCREEN#0 + (word) SPRITE_PTRS#0 (byte*) PLAYFIELD_SPRITE_PTRS#0 ← (byte*~) $0 + (byte*) PLAYFIELD_SPRITES#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 + (byte*) PLAYFIELD_CHARSET#0 ← ((byte*)) (word/signed word/dword/signed dword) 10240 + (byte) PLAYFIELD_LINES#0 ← (byte/signed byte/word/signed word/dword/signed dword) 22 + (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*) 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 + kickasm(location (byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) + .for(var sy=0;sy<10;sy++) { + .for(var sx=0;sx<3;sx++) { + .for (var y=0;y<21; y++) { + .for (var c=0; c<3; c++) { + .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + } + } + .byte 0 + } + } + }} to:@5 init_sprites: scope:[init_sprites] from main + (byte*) PLAYFIELD_CHARSET#6 ← phi( main/(byte*) PLAYFIELD_CHARSET#7 ) (byte*) init_sprites::vicSelectGfxBank1_gfx#0 ← (byte*) PLAYFIELD_SCREEN#0 to:init_sprites::vicSelectGfxBank1 init_sprites::vicSelectGfxBank1: scope:[init_sprites] from init_sprites + (byte*) PLAYFIELD_CHARSET#5 ← phi( init_sprites/(byte*) PLAYFIELD_CHARSET#6 ) (byte*) init_sprites::vicSelectGfxBank1_gfx#1 ← phi( init_sprites/(byte*) init_sprites::vicSelectGfxBank1_gfx#0 ) *((byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 (byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#0 ← (byte*) init_sprites::vicSelectGfxBank1_gfx#1 to:init_sprites::vicSelectGfxBank1_toDd001 init_sprites::vicSelectGfxBank1_toDd001: scope:[init_sprites] from init_sprites::vicSelectGfxBank1 + (byte*) PLAYFIELD_CHARSET#4 ← phi( init_sprites::vicSelectGfxBank1/(byte*) PLAYFIELD_CHARSET#5 ) (byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#1 ← phi( init_sprites::vicSelectGfxBank1/(byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#0 ) (word) init_sprites::vicSelectGfxBank1_toDd001_$0#0 ← ((word)) (byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#1 (byte) init_sprites::vicSelectGfxBank1_toDd001_$1#0 ← > (word) init_sprites::vicSelectGfxBank1_toDd001_$0#0 @@ -111,17 +134,20 @@ init_sprites::vicSelectGfxBank1_toDd001: scope:[init_sprites] from init_sprites (byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 ← (byte/word/dword) init_sprites::vicSelectGfxBank1_toDd001_$3#0 to:init_sprites::vicSelectGfxBank1_toDd001_@return init_sprites::vicSelectGfxBank1_toDd001_@return: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_toDd001 + (byte*) PLAYFIELD_CHARSET#3 ← phi( init_sprites::vicSelectGfxBank1_toDd001/(byte*) PLAYFIELD_CHARSET#4 ) (byte) init_sprites::vicSelectGfxBank1_toDd001_return#2 ← phi( init_sprites::vicSelectGfxBank1_toDd001/(byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 ) (byte) init_sprites::vicSelectGfxBank1_toDd001_return#1 ← (byte) init_sprites::vicSelectGfxBank1_toDd001_return#2 to:init_sprites::vicSelectGfxBank1_@1 init_sprites::vicSelectGfxBank1_@1: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_toDd001_@return + (byte*) PLAYFIELD_CHARSET#2 ← phi( init_sprites::vicSelectGfxBank1_toDd001_@return/(byte*) PLAYFIELD_CHARSET#3 ) (byte) init_sprites::vicSelectGfxBank1_toDd001_return#3 ← phi( init_sprites::vicSelectGfxBank1_toDd001_@return/(byte) init_sprites::vicSelectGfxBank1_toDd001_return#1 ) (byte) init_sprites::vicSelectGfxBank1_$0#0 ← (byte) init_sprites::vicSelectGfxBank1_toDd001_return#3 *((byte*) CIA2_PORT_A#0) ← (byte) init_sprites::vicSelectGfxBank1_$0#0 to:init_sprites::@3 init_sprites::@3: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_@1 + (byte*) PLAYFIELD_CHARSET#1 ← phi( init_sprites::vicSelectGfxBank1_@1/(byte*) PLAYFIELD_CHARSET#2 ) (byte*) init_sprites::toD0181_screen#0 ← (byte*) PLAYFIELD_SCREEN#0 - (byte*) init_sprites::toD0181_gfx#0 ← (byte*) PLAYFIELD_CHARSET#0 + (byte*) init_sprites::toD0181_gfx#0 ← (byte*) PLAYFIELD_CHARSET#1 to:init_sprites::toD0181 init_sprites::toD0181: scope:[init_sprites] from init_sprites::@3 (byte*) init_sprites::toD0181_gfx#1 ← phi( init_sprites::@3/(byte*) init_sprites::toD0181_gfx#0 ) @@ -171,14 +197,16 @@ init_sprites::@return: scope:[init_sprites] from init_sprites::@1 return to:@return @5: scope:[] from @4 + (byte*) PLAYFIELD_CHARSET#12 ← phi( @4/(byte*) PLAYFIELD_CHARSET#0 ) (byte) IRQ_RASTER_FIRST#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 (byte) irq_raster_next#0 ← (byte) IRQ_RASTER_FIRST#0 (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 (byte*) toSpritePtr1_sprite#0 ← (byte*) PLAYFIELD_SPRITES#0 to:toSpritePtr1 toSpritePtr1: scope:[] from @5 - (byte) irq_raster_next#19 ← phi( @5/(byte) irq_raster_next#0 ) - (byte) irq_sprite_ypos#18 ← phi( @5/(byte) irq_sprite_ypos#0 ) + (byte*) PLAYFIELD_CHARSET#11 ← phi( @5/(byte*) PLAYFIELD_CHARSET#12 ) + (byte) irq_raster_next#18 ← phi( @5/(byte) irq_raster_next#0 ) + (byte) irq_sprite_ypos#16 ← phi( @5/(byte) irq_sprite_ypos#0 ) (byte*) toSpritePtr1_sprite#1 ← phi( @5/(byte*) toSpritePtr1_sprite#0 ) (word) toSpritePtr1_$0#0 ← ((word)) (byte*) toSpritePtr1_sprite#1 (word) toSpritePtr1_$1#0 ← (word) toSpritePtr1_$0#0 >> (byte/signed byte/word/signed word/dword/signed dword) 6 @@ -186,19 +214,21 @@ toSpritePtr1: scope:[] from @5 (byte) toSpritePtr1_return#0 ← (byte) toSpritePtr1_$2#0 to:toSpritePtr1_@return toSpritePtr1_@return: scope:[] from toSpritePtr1 - (byte) irq_raster_next#18 ← phi( toSpritePtr1/(byte) irq_raster_next#19 ) - (byte) irq_sprite_ypos#16 ← phi( toSpritePtr1/(byte) irq_sprite_ypos#18 ) + (byte*) PLAYFIELD_CHARSET#10 ← phi( toSpritePtr1/(byte*) PLAYFIELD_CHARSET#11 ) + (byte) irq_raster_next#17 ← phi( toSpritePtr1/(byte) irq_raster_next#18 ) + (byte) irq_sprite_ypos#14 ← phi( toSpritePtr1/(byte) irq_sprite_ypos#16 ) (byte) toSpritePtr1_return#2 ← phi( toSpritePtr1/(byte) toSpritePtr1_return#0 ) (byte) toSpritePtr1_return#1 ← (byte) toSpritePtr1_return#2 to:@9 @9: scope:[] from toSpritePtr1_@return - (byte) irq_raster_next#17 ← phi( toSpritePtr1_@return/(byte) irq_raster_next#18 ) - (byte) irq_sprite_ypos#15 ← phi( toSpritePtr1_@return/(byte) irq_sprite_ypos#16 ) + (byte*) PLAYFIELD_CHARSET#9 ← phi( toSpritePtr1_@return/(byte*) PLAYFIELD_CHARSET#10 ) + (byte) irq_raster_next#16 ← phi( toSpritePtr1_@return/(byte) irq_raster_next#17 ) + (byte) irq_sprite_ypos#13 ← phi( toSpritePtr1_@return/(byte) irq_sprite_ypos#14 ) (byte) toSpritePtr1_return#3 ← phi( toSpritePtr1_@return/(byte) toSpritePtr1_return#1 ) - (byte~) $1 ← (byte) toSpritePtr1_return#3 - (byte) irq_sprite_ptr#0 ← (byte~) $1 + (byte~) $2 ← (byte) toSpritePtr1_return#3 + (byte) irq_sprite_ptr#0 ← (byte~) $2 (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@7 + to:@8 init_irq: scope:[init_irq] from main::@7 asm { sei } *((byte*) IRQ_STATUS#0) ← (byte) IRQ_RASTER#0 @@ -259,8 +289,8 @@ irq::@2: scope:[irq] from irq::@5 (byte*) irq::toSpritePtr2_sprite#0 ← (byte*) PLAYFIELD_SPRITES#0 to:irq::toSpritePtr2 irq::toSpritePtr2: scope:[irq] from irq::@2 - (byte) irq_sprite_ypos#19 ← phi( irq::@2/(byte) irq_sprite_ypos#1 ) - (byte) irq_cnt#16 ← phi( irq::@2/(byte) irq_cnt#2 ) + (byte) irq_sprite_ypos#18 ← phi( irq::@2/(byte) irq_sprite_ypos#1 ) + (byte) irq_cnt#15 ← phi( irq::@2/(byte) irq_cnt#2 ) (byte) irq_raster_next#14 ← phi( irq::@2/(byte) irq_raster_next#1 ) (byte*) irq::toSpritePtr2_sprite#1 ← phi( irq::@2/(byte*) irq::toSpritePtr2_sprite#0 ) (word) irq::toSpritePtr2_$0#0 ← ((word)) (byte*) irq::toSpritePtr2_sprite#1 @@ -269,14 +299,14 @@ irq::toSpritePtr2: scope:[irq] from irq::@2 (byte) irq::toSpritePtr2_return#0 ← (byte) irq::toSpritePtr2_$2#0 to:irq::toSpritePtr2_@return irq::toSpritePtr2_@return: scope:[irq] from irq::toSpritePtr2 - (byte) irq_sprite_ypos#17 ← phi( irq::toSpritePtr2/(byte) irq_sprite_ypos#19 ) - (byte) irq_cnt#14 ← phi( irq::toSpritePtr2/(byte) irq_cnt#16 ) + (byte) irq_sprite_ypos#17 ← phi( irq::toSpritePtr2/(byte) irq_sprite_ypos#18 ) + (byte) irq_cnt#14 ← phi( irq::toSpritePtr2/(byte) irq_cnt#15 ) (byte) irq_raster_next#11 ← phi( irq::toSpritePtr2/(byte) irq_raster_next#14 ) (byte) irq::toSpritePtr2_return#2 ← phi( irq::toSpritePtr2/(byte) irq::toSpritePtr2_return#0 ) (byte) irq::toSpritePtr2_return#1 ← (byte) irq::toSpritePtr2_return#2 to:irq::@9 irq::@9: scope:[irq] from irq::toSpritePtr2_@return - (byte) irq_sprite_ypos#14 ← phi( irq::toSpritePtr2_@return/(byte) irq_sprite_ypos#17 ) + (byte) irq_sprite_ypos#15 ← phi( irq::toSpritePtr2_@return/(byte) irq_sprite_ypos#17 ) (byte) irq_cnt#13 ← phi( irq::toSpritePtr2_@return/(byte) irq_cnt#14 ) (byte) irq_raster_next#8 ← phi( irq::toSpritePtr2_@return/(byte) irq_raster_next#11 ) (byte) irq::toSpritePtr2_return#3 ← phi( irq::toSpritePtr2_@return/(byte) irq::toSpritePtr2_return#1 ) @@ -294,7 +324,7 @@ irq::@6: scope:[irq] from irq::@5 to:irq::@3 irq::@3: scope:[irq] from irq::@6 irq::@9 (byte) irq_sprite_ptr#10 ← phi( irq::@6/(byte) irq_sprite_ptr#2 irq::@9/(byte) irq_sprite_ptr#1 ) - (byte) irq_sprite_ypos#11 ← phi( irq::@6/(byte) irq_sprite_ypos#2 irq::@9/(byte) irq_sprite_ypos#14 ) + (byte) irq_sprite_ypos#11 ← phi( irq::@6/(byte) irq_sprite_ypos#2 irq::@9/(byte) irq_sprite_ypos#15 ) (byte) irq_cnt#9 ← phi( irq::@6/(byte) irq_cnt#12 irq::@9/(byte) irq_cnt#13 ) (byte) irq_raster_next#5 ← phi( irq::@6/(byte) irq_raster_next#2 irq::@9/(byte) irq_raster_next#8 ) (byte) irq::raster_next#0 ← (byte) irq_raster_next#5 @@ -332,25 +362,8 @@ irq::@return: scope:[irq] from irq::@4 (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#6 return to:@return -@7: scope:[] from @9 - (byte) irq_raster_next#16 ← phi( @9/(byte) irq_raster_next#17 ) - (byte) irq_cnt#15 ← phi( @9/(byte) irq_cnt#0 ) - (byte) irq_sprite_ptr#13 ← phi( @9/(byte) irq_sprite_ptr#0 ) - (byte) irq_sprite_ypos#13 ← phi( @9/(byte) irq_sprite_ypos#15 ) - kickasm(location (byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) - .for(var sy=0;sy<10;sy++) { - .for(var sx=0;sx<3;sx++) { - .for (var y=0;y<21; y++) { - .for (var c=0; c<3; c++) { - .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) - } - } - .byte 0 - } - } - }} - to:@8 main: scope:[main] from @8 + (byte*) PLAYFIELD_CHARSET#7 ← phi( @8/(byte*) PLAYFIELD_CHARSET#8 ) call init_sprites to:main::@7 main::@7: scope:[main] from main @@ -367,11 +380,12 @@ main::@2: scope:[main] from main::@1 main::@return: scope:[main] from main::@1 return to:@return -@8: scope:[] from @7 - (byte) irq_raster_next#15 ← phi( @7/(byte) irq_raster_next#16 ) - (byte) irq_cnt#11 ← phi( @7/(byte) irq_cnt#15 ) - (byte) irq_sprite_ptr#12 ← phi( @7/(byte) irq_sprite_ptr#13 ) - (byte) irq_sprite_ypos#8 ← phi( @7/(byte) irq_sprite_ypos#13 ) +@8: scope:[] from @9 + (byte*) PLAYFIELD_CHARSET#8 ← phi( @9/(byte*) PLAYFIELD_CHARSET#9 ) + (byte) irq_raster_next#15 ← phi( @9/(byte) irq_raster_next#16 ) + (byte) irq_cnt#11 ← phi( @9/(byte) irq_cnt#0 ) + (byte) irq_sprite_ptr#12 ← phi( @9/(byte) irq_sprite_ptr#0 ) + (byte) irq_sprite_ypos#8 ← phi( @9/(byte) irq_sprite_ypos#13 ) call main to:@10 @10: scope:[] from @8 @@ -381,10 +395,10 @@ main::@return: scope:[main] from main::@1 SYMBOL TABLE SSA (byte*~) $0 (byte~) $1 +(byte~) $2 (label) @10 (label) @4 (label) @5 -(label) @7 (label) @8 (label) @9 (label) @begin @@ -481,6 +495,22 @@ SYMBOL TABLE SSA (byte) PINK#0 (byte*) PLAYFIELD_CHARSET (byte*) PLAYFIELD_CHARSET#0 +(byte*) PLAYFIELD_CHARSET#1 +(byte*) PLAYFIELD_CHARSET#10 +(byte*) PLAYFIELD_CHARSET#11 +(byte*) PLAYFIELD_CHARSET#12 +(byte*) PLAYFIELD_CHARSET#2 +(byte*) PLAYFIELD_CHARSET#3 +(byte*) PLAYFIELD_CHARSET#4 +(byte*) PLAYFIELD_CHARSET#5 +(byte*) PLAYFIELD_CHARSET#6 +(byte*) PLAYFIELD_CHARSET#7 +(byte*) PLAYFIELD_CHARSET#8 +(byte*) PLAYFIELD_CHARSET#9 +(byte) PLAYFIELD_COLS +(byte) PLAYFIELD_COLS#0 +(byte) PLAYFIELD_LINES +(byte) PLAYFIELD_LINES#0 (byte*) PLAYFIELD_SCREEN (byte*) PLAYFIELD_SCREEN#0 (byte*) PLAYFIELD_SPRITES @@ -557,6 +587,14 @@ SYMBOL TABLE SSA (byte) WHITE#0 (byte) YELLOW (byte) YELLOW#0 +(byte) current_piece_color +(byte) current_piece_color#0 +(byte*) current_piece_gfx +(byte*) current_piece_gfx#0 +(byte) current_xpos +(byte) current_xpos#0 +(byte) current_ypos +(byte) current_ypos#0 (void()) init_irq() (void()*~) init_irq::$0 (label) init_irq::@return @@ -689,7 +727,6 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) irq_cnt#13 (byte) irq_cnt#14 (byte) irq_cnt#15 -(byte) irq_cnt#16 (byte) irq_cnt#2 (byte) irq_cnt#3 (byte) irq_cnt#4 @@ -710,7 +747,6 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) irq_raster_next#16 (byte) irq_raster_next#17 (byte) irq_raster_next#18 -(byte) irq_raster_next#19 (byte) irq_raster_next#2 (byte) irq_raster_next#3 (byte) irq_raster_next#4 @@ -725,7 +761,6 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) irq_sprite_ptr#10 (byte) irq_sprite_ptr#11 (byte) irq_sprite_ptr#12 -(byte) irq_sprite_ptr#13 (byte) irq_sprite_ptr#2 (byte) irq_sprite_ptr#3 (byte) irq_sprite_ptr#4 @@ -746,7 +781,6 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) irq_sprite_ypos#16 (byte) irq_sprite_ypos#17 (byte) irq_sprite_ypos#18 -(byte) irq_sprite_ypos#19 (byte) irq_sprite_ypos#2 (byte) irq_sprite_ypos#3 (byte) irq_sprite_ypos#4 @@ -761,6 +795,8 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) main::@7 (label) main::@8 (label) main::@return +(byte[$1]) playfield +(byte[$1]) playfield#0 (label) toSpritePtr1 (word~) toSpritePtr1_$0 (word) toSpritePtr1_$0#0 @@ -783,11 +819,12 @@ Culled Empty Block (label) @10 Successful SSA optimization Pass2CullEmptyBlocks Inversing boolean not (bool~) irq::$5 ← (byte~) irq::$3 != (byte/signed byte/word/signed word/dword/signed dword) 3 from (bool~) irq::$4 ← (byte~) irq::$3 == (byte/signed byte/word/signed word/dword/signed dword) 3 Successful SSA optimization Pass2UnaryNotSimplification -Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#19 (byte) irq_raster_next#18 (byte) irq_raster_next#17 (byte) irq_raster_next#16 (byte) irq_raster_next#15 -Alias candidate removed (volatile)(byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $1 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#13 (byte) irq_sprite_ptr#12 +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#18 (byte) irq_raster_next#17 (byte) irq_raster_next#16 (byte) irq_raster_next#15 +Alias candidate removed (volatile)(byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $2 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#12 Alias candidate removed (volatile)(byte) irq::toSpritePtr2_return#0 = (byte) irq::toSpritePtr2_$2#0 (byte) irq::toSpritePtr2_return#2 (byte) irq::toSpritePtr2_return#1 (byte) irq::toSpritePtr2_return#3 (byte~) irq::$2 (byte) irq_sprite_ptr#1 Alias (byte*) PLAYFIELD_SPRITE_PTRS#0 = (byte*~) $0 Alias (byte*) init_sprites::vicSelectGfxBank1_gfx#0 = (byte*) init_sprites::vicSelectGfxBank1_gfx#1 (byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#0 (byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#1 +Alias (byte*) PLAYFIELD_CHARSET#1 = (byte*) PLAYFIELD_CHARSET#5 (byte*) PLAYFIELD_CHARSET#6 (byte*) PLAYFIELD_CHARSET#4 (byte*) PLAYFIELD_CHARSET#3 (byte*) PLAYFIELD_CHARSET#2 Alias (byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 = (byte/word/dword) init_sprites::vicSelectGfxBank1_toDd001_$3#0 (byte) init_sprites::vicSelectGfxBank1_toDd001_return#2 (byte) init_sprites::vicSelectGfxBank1_toDd001_return#1 (byte) init_sprites::vicSelectGfxBank1_toDd001_return#3 (byte) init_sprites::vicSelectGfxBank1_$0#0 Alias (byte*) init_sprites::toD0181_screen#0 = (byte*) init_sprites::toD0181_screen#1 Alias (byte*) init_sprites::toD0181_gfx#0 = (byte*) init_sprites::toD0181_gfx#1 @@ -795,16 +832,17 @@ Alias (byte) init_sprites::toD0181_return#0 = (byte) init_sprites::toD0181_$8#0 Alias (byte) init_sprites::xpos#0 = (byte/signed word/word/dword/signed dword/signed byte~) init_sprites::$3 Alias (byte) init_sprites::s2#0 = (byte~) init_sprites::$4 Alias (byte) init_sprites::xpos#1 = (byte/signed word/word/dword/signed dword~) init_sprites::$5 +Alias (byte*) PLAYFIELD_CHARSET#0 = (byte*) PLAYFIELD_CHARSET#12 (byte*) PLAYFIELD_CHARSET#11 (byte*) PLAYFIELD_CHARSET#10 (byte*) PLAYFIELD_CHARSET#9 (byte*) PLAYFIELD_CHARSET#8 Alias (byte*) PLAYFIELD_SPRITES#0 = (byte*) toSpritePtr1_sprite#0 (byte*) toSpritePtr1_sprite#1 -Alias (byte) irq_sprite_ypos#0 = (byte) irq_sprite_ypos#18 (byte) irq_sprite_ypos#16 (byte) irq_sprite_ypos#15 (byte) irq_sprite_ypos#13 (byte) irq_sprite_ypos#8 +Alias (byte) irq_sprite_ypos#0 = (byte) irq_sprite_ypos#16 (byte) irq_sprite_ypos#14 (byte) irq_sprite_ypos#13 (byte) irq_sprite_ypos#8 Alias (byte) irq_sprite_ptr#4 = (byte) irq_sprite_ptr#7 (byte) irq_sprite_ptr#5 Alias (byte) irq_cnt#4 = (byte) irq_cnt#6 Alias (byte) irq_raster_next#10 = (byte) irq_raster_next#7 (byte) irq_raster_next#4 Alias (byte) irq_sprite_ypos#5 = (byte) irq_sprite_ypos#9 (byte) irq_sprite_ypos#6 Alias (byte*) irq::toSpritePtr2_sprite#0 = (byte*) irq::toSpritePtr2_sprite#1 Alias (byte) irq_raster_next#1 = (byte) irq_raster_next#14 (byte) irq_raster_next#11 (byte) irq_raster_next#8 -Alias (byte) irq_cnt#13 = (byte) irq_cnt#16 (byte) irq_cnt#2 (byte) irq_cnt#14 -Alias (byte) irq_sprite_ypos#1 = (byte) irq_sprite_ypos#19 (byte) irq_sprite_ypos#17 (byte) irq_sprite_ypos#14 +Alias (byte) irq_cnt#13 = (byte) irq_cnt#15 (byte) irq_cnt#2 (byte) irq_cnt#14 +Alias (byte) irq_sprite_ypos#1 = (byte) irq_sprite_ypos#18 (byte) irq_sprite_ypos#17 (byte) irq_sprite_ypos#15 Alias (byte) irq_cnt#1 = (byte) irq_cnt#12 Alias (byte) irq::raster_next#0 = (byte) irq::raster_next#3 Alias (byte) irq_cnt#10 = (byte) irq_cnt#9 @@ -815,29 +853,30 @@ Alias (byte) irq_cnt#3 = (byte) irq_cnt#5 (byte) irq_cnt#7 Alias (byte) irq_raster_next#3 = (byte) irq_raster_next#6 (byte) irq_raster_next#9 Alias (byte) irq_sprite_ypos#10 = (byte) irq_sprite_ypos#7 (byte) irq_sprite_ypos#3 Alias (byte) irq_sprite_ptr#3 = (byte) irq_sprite_ptr#6 (byte) irq_sprite_ptr#8 -Alias (byte) irq_cnt#0 = (byte) irq_cnt#15 (byte) irq_cnt#11 +Alias (byte) irq_cnt#0 = (byte) irq_cnt#11 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#19 (byte) irq_raster_next#18 (byte) irq_raster_next#17 (byte) irq_raster_next#16 (byte) irq_raster_next#15 -Alias candidate removed (volatile)(byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $1 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#13 (byte) irq_sprite_ptr#12 +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#18 (byte) irq_raster_next#17 (byte) irq_raster_next#16 (byte) irq_raster_next#15 +Alias candidate removed (volatile)(byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $2 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#12 Alias candidate removed (volatile)(byte) irq::toSpritePtr2_return#0 = (byte) irq::toSpritePtr2_$2#0 (byte) irq::toSpritePtr2_return#2 (byte) irq::toSpritePtr2_return#1 (byte) irq::toSpritePtr2_return#3 (byte~) irq::$2 (byte) irq_sprite_ptr#1 Alias (byte) irq_cnt#10 = (byte) irq_cnt#3 Alias (byte) irq_raster_next#12 = (byte) irq_raster_next#3 Alias (byte) irq_sprite_ypos#10 = (byte) irq_sprite_ypos#11 Alias (byte) irq_sprite_ptr#10 = (byte) irq_sprite_ptr#3 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#19 (byte) irq_raster_next#18 (byte) irq_raster_next#17 (byte) irq_raster_next#16 (byte) irq_raster_next#15 -Alias candidate removed (volatile)(byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $1 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#13 (byte) irq_sprite_ptr#12 +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#18 (byte) irq_raster_next#17 (byte) irq_raster_next#16 (byte) irq_raster_next#15 +Alias candidate removed (volatile)(byte) toSpritePtr1_return#0 = (byte) toSpritePtr1_$2#0 (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#1 (byte) toSpritePtr1_return#3 (byte~) $2 (byte) irq_sprite_ptr#0 (byte) irq_sprite_ptr#12 Alias candidate removed (volatile)(byte) irq::toSpritePtr2_return#0 = (byte) irq::toSpritePtr2_$2#0 (byte) irq::toSpritePtr2_return#2 (byte) irq::toSpritePtr2_return#1 (byte) irq::toSpritePtr2_return#3 (byte~) irq::$2 (byte) irq_sprite_ptr#1 Self Phi Eliminated (byte) irq_sprite_ypos#5 Self Phi Eliminated (byte) irq_sprite_ptr#4 Self Phi Eliminated (byte) irq_cnt#4 Self Phi Eliminated (byte) irq_raster_next#10 Successful SSA optimization Pass2SelfPhiElimination -Redundant Phi (byte) irq_raster_next#19 (byte) irq_raster_next#0 +Redundant Phi (byte*) PLAYFIELD_CHARSET#1 (byte*) PLAYFIELD_CHARSET#7 +Redundant Phi (byte) irq_raster_next#18 (byte) irq_raster_next#0 Redundant Phi (byte) toSpritePtr1_return#2 (byte) toSpritePtr1_return#0 -Redundant Phi (byte) irq_raster_next#18 (byte) irq_raster_next#19 -Redundant Phi (byte) toSpritePtr1_return#3 (byte) toSpritePtr1_return#1 Redundant Phi (byte) irq_raster_next#17 (byte) irq_raster_next#18 +Redundant Phi (byte) toSpritePtr1_return#3 (byte) toSpritePtr1_return#1 +Redundant Phi (byte) irq_raster_next#16 (byte) irq_raster_next#17 Redundant Phi (byte) irq_sprite_ypos#4 (byte) irq_sprite_ypos#0 Redundant Phi (byte) irq_sprite_ptr#9 (byte) irq_sprite_ptr#12 Redundant Phi (byte) irq_cnt#8 (byte) irq_cnt#0 @@ -848,9 +887,8 @@ Redundant Phi (byte) irq_cnt#4 (byte) irq_cnt#8 Redundant Phi (byte) irq_raster_next#10 (byte) irq_raster_next#13 Redundant Phi (byte) irq::toSpritePtr2_return#2 (byte) irq::toSpritePtr2_return#0 Redundant Phi (byte) irq::toSpritePtr2_return#3 (byte) irq::toSpritePtr2_return#1 -Redundant Phi (byte) irq_sprite_ptr#13 (byte) irq_sprite_ptr#0 -Redundant Phi (byte) irq_raster_next#16 (byte) irq_raster_next#17 -Redundant Phi (byte) irq_sprite_ptr#12 (byte) irq_sprite_ptr#13 +Redundant Phi (byte*) PLAYFIELD_CHARSET#7 (byte*) PLAYFIELD_CHARSET#0 +Redundant Phi (byte) irq_sprite_ptr#12 (byte) irq_sprite_ptr#0 Redundant Phi (byte) irq_raster_next#15 (byte) irq_raster_next#16 Successful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) init_sprites::$6 if((byte) init_sprites::s#1!=rangelast(0,3)) goto init_sprites::@1 @@ -937,15 +975,22 @@ Constant (const byte) GREY#0 = 12 Constant (const byte) LIGHT_GREEN#0 = 13 Constant (const byte) LIGHT_BLUE#0 = 14 Constant (const byte) LIGHT_GREY#0 = 15 -Constant (const byte*) PLAYFIELD_SPRITES#0 = ((byte*))8192 -Constant (const byte*) PLAYFIELD_CHARSET#0 = ((byte*))4096 Constant (const byte*) PLAYFIELD_SCREEN#0 = ((byte*))1024 +Constant (const byte*) PLAYFIELD_SPRITES#0 = ((byte*))8192 +Constant (const byte*) PLAYFIELD_CHARSET#0 = ((byte*))10240 +Constant (const byte) PLAYFIELD_LINES#0 = 22 +Constant (const byte) PLAYFIELD_COLS#0 = 10 +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/signed byte/word/signed word/dword/signed dword) init_sprites::$2 = 14*8 Constant (const byte) init_sprites::s#0 = 0 Constant (const byte) IRQ_RASTER_FIRST#0 = 49 Constant (const void()*) init_irq::$0 = &irq Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) PLAYFIELD_SPRITE_PTRS#0 = PLAYFIELD_SCREEN#0+SPRITE_PTRS#0 +Constant (const byte) $1 = PLAYFIELD_LINES#0*PLAYFIELD_COLS#0 Constant (const byte*) init_sprites::vicSelectGfxBank1_gfx#0 = PLAYFIELD_SCREEN#0 Constant (const byte*) init_sprites::toD0181_screen#0 = PLAYFIELD_SCREEN#0 Constant (const byte*) init_sprites::toD0181_gfx#0 = PLAYFIELD_CHARSET#0 @@ -953,6 +998,7 @@ Constant (const byte) init_sprites::xpos#0 = 24+init_sprites::$2 Constant (const word) toSpritePtr1_$0#0 = ((word))PLAYFIELD_SPRITES#0 Constant (const byte*) irq::toSpritePtr2_sprite#0 = PLAYFIELD_SPRITES#0 Successful SSA optimization Pass2ConstantIdentification +Constant (const byte[$1]) playfield#0 = { fill( $1, 0) } Constant (const word) init_sprites::vicSelectGfxBank1_toDd001_$0#0 = ((word))init_sprites::vicSelectGfxBank1_gfx#0 Constant (const word) init_sprites::toD0181_$0#0 = ((word))init_sprites::toD0181_screen#0 Constant (const word) init_sprites::toD0181_$4#0 = ((word))init_sprites::toD0181_gfx#0 @@ -978,7 +1024,7 @@ Constant (const byte) toSpritePtr1_return#1 = toSpritePtr1_return#0 Constant (const byte) irq::toSpritePtr2_return#0 = irq::toSpritePtr2_$2#0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) init_sprites::toD0181_return#0 = init_sprites::toD0181_$3#0|init_sprites::toD0181_$7#0 -Constant (const byte) $1 = toSpritePtr1_return#1 +Constant (const byte) $2 = toSpritePtr1_return#1 Constant (const byte) irq::toSpritePtr2_return#1 = irq::toSpritePtr2_return#0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) irq::$2 = irq::toSpritePtr2_return#1 @@ -999,7 +1045,6 @@ Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Resolved ranged next value init_sprites::s#1 ← ++ init_sprites::s#2 to ++ Resolved ranged comparison value if(init_sprites::s#1!=rangelast(0,3)) goto init_sprites::@1 to (byte/signed byte/word/signed word/dword/signed dword) 4 -Culled Empty Block (label) @4 Culled Empty Block (label) init_sprites::vicSelectGfxBank1_toDd001_@return Culled Empty Block (label) init_sprites::@3 Culled Empty Block (label) init_sprites::toD0181_@return @@ -1020,7 +1065,8 @@ Constant inlined init_sprites::toD0181_$2#0 = ((word))(const byte*) PLAYFIELD_SC Constant inlined init_sprites::toD0181_$3#0 = >((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined init_sprites::toD0181_$0#0 = ((word))(const byte*) PLAYFIELD_SCREEN#0 Constant inlined init_sprites::toD0181_$1#0 = ((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383 -Constant inlined $1 = (const byte) toSpritePtr1_return#0 +Constant inlined $1 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0 +Constant inlined $2 = (const byte) toSpritePtr1_return#0 Constant inlined init_sprites::xpos#0 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 8 Constant inlined init_irq::$0 = &interrupt(HARDWARE_CLOBBER)(void()) irq() Constant inlined irq::toSpritePtr2_sprite#0 = (const byte*) PLAYFIELD_SPRITES#0 @@ -1062,10 +1108,10 @@ Calls in [main] to init_sprites:11 init_irq:13 Created 4 initial phi equivalence classes Coalesced [45] init_sprites::s#3 ← init_sprites::s#1 Coalesced [46] init_sprites::xpos#3 ← init_sprites::xpos#1 -Coalesced [66] irq_raster_next#20 ← irq_raster_next#2 +Coalesced [66] irq_raster_next#19 ← irq_raster_next#2 Coalesced [72] irq::raster_next#5 ← irq::raster_next#1 Coalesced [78] irq::raster_next#4 ← irq::raster_next#0 -Coalesced [84] irq_raster_next#21 ← irq_raster_next#1 +Coalesced [84] irq_raster_next#20 ← irq_raster_next#1 Coalesced down to 4 phi equivalence classes Culled Empty Block (label) init_sprites::@5 Culled Empty Block (label) irq::@10 @@ -1083,19 +1129,8 @@ Adding NOP phi() at start of irq::toSpritePtr2 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@5 -@5: scope:[] from @begin - [1] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 - [2] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 - to:toSpritePtr1 -toSpritePtr1: scope:[] from @5 - [3] phi() - to:@9 -@9: scope:[] from toSpritePtr1 - [4] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 - [5] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@7 -@7: scope:[] from @9 + to:@4 +@4: scope:[] from @begin kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { @@ -1108,8 +1143,19 @@ toSpritePtr1: scope:[] from @5 } } }} + to:@5 +@5: scope:[] from @4 + [2] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 + [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + to:toSpritePtr1 +toSpritePtr1: scope:[] from @5 + [4] phi() + to:@9 +@9: scope:[] from toSpritePtr1 + [5] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 + [6] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@8 -@8: scope:[] from @7 +@8: scope:[] from @9 [7] phi() [8] call main to:@end @@ -1282,6 +1328,8 @@ VARIABLE REGISTER WEIGHTS (byte) ORANGE (byte) PINK (byte*) PLAYFIELD_CHARSET +(byte) PLAYFIELD_COLS +(byte) PLAYFIELD_LINES (byte*) PLAYFIELD_SCREEN (byte*) PLAYFIELD_SPRITES (byte*) PLAYFIELD_SPRITE_PTRS @@ -1320,6 +1368,10 @@ VARIABLE REGISTER WEIGHTS (byte) VIC_RST8 (byte) WHITE (byte) YELLOW +(byte) current_piece_color +(byte*) current_piece_gfx +(byte) current_xpos +(byte) current_ypos (void()) init_irq() (void()) init_sprites() (byte) init_sprites::s @@ -1385,6 +1437,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (byte) irq_sprite_ypos#1 20.0 (byte) irq_sprite_ypos#2 20.0 (void()) main() +(byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield (word~) toSpritePtr1_$0 (word~) toSpritePtr1_$1 (byte~) toSpritePtr1_$2 @@ -1486,9 +1539,11 @@ INITIAL ASM .label HARDWARE_IRQ = $fffe .const BLACK = 0 .const DARK_GREY = $b - .label PLAYFIELD_SPRITES = $2000 - .label PLAYFIELD_CHARSET = $1000 .label PLAYFIELD_SCREEN = $400 + .label PLAYFIELD_SPRITES = $2000 + .label PLAYFIELD_CHARSET = $2800 + .const PLAYFIELD_LINES = $16 + .const PLAYFIELD_COLS = $a .const IRQ_RASTER_FIRST = $31 .label PLAYFIELD_SPRITE_PTRS = PLAYFIELD_SCREEN+SPRITE_PTRS .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 @@ -1507,35 +1562,35 @@ INITIAL ASM .label irq_cnt_13 = $13 //SEG2 @begin bbegin: + jmp b4 +//SEG3 @4 +b4: +//SEG4 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} jmp b5 -//SEG3 @5 +//SEG5 @5 b5: -//SEG4 [1] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG6 [2] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG5 [2] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 +//SEG7 [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 lda #$32 sta irq_sprite_ypos -//SEG6 [3] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] +//SEG8 [4] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] toSpritePtr1_from_b5: jmp toSpritePtr1 -//SEG7 toSpritePtr1 +//SEG9 toSpritePtr1 toSpritePtr1: jmp b9 -//SEG8 @9 +//SEG10 @9 b9: -//SEG9 [4] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 +//SEG11 [5] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 lda #toSpritePtr1_return sta irq_sprite_ptr -//SEG10 [5] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG12 [6] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - jmp b7 -//SEG11 @7 -b7: -//SEG12 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} -//SEG13 [7] phi from @7 to @8 [phi:@7->@8] -b8_from_b7: +//SEG13 [7] phi from @9 to @8 [phi:@9->@8] +b8_from_b9: jmp b8 //SEG14 @8 b8: @@ -1880,10 +1935,10 @@ irq: { REGISTER UPLIFT POTENTIAL REGISTERS -Statement [1] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a -Statement [2] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a -Statement [4] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 [ ] ( ) always clobbers reg byte a -Statement [5] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a +Statement [2] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a +Statement [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a +Statement [5] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 [ ] ( ) always clobbers reg byte a +Statement [6] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a Statement [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a Statement [18] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a @@ -1922,10 +1977,10 @@ Statement [74] (byte) irq_cnt#13 ← (byte/signed byte/word/signed word/dword/si Statement [75] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a Statement [76] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a Statement [78] (byte) irq_sprite_ptr#1 ← (const byte) irq::toSpritePtr2_return#0 [ irq_raster_next#1 ] ( [ irq_raster_next#1 ] ) always clobbers reg byte a -Statement [1] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a -Statement [2] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a -Statement [4] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 [ ] ( ) always clobbers reg byte a -Statement [5] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a +Statement [2] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a +Statement [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a +Statement [5] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 [ ] ( ) always clobbers reg byte a +Statement [6] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a Statement [16] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a Statement [18] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:8::init_irq:13 [ ] ) always clobbers reg byte a @@ -2072,9 +2127,11 @@ ASSEMBLER BEFORE OPTIMIZATION .label HARDWARE_IRQ = $fffe .const BLACK = 0 .const DARK_GREY = $b - .label PLAYFIELD_SPRITES = $2000 - .label PLAYFIELD_CHARSET = $1000 .label PLAYFIELD_SCREEN = $400 + .label PLAYFIELD_SPRITES = $2000 + .label PLAYFIELD_CHARSET = $2800 + .const PLAYFIELD_LINES = $16 + .const PLAYFIELD_COLS = $a .const IRQ_RASTER_FIRST = $31 .label PLAYFIELD_SPRITE_PTRS = PLAYFIELD_SCREEN+SPRITE_PTRS .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 @@ -2084,35 +2141,35 @@ ASSEMBLER BEFORE OPTIMIZATION .label irq_cnt = 6 //SEG2 @begin bbegin: + jmp b4 +//SEG3 @4 +b4: +//SEG4 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} jmp b5 -//SEG3 @5 +//SEG5 @5 b5: -//SEG4 [1] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG6 [2] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG5 [2] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 +//SEG7 [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 lda #$32 sta irq_sprite_ypos -//SEG6 [3] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] +//SEG8 [4] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] toSpritePtr1_from_b5: jmp toSpritePtr1 -//SEG7 toSpritePtr1 +//SEG9 toSpritePtr1 toSpritePtr1: jmp b9 -//SEG8 @9 +//SEG10 @9 b9: -//SEG9 [4] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 +//SEG11 [5] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 lda #toSpritePtr1_return sta irq_sprite_ptr -//SEG10 [5] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG12 [6] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - jmp b7 -//SEG11 @7 -b7: -//SEG12 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} -//SEG13 [7] phi from @7 to @8 [phi:@7->@8] -b8_from_b7: +//SEG13 [7] phi from @9 to @8 [phi:@9->@8] +b8_from_b9: jmp b8 //SEG14 @8 b8: @@ -2423,10 +2480,10 @@ irq: { ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b4 Removing instruction jmp b5 Removing instruction jmp toSpritePtr1 Removing instruction jmp b9 -Removing instruction jmp b7 Removing instruction jmp b8 Removing instruction jmp bend Removing instruction jmp b7 @@ -2455,11 +2512,11 @@ Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b1_from_b1 with b1 Replacing label b4_from_b3 with b4 Replacing label b3_from_b9 with b3 +Removing instruction b4: Removing instruction b5: Removing instruction toSpritePtr1_from_b5: Removing instruction toSpritePtr1: -Removing instruction b7: -Removing instruction b8_from_b7: +Removing instruction b8_from_b9: Removing instruction main_from_b8: Removing instruction bend_from_b8: Removing instruction b7_from_main: @@ -2496,8 +2553,8 @@ Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE +(label) @4 (label) @5 -(label) @7 (label) @8 (label) @9 (label) @begin @@ -2561,7 +2618,11 @@ FINAL SYMBOL TABLE (byte) ORANGE (byte) PINK (byte*) PLAYFIELD_CHARSET -(const byte*) PLAYFIELD_CHARSET#0 PLAYFIELD_CHARSET = ((byte*))(word/signed word/dword/signed dword) 4096 +(const byte*) PLAYFIELD_CHARSET#0 PLAYFIELD_CHARSET = ((byte*))(word/signed word/dword/signed dword) 10240 +(byte) PLAYFIELD_COLS +(const byte) PLAYFIELD_COLS#0 PLAYFIELD_COLS = (byte/signed byte/word/signed word/dword/signed dword) 10 +(byte) PLAYFIELD_LINES +(const byte) PLAYFIELD_LINES#0 PLAYFIELD_LINES = (byte/signed byte/word/signed word/dword/signed dword) 22 (byte*) PLAYFIELD_SCREEN (const byte*) PLAYFIELD_SCREEN#0 PLAYFIELD_SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte*) PLAYFIELD_SPRITES @@ -2617,6 +2678,10 @@ FINAL SYMBOL TABLE (byte) VIC_RST8 (byte) WHITE (byte) YELLOW +(byte) current_piece_color +(byte*) current_piece_gfx +(byte) current_xpos +(byte) current_ypos (void()) init_irq() (label) init_irq::@return (void()) init_sprites() @@ -2705,6 +2770,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (void()) main() (label) main::@2 (label) main::@7 +(byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield (label) toSpritePtr1 (word~) toSpritePtr1_$0 (word~) toSpritePtr1_$1 @@ -2762,9 +2828,11 @@ Score: 1274 .label HARDWARE_IRQ = $fffe .const BLACK = 0 .const DARK_GREY = $b - .label PLAYFIELD_SPRITES = $2000 - .label PLAYFIELD_CHARSET = $1000 .label PLAYFIELD_SCREEN = $400 + .label PLAYFIELD_SPRITES = $2000 + .label PLAYFIELD_CHARSET = $2800 + .const PLAYFIELD_LINES = $16 + .const PLAYFIELD_COLS = $a .const IRQ_RASTER_FIRST = $31 .label PLAYFIELD_SPRITE_PTRS = PLAYFIELD_SCREEN+SPRITE_PTRS .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 @@ -2774,25 +2842,25 @@ Score: 1274 .label irq_cnt = 6 //SEG2 @begin bbegin: -//SEG3 @5 -//SEG4 [1] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 +//SEG3 @4 +//SEG4 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} +//SEG5 @5 +//SEG6 [2] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next -//SEG5 [2] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 +//SEG7 [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 lda #$32 sta irq_sprite_ypos -//SEG6 [3] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] -//SEG7 toSpritePtr1 -//SEG8 @9 -//SEG9 [4] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 +//SEG8 [4] phi from @5 to toSpritePtr1 [phi:@5->toSpritePtr1] +//SEG9 toSpritePtr1 +//SEG10 @9 +//SEG11 [5] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0 -- vbuz1=vbuc1 lda #toSpritePtr1_return sta irq_sprite_ptr -//SEG10 [5] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 +//SEG12 [6] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt -//SEG11 @7 -//SEG12 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} -//SEG13 [7] phi from @7 to @8 [phi:@7->@8] +//SEG13 [7] phi from @9 to @8 [phi:@9->@8] //SEG14 @8 //SEG15 [8] call main //SEG16 [10] phi from @8 to main [phi:@8->main] diff --git a/src/test/ref/examples/tetris/test-sprites.sym b/src/test/ref/examples/tetris/test-sprites.sym index b7898374c..7f11ce034 100644 --- a/src/test/ref/examples/tetris/test-sprites.sym +++ b/src/test/ref/examples/tetris/test-sprites.sym @@ -1,5 +1,5 @@ +(label) @4 (label) @5 -(label) @7 (label) @8 (label) @9 (label) @begin @@ -63,7 +63,11 @@ (byte) ORANGE (byte) PINK (byte*) PLAYFIELD_CHARSET -(const byte*) PLAYFIELD_CHARSET#0 PLAYFIELD_CHARSET = ((byte*))(word/signed word/dword/signed dword) 4096 +(const byte*) PLAYFIELD_CHARSET#0 PLAYFIELD_CHARSET = ((byte*))(word/signed word/dword/signed dword) 10240 +(byte) PLAYFIELD_COLS +(const byte) PLAYFIELD_COLS#0 PLAYFIELD_COLS = (byte/signed byte/word/signed word/dword/signed dword) 10 +(byte) PLAYFIELD_LINES +(const byte) PLAYFIELD_LINES#0 PLAYFIELD_LINES = (byte/signed byte/word/signed word/dword/signed dword) 22 (byte*) PLAYFIELD_SCREEN (const byte*) PLAYFIELD_SCREEN#0 PLAYFIELD_SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte*) PLAYFIELD_SPRITES @@ -119,6 +123,10 @@ (byte) VIC_RST8 (byte) WHITE (byte) YELLOW +(byte) current_piece_color +(byte*) current_piece_gfx +(byte) current_xpos +(byte) current_ypos (void()) init_irq() (label) init_irq::@return (void()) init_sprites() @@ -207,6 +215,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (void()) main() (label) main::@2 (label) main::@7 +(byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield (label) toSpritePtr1 (word~) toSpritePtr1_$0 (word~) toSpritePtr1_$1 diff --git a/src/test/ref/examples/tetris/tetris.asm b/src/test/ref/examples/tetris/tetris.asm index c6e033cad..05c9eb59d 100644 --- a/src/test/ref/examples/tetris/tetris.asm +++ b/src/test/ref/examples/tetris/tetris.asm @@ -29,6 +29,8 @@ .label SID_VOICE3_CONTROL = $d412 .const SID_CONTROL_NOISE = $80 .label SID_VOICE3_OSC = $d41b + .label PLAYFIELD_SCREEN = $400 + .label PLAYFIELD_CHARSET = $2800 .const PLAYFIELD_LINES = $16 .const PLAYFIELD_COLS = $a .const current_movedown_slow = $32 @@ -38,37 +40,35 @@ .const COLLISION_BOTTOM = 2 .const COLLISION_LEFT = 4 .const COLLISION_RIGHT = 8 - .label SCREEN = $400 - .label CHARSET = $2800 .label keyboard_events_size = $13 + .label current_movedown_counter = 3 .label current_ypos = 2 .label current_xpos = $11 .label current_orientation = $e .label current_piece_gfx = $f .label current_piece = $c .label current_piece_color = $12 - .label current_movedown_counter = 3 - .label current_piece_15 = 5 - .label current_xpos_63 = 4 - .label current_piece_gfx_64 = 5 - .label current_piece_color_67 = 7 + .label current_piece_12 = 5 + .label current_xpos_48 = 4 + .label current_piece_gfx_53 = 5 + .label current_piece_color_62 = 7 .label current_xpos_96 = 4 .label current_piece_gfx_87 = 5 .label current_piece_gfx_88 = 5 .label current_piece_color_75 = 7 .label current_piece_color_76 = 7 + .label current_piece_71 = 5 .label current_piece_72 = 5 .label current_piece_73 = 5 .label current_piece_74 = 5 - .label current_piece_75 = 5 main: { .label key_event = $14 .label render = $15 jsr sid_rnd_init sei jsr render_init - jsr tables_init - jsr spawn_current + jsr play_init + jsr play_spawn_current jsr render_playfield lda current_piece_gfx sta current_piece_gfx_87 @@ -77,10 +77,10 @@ main: { lda current_piece_color sta current_piece_color_75 lda #3 - sta current_xpos_63 + sta current_xpos_48 ldx #0 jsr render_current - ldy spawn_current._3 + ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y @@ -157,19 +157,19 @@ render_current: { sta screen_line lda screen_lines+1,y sta screen_line+1 - lda current_xpos_63 + lda current_xpos_48 sta xpos ldx #0 b3: ldy i - lda (current_piece_gfx_64),y + lda (current_piece_gfx_53),y inc i cmp #0 beq b4 lda xpos cmp #PLAYFIELD_COLS bcs b4 - lda current_piece_color_67 + lda current_piece_color_62 ldy xpos sta (screen_line),y b4: @@ -241,14 +241,14 @@ play_move_rotate: { sta orientation b4: lda current_xpos - sta collision.xpos + sta play_collision.xpos ldy current_ypos ldx orientation lda current_piece - sta current_piece_75 + sta current_piece_74 lda current_piece+1 - sta current_piece_75+1 - jsr collision + sta current_piece_74+1 + jsr play_collision cmp #COLLISION_NONE bne b3 lda orientation @@ -269,7 +269,7 @@ play_move_rotate: { sta orientation jmp b4 } -collision: { +play_collision: { .label xpos = 7 .label piece_gfx = 5 .label ypos2 = 8 @@ -368,14 +368,14 @@ play_move_leftright: { bne b3 ldy current_xpos iny - sty collision.xpos + sty play_collision.xpos ldy current_ypos ldx current_orientation lda current_piece - sta current_piece_74 + sta current_piece_73 lda current_piece+1 - sta current_piece_74+1 - jsr collision + sta current_piece_73+1 + jsr play_collision cmp #COLLISION_NONE bne b3 inc current_xpos @@ -389,14 +389,14 @@ play_move_leftright: { b1: ldx current_xpos dex - stx collision.xpos + stx play_collision.xpos ldy current_ypos ldx current_orientation lda current_piece - sta current_piece_73 + sta current_piece_72 lda current_piece+1 - sta current_piece_73+1 - jsr collision + sta current_piece_72+1 + jsr play_collision cmp #COLLISION_NONE bne b3 dec current_xpos @@ -431,19 +431,19 @@ play_move_down: { ldy current_ypos iny lda current_xpos - sta collision.xpos + sta play_collision.xpos ldx current_orientation lda current_piece - sta current_piece_72 + sta current_piece_71 lda current_piece+1 - sta current_piece_72+1 - jsr collision + sta current_piece_71+1 + jsr play_collision cmp #COLLISION_NONE beq b6 - jsr lock_current - jsr remove_lines - jsr spawn_current - ldy spawn_current._3 + jsr play_lock_current + jsr play_remove_lines + jsr play_spawn_current + ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y @@ -466,7 +466,7 @@ play_move_down: { inc current_ypos jmp b7 } -spawn_current: { +play_spawn_current: { .label _3 = 2 ldx #7 b1: @@ -493,7 +493,7 @@ sid_rnd: { lda SID_VOICE3_OSC rts } -remove_lines: { +play_remove_lines: { .label c = 7 .label x = 3 .label y = 2 @@ -545,7 +545,7 @@ remove_lines: { dex jmp b5 } -lock_current: { +play_lock_current: { .label ypos2 = 2 .label playfield_line = 5 .label col = 7 @@ -736,7 +736,7 @@ keyboard_matrix_read: { eor #$ff rts } -tables_init: { +play_init: { .label pli = 5 .label idx = 2 lda #0 @@ -782,9 +782,9 @@ render_init: { lda #BLACK sta BGCOL ldx #$d0 - lda #SCREEN + lda #>PLAYFIELD_SCREEN sta fill.addr+1 jsr fill ldx #BLACK @@ -906,13 +906,13 @@ sid_rnd_init: { 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 - playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 screen_lines: .fill 2*(PLAYFIELD_LINES+3), 0 -.pc = CHARSET "Inline" - .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9)) - .for (var c=0; c<16; c++) + PIECES: .word PIECE_T, PIECE_S, PIECE_Z, PIECE_J, PIECE_O, PIECE_I, PIECE_L + playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 +.pc = PLAYFIELD_CHARSET "Inline" + .var charset = LoadPicture("nes-charset.png", List().add($000000, $ffffff)) + .for (var c=0; c<32; c++) .for (var y=0;y<8; y++) - .byte charset.getMulticolorByte(c,y) + .byte charset.getSinglecolorByte(c,y) diff --git a/src/test/ref/examples/tetris/tetris.cfg b/src/test/ref/examples/tetris/tetris.cfg index af29c112a..1de159155 100644 --- a/src/test/ref/examples/tetris/tetris.cfg +++ b/src/test/ref/examples/tetris/tetris.cfg @@ -1,14 +1,14 @@ @begin: scope:[] from [0] phi() - to:@23 -@23: scope:[] from @begin - kickasm(location (const byte*) CHARSET#0) {{ .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9)) - .for (var c=0; c<16; c++) + to:@14 +@14: scope:[] from @begin + kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .var charset = LoadPicture("nes-charset.png", List().add($000000, $ffffff)) + .for (var c=0; c<32; c++) .for (var y=0;y<8; y++) - .byte charset.getMulticolorByte(c,y) + .byte charset.getSinglecolorByte(c,y) }} to:@26 -@26: scope:[] from @23 +@26: scope:[] from @14 [2] phi() [3] call main to:@end @@ -24,31 +24,31 @@ main::@21: scope:[main] from main to:main::@22 main::@22: scope:[main] from main::@21 [9] phi() - [10] call tables_init + [10] call play_init to:main::@23 main::@23: scope:[main] from main::@22 [11] phi() - [12] call spawn_current + [12] call play_spawn_current to:main::@24 main::@24: scope:[main] from main::@23 [13] phi() [14] call render_playfield to:main::@25 main::@25: scope:[main] from main::@24 - [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 - [16] (byte~) current_piece_color#75 ← (byte) current_piece_color#15 + [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#17 + [16] (byte~) current_piece_color#75 ← (byte) current_piece_color#13 [17] call render_current - [18] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + [18] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) to:main::@1 main::@1: scope:[main] from main::@10 main::@25 - [19] (byte) current_movedown_counter#15 ← phi( main::@10/(byte) current_movedown_counter#12 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [19] (byte) current_movedown_counter#12 ← phi( main::@10/(byte) current_movedown_counter#10 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [19] (byte) keyboard_events_size#19 ← phi( main::@10/(byte) keyboard_events_size#16 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [19] (byte) current_piece_color#11 ← phi( main::@10/(byte) current_piece_color#13 main::@25/(byte) current_piece_color#15 ) - [19] (byte) current_ypos#12 ← phi( main::@10/(byte) current_ypos#16 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [19] (byte) current_xpos#16 ← phi( main::@10/(byte) current_xpos#23 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 ) - [19] (byte*) current_piece_gfx#15 ← phi( main::@10/(byte*) current_piece_gfx#18 main::@25/(byte*) current_piece_gfx#10 ) - [19] (byte) current_orientation#15 ← phi( main::@10/(byte) current_orientation#23 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [19] (byte*) current_piece#11 ← phi( main::@10/(byte*) current_piece#13 main::@25/(byte*~) current_piece#71 ) + [19] (byte) current_piece_color#16 ← phi( main::@10/(byte) current_piece_color#11 main::@25/(byte) current_piece_color#13 ) + [19] (byte) current_ypos#22 ← phi( main::@10/(byte) current_ypos#14 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [19] (byte) current_xpos#11 ← phi( main::@10/(byte) current_xpos#20 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 ) + [19] (byte*) current_piece_gfx#10 ← phi( main::@10/(byte*) current_piece_gfx#15 main::@25/(byte*) current_piece_gfx#17 ) + [19] (byte) current_orientation#10 ← phi( main::@10/(byte) current_orientation#19 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [19] (byte*) current_piece#16 ← phi( main::@10/(byte*) current_piece#10 main::@25/(byte*~) current_piece#70 ) to:main::@4 main::@4: scope:[main] from main::@1 main::@4 [20] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 @@ -69,24 +69,24 @@ main::@28: scope:[main] from main::@27 [27] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 [28] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 [29] call play_move_down - [30] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 + [30] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 to:main::@29 main::@29: scope:[main] from main::@28 - [31] (byte~) main::$10 ← (byte) play_move_down::return#0 + [31] (byte~) main::$10 ← (byte) play_move_down::return#3 [32] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 [33] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 [34] call play_move_leftright - [35] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + [35] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 to:main::@30 main::@30: scope:[main] from main::@29 - [36] (byte~) main::$11 ← (byte) play_move_leftright::return#0 + [36] (byte~) main::$11 ← (byte) play_move_leftright::return#4 [37] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 [38] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 [39] call play_move_rotate - [40] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + [40] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 to:main::@31 main::@31: scope:[main] from main::@30 - [41] (byte~) main::$12 ← (byte) play_move_rotate::return#0 + [41] (byte~) main::$12 ← (byte) play_move_rotate::return#4 [42] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 [43] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 to:main::@19 @@ -95,21 +95,21 @@ main::@19: scope:[main] from main::@31 [45] call render_playfield to:main::@32 main::@32: scope:[main] from main::@19 - [46] (byte~) current_ypos#71 ← (byte) current_ypos#16 - [47] (byte~) current_xpos#96 ← (byte) current_xpos#23 - [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#18 - [49] (byte~) current_piece_color#76 ← (byte) current_piece_color#13 + [46] (byte~) current_ypos#71 ← (byte) current_ypos#14 + [47] (byte~) current_xpos#96 ← (byte) current_xpos#20 + [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#15 + [49] (byte~) current_piece_color#76 ← (byte) current_piece_color#11 [50] call render_current to:main::@10 main::@10: scope:[main] from main::@31 main::@32 [51] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) to:main::@1 render_current: scope:[render_current] from main::@25 main::@32 - [52] (byte) current_piece_color#67 ← phi( main::@25/(byte~) current_piece_color#75 main::@32/(byte~) current_piece_color#76 ) - [52] (byte*) current_piece_gfx#64 ← phi( main::@25/(byte*~) current_piece_gfx#87 main::@32/(byte*~) current_piece_gfx#88 ) - [52] (byte) current_xpos#63 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@32/(byte~) current_xpos#96 ) - [52] (byte) current_ypos#22 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@32/(byte~) current_ypos#71 ) - [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [52] (byte) current_piece_color#62 ← phi( main::@25/(byte~) current_piece_color#75 main::@32/(byte~) current_piece_color#76 ) + [52] (byte*) current_piece_gfx#53 ← phi( main::@25/(byte*~) current_piece_gfx#87 main::@32/(byte*~) current_piece_gfx#88 ) + [52] (byte) current_xpos#48 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@32/(byte~) current_xpos#96 ) + [52] (byte) current_ypos#10 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@32/(byte~) current_ypos#71 ) + [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (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 [54] (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 ) @@ -119,13 +119,13 @@ render_current::@1: scope:[render_current] from render_current render_current:: to:render_current::@6 render_current::@6: scope:[render_current] from render_current::@1 [56] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) - [57] (byte) render_current::xpos#0 ← (byte) current_xpos#63 + [57] (byte) render_current::xpos#0 ← (byte) current_xpos#48 to:render_current::@3 render_current::@3: scope:[render_current] from render_current::@4 render_current::@6 [58] (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 ) [58] (byte) render_current::xpos#2 ← phi( render_current::@4/(byte) render_current::xpos#1 render_current::@6/(byte) render_current::xpos#0 ) [58] (byte) render_current::i#2 ← phi( render_current::@4/(byte) render_current::i#1 render_current::@6/(byte) render_current::i#4 ) - [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) + [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#2) [60] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 [61] 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 @@ -133,7 +133,7 @@ render_current::@7: scope:[render_current] from render_current::@3 [62] 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 - [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#67 + [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#62 to:render_current::@4 render_current::@4: scope:[render_current] from render_current::@3 render_current::@7 render_current::@8 [64] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 @@ -182,91 +182,91 @@ play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate [86] 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 - [87] (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 ) - [87] (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 ) - [87] (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 ) + [87] (byte*) current_piece_gfx#15 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#4 play_move_rotate::@14/(byte*) current_piece_gfx#14 play_move_rotate::@6/(byte*) current_piece_gfx#14 ) + [87] (byte) current_orientation#19 ← phi( play_move_rotate::@11/(byte) current_orientation#4 play_move_rotate::@14/(byte) current_orientation#14 play_move_rotate::@6/(byte) current_orientation#14 ) + [87] (byte) play_move_rotate::return#1 ← 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 ) [88] return to:@return play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@6 - [89] (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 + [89] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 [90] (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 [91] (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 ) - [92] (byte) collision::xpos#3 ← (byte) current_xpos#23 - [93] (byte) collision::ypos#3 ← (byte) current_ypos#16 - [94] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 - [95] (byte*~) current_piece#75 ← (byte*) current_piece#13 - [96] call collision - [97] (byte) collision::return#13 ← (byte) collision::return#14 + [92] (byte) play_collision::xpos#3 ← (byte) current_xpos#20 + [93] (byte) play_collision::ypos#3 ← (byte) current_ypos#14 + [94] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + [95] (byte*~) current_piece#74 ← (byte*) current_piece#10 + [96] call play_collision + [97] (byte) play_collision::return#13 ← (byte) play_collision::return#14 to:play_move_rotate::@14 play_move_rotate::@14: scope:[play_move_rotate] from play_move_rotate::@4 - [98] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 + [98] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 [99] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return to:play_move_rotate::@11 play_move_rotate::@11: scope:[play_move_rotate] from play_move_rotate::@14 - [100] (byte) current_orientation#8 ← (byte) play_move_rotate::orientation#3 - [101] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 + [100] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 + [101] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 to:play_move_rotate::@return play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate - [102] (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 + [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 [103] (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 - [104] (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 ) - [104] (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 ) - [104] (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 ) - [104] (byte*) current_piece#15 ← phi( play_move_down::@12/(byte*~) current_piece#72 play_move_leftright::@1/(byte*~) current_piece#73 play_move_leftright::@7/(byte*~) current_piece#74 play_move_rotate::@4/(byte*~) current_piece#75 ) - [105] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 - [106] (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 - [107] (byte) collision::l#6 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte) collision::l#1 ) - [107] (byte) collision::i#3 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte~) collision::i#11 ) - [107] (byte) collision::ypos2#2 ← phi( collision/(byte) collision::ypos2#0 collision::@20/(byte) collision::ypos2#1 ) - [108] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) - [109] (byte~) collision::col#9 ← (byte) collision::xpos#5 - to:collision::@2 -collision::@2: scope:[collision] from collision::@1 collision::@21 - [110] (byte) collision::c#2 ← phi( collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@21/(byte) collision::c#1 ) - [110] (byte) collision::col#2 ← phi( collision::@1/(byte~) collision::col#9 collision::@21/(byte) collision::col#1 ) - [110] (byte) collision::i#2 ← phi( collision::@1/(byte) collision::i#3 collision::@21/(byte~) collision::i#13 ) - [111] (byte) collision::i#1 ← ++ (byte) collision::i#2 - [112] 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 - [113] 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 - [114] (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 ) +play_collision: scope:[play_collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 + [104] (byte) play_collision::xpos#5 ← phi( play_move_down::@12/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@7/(byte) play_collision::xpos#2 play_move_rotate::@4/(byte) play_collision::xpos#3 ) + [104] (byte) play_collision::ypos#4 ← phi( play_move_down::@12/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@7/(byte) play_collision::ypos#2 play_move_rotate::@4/(byte) play_collision::ypos#3 ) + [104] (byte) play_collision::orientation#4 ← phi( play_move_down::@12/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@7/(byte) play_collision::orientation#2 play_move_rotate::@4/(byte) play_collision::orientation#3 ) + [104] (byte*) current_piece#12 ← phi( play_move_down::@12/(byte*~) current_piece#71 play_move_leftright::@1/(byte*~) current_piece#72 play_move_leftright::@7/(byte*~) current_piece#73 play_move_rotate::@4/(byte*~) current_piece#74 ) + [105] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 + [106] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + to:play_collision::@1 +play_collision::@1: scope:[play_collision] from play_collision play_collision::@20 + [107] (byte) play_collision::l#6 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte) play_collision::l#1 ) + [107] (byte) play_collision::i#3 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte~) play_collision::i#11 ) + [107] (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@20/(byte) play_collision::ypos2#1 ) + [108] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) + [109] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 + to:play_collision::@2 +play_collision::@2: scope:[play_collision] from play_collision::@1 play_collision::@21 + [110] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@21/(byte) play_collision::c#1 ) + [110] (byte) play_collision::col#2 ← phi( play_collision::@1/(byte~) play_collision::col#9 play_collision::@21/(byte) play_collision::col#1 ) + [110] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@21/(byte~) play_collision::i#13 ) + [111] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 + [112] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 + to:play_collision::@8 +play_collision::@8: scope:[play_collision] from play_collision::@2 + [113] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 + to:play_collision::@return +play_collision::@return: scope:[play_collision] from play_collision::@17 play_collision::@4 play_collision::@5 play_collision::@6 play_collision::@8 + [114] (byte) play_collision::return#14 ← phi( play_collision::@4/(const byte) COLLISION_LEFT#0 play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@17/(const byte) COLLISION_NONE#0 play_collision::@8/(const byte) COLLISION_BOTTOM#0 ) [115] return to:@return -collision::@4: scope:[collision] from collision::@8 - [116] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 - [117] 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 - [118] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 - to:collision::@return -collision::@6: scope:[collision] from collision::@5 - [119] 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 - [120] (byte) collision::col#1 ← ++ (byte) collision::col#2 - [121] (byte) collision::c#1 ← ++ (byte) collision::c#2 - [122] 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 - [123] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [124] (byte) collision::l#1 ← ++ (byte) collision::l#6 - [125] 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 - [126] (byte~) collision::i#11 ← (byte) collision::i#1 - to:collision::@1 -collision::@21: scope:[collision] from collision::@3 - [127] (byte~) collision::i#13 ← (byte) collision::i#1 - to:collision::@2 +play_collision::@4: scope:[play_collision] from play_collision::@8 + [116] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 + [117] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 + to:play_collision::@return +play_collision::@5: scope:[play_collision] from play_collision::@4 + [118] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 + to:play_collision::@return +play_collision::@6: scope:[play_collision] from play_collision::@5 + [119] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 + to:play_collision::@return +play_collision::@3: scope:[play_collision] from play_collision::@2 play_collision::@6 + [120] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 + [121] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 + [122] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 + to:play_collision::@17 +play_collision::@17: scope:[play_collision] from play_collision::@3 + [123] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [124] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 + [125] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 + to:play_collision::@return +play_collision::@20: scope:[play_collision] from play_collision::@17 + [126] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 + to:play_collision::@1 +play_collision::@21: scope:[play_collision] from play_collision::@3 + [127] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 + to:play_collision::@2 play_move_leftright: scope:[play_move_leftright] from main::@29 [128] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 to:play_move_leftright::@6 @@ -274,42 +274,42 @@ play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright [129] 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 - [130] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [131] (byte) collision::ypos#2 ← (byte) current_ypos#16 - [132] (byte) collision::orientation#2 ← (byte) current_orientation#18 - [133] (byte*~) current_piece#74 ← (byte*) current_piece#13 - [134] call collision - [135] (byte) collision::return#12 ← (byte) collision::return#14 + [130] (byte) play_collision::xpos#2 ← (byte) current_xpos#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [131] (byte) play_collision::ypos#2 ← (byte) current_ypos#14 + [132] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 + [133] (byte*~) current_piece#73 ← (byte*) current_piece#10 + [134] call play_collision + [135] (byte) play_collision::return#12 ← (byte) play_collision::return#14 to:play_move_leftright::@15 play_move_leftright::@15: scope:[play_move_leftright] from play_move_leftright::@7 - [136] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 + [136] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 [137] 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 - [138] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 + [138] (byte) current_xpos#3 ← ++ (byte) current_xpos#16 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 - [139] (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 ) - [139] (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 ) + [139] (byte) current_xpos#20 ← phi( play_move_leftright::@11/(byte) current_xpos#5 play_move_leftright::@15/(byte) current_xpos#16 play_move_leftright::@8/(byte) current_xpos#3 play_move_leftright::@14/(byte) current_xpos#16 play_move_leftright::@6/(byte) current_xpos#16 ) + [139] (byte) play_move_leftright::return#1 ← 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 ) [140] return to:@return play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright - [141] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 - [142] (byte) collision::ypos#1 ← (byte) current_ypos#16 - [143] (byte) collision::orientation#1 ← (byte) current_orientation#18 - [144] (byte*~) current_piece#73 ← (byte*) current_piece#13 - [145] call collision - [146] (byte) collision::return#1 ← (byte) collision::return#14 + [141] (byte) play_collision::xpos#1 ← (byte) current_xpos#16 - (byte/signed byte/word/signed word/dword/signed dword) 1 + [142] (byte) play_collision::ypos#1 ← (byte) current_ypos#14 + [143] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 + [144] (byte*~) current_piece#72 ← (byte*) current_piece#10 + [145] call play_collision + [146] (byte) play_collision::return#1 ← (byte) play_collision::return#14 to:play_move_leftright::@14 play_move_leftright::@14: scope:[play_move_leftright] from play_move_leftright::@1 - [147] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 + [147] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 [148] 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 - [149] (byte) current_xpos#9 ← -- (byte) current_xpos#19 + [149] (byte) current_xpos#5 ← -- (byte) current_xpos#16 to:play_move_leftright::@return play_move_down: scope:[play_move_down] from main::@28 - [150] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 + [150] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 [151] 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 @@ -325,14 +325,14 @@ play_move_down::@17: scope:[play_move_down] from play_move_down::@1 [157] 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 - [158] if((byte) current_movedown_counter#10<(const byte) current_movedown_fast#0) goto play_move_down::@2 + [158] if((byte) current_movedown_counter#1<(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 [159] (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 [160] (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 ) - [161] if((byte) current_movedown_counter#10<(const byte) current_movedown_slow#0) goto play_move_down::@4 + [161] if((byte) current_movedown_counter#1<(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 [162] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 @@ -342,170 +342,170 @@ play_move_down::@4: scope:[play_move_down] from play_move_down::@11 play_move_d [164] 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 - [165] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [166] (byte) collision::xpos#0 ← (byte) current_xpos#16 - [167] (byte) collision::orientation#0 ← (byte) current_orientation#15 - [168] (byte*~) current_piece#72 ← (byte*) current_piece#11 - [169] call collision - [170] (byte) collision::return#0 ← (byte) collision::return#14 + [165] (byte) play_collision::ypos#0 ← (byte) current_ypos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [166] (byte) play_collision::xpos#0 ← (byte) current_xpos#11 + [167] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 + [168] (byte*~) current_piece#71 ← (byte*) current_piece#16 + [169] call play_collision + [170] (byte) play_collision::return#0 ← (byte) play_collision::return#14 to:play_move_down::@18 play_move_down::@18: scope:[play_move_down] from play_move_down::@12 - [171] (byte~) play_move_down::$12 ← (byte) collision::return#0 + [171] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 [172] 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 [173] phi() - [174] call lock_current + [174] call play_lock_current to:play_move_down::@19 play_move_down::@19: scope:[play_move_down] from play_move_down::@13 [175] phi() - [176] call remove_lines + [176] call play_remove_lines to:play_move_down::@20 play_move_down::@20: scope:[play_move_down] from play_move_down::@19 [177] phi() - [178] call spawn_current - [179] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + [178] call play_spawn_current + [179] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) to:play_move_down::@7 play_move_down::@7: scope:[play_move_down] from play_move_down::@20 play_move_down::@6 - [180] (byte) current_piece_color#23 ← phi( play_move_down::@20/(byte) current_piece_color#15 play_move_down::@6/(byte) current_piece_color#11 ) - [180] (byte) current_xpos#36 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 3 play_move_down::@6/(byte) current_xpos#16 ) - [180] (byte*) current_piece_gfx#29 ← phi( play_move_down::@20/(byte*) current_piece_gfx#10 play_move_down::@6/(byte*) current_piece_gfx#15 ) - [180] (byte) current_orientation#33 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_orientation#15 ) - [180] (byte*) current_piece#23 ← phi( play_move_down::@20/(byte*~) current_piece#76 play_move_down::@6/(byte*) current_piece#11 ) - [180] (byte) current_ypos#31 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_ypos#4 ) + [180] (byte) current_piece_color#21 ← phi( play_move_down::@20/(byte) current_piece_color#13 play_move_down::@6/(byte) current_piece_color#16 ) + [180] (byte) current_xpos#34 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 3 play_move_down::@6/(byte) current_xpos#11 ) + [180] (byte*) current_piece_gfx#27 ← phi( play_move_down::@20/(byte*) current_piece_gfx#17 play_move_down::@6/(byte*) current_piece_gfx#10 ) + [180] (byte) current_orientation#29 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_orientation#10 ) + [180] (byte*) current_piece#20 ← phi( play_move_down::@20/(byte*~) current_piece#75 play_move_down::@6/(byte*) current_piece#16 ) + [180] (byte) current_ypos#30 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_ypos#1 ) to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@4 play_move_down::@7 - [181] (byte) current_piece_color#13 ← phi( play_move_down::@4/(byte) current_piece_color#11 play_move_down::@7/(byte) current_piece_color#23 ) - [181] (byte) current_xpos#19 ← phi( play_move_down::@4/(byte) current_xpos#16 play_move_down::@7/(byte) current_xpos#36 ) - [181] (byte*) current_piece_gfx#17 ← phi( play_move_down::@4/(byte*) current_piece_gfx#15 play_move_down::@7/(byte*) current_piece_gfx#29 ) - [181] (byte) current_orientation#18 ← phi( play_move_down::@4/(byte) current_orientation#15 play_move_down::@7/(byte) current_orientation#33 ) - [181] (byte*) current_piece#13 ← phi( play_move_down::@4/(byte*) current_piece#11 play_move_down::@7/(byte*) current_piece#23 ) - [181] (byte) current_ypos#16 ← phi( play_move_down::@4/(byte) current_ypos#12 play_move_down::@7/(byte) current_ypos#31 ) - [181] (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 ) - [181] (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 ) + [181] (byte) current_piece_color#11 ← phi( play_move_down::@4/(byte) current_piece_color#16 play_move_down::@7/(byte) current_piece_color#21 ) + [181] (byte) current_xpos#16 ← phi( play_move_down::@4/(byte) current_xpos#11 play_move_down::@7/(byte) current_xpos#34 ) + [181] (byte*) current_piece_gfx#14 ← phi( play_move_down::@4/(byte*) current_piece_gfx#10 play_move_down::@7/(byte*) current_piece_gfx#27 ) + [181] (byte) current_orientation#14 ← phi( play_move_down::@4/(byte) current_orientation#10 play_move_down::@7/(byte) current_orientation#29 ) + [181] (byte*) current_piece#10 ← phi( play_move_down::@4/(byte*) current_piece#16 play_move_down::@7/(byte*) current_piece#20 ) + [181] (byte) current_ypos#14 ← phi( play_move_down::@4/(byte) current_ypos#22 play_move_down::@7/(byte) current_ypos#30 ) + [181] (byte) current_movedown_counter#10 ← phi( play_move_down::@4/(byte) current_movedown_counter#1 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [181] (byte) play_move_down::return#2 ← 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 ) [182] return to:@return play_move_down::@6: scope:[play_move_down] from play_move_down::@18 - [183] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 + [183] (byte) current_ypos#1 ← ++ (byte) current_ypos#22 to:play_move_down::@7 -spawn_current: scope:[spawn_current] from main::@23 play_move_down::@20 +play_spawn_current: scope:[play_spawn_current] from main::@23 play_move_down::@20 [184] phi() - to:spawn_current::@1 -spawn_current::@1: scope:[spawn_current] from spawn_current spawn_current::@7 - [185] (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 ) - [186] 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 - [187] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [188] (byte*) current_piece_gfx#10 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 - [189] (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::@3 + to:play_spawn_current::@1 +play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current play_spawn_current::@7 + [185] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current/(byte/signed byte/word/signed word/dword/signed dword) 7 play_spawn_current::@7/(byte) play_spawn_current::piece_idx#1 ) + [186] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 + to:play_spawn_current::@3 +play_spawn_current::@3: scope:[play_spawn_current] from play_spawn_current::@1 + [187] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [188] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 + [189] (byte) current_piece_color#13 ← *((const byte[]) PIECES_COLORS#0 + (byte) play_spawn_current::piece_idx#2) + to:play_spawn_current::@return +play_spawn_current::@return: scope:[play_spawn_current] from play_spawn_current::@3 [190] return to:@return -spawn_current::@2: scope:[spawn_current] from spawn_current::@1 +play_spawn_current::@2: scope:[play_spawn_current] from play_spawn_current::@1 [191] phi() [192] call sid_rnd [193] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 - to:spawn_current::@7 -spawn_current::@7: scope:[spawn_current] from spawn_current::@2 - [194] (byte~) spawn_current::$1 ← (byte) sid_rnd::return#2 - [195] (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 + to:play_spawn_current::@7 +play_spawn_current::@7: scope:[play_spawn_current] from play_spawn_current::@2 + [194] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 + [195] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 + to:play_spawn_current::@1 +sid_rnd: scope:[sid_rnd] from play_spawn_current::@2 [196] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) to:sid_rnd::@return sid_rnd::@return: scope:[sid_rnd] from sid_rnd [197] return to:@return -remove_lines: scope:[remove_lines] from play_move_down::@19 +play_remove_lines: scope:[play_remove_lines] from play_move_down::@19 [198] phi() - to:remove_lines::@1 -remove_lines::@1: scope:[remove_lines] from remove_lines remove_lines::@4 - [199] (byte) remove_lines::y#8 ← phi( remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 remove_lines::@4/(byte) remove_lines::y#1 ) - [199] (byte) remove_lines::w#12 ← phi( remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 remove_lines::@4/(byte) remove_lines::w#11 ) - [199] (byte) remove_lines::r#3 ← phi( remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 remove_lines::@4/(byte) remove_lines::r#1 ) - to:remove_lines::@2 -remove_lines::@2: scope:[remove_lines] from remove_lines::@1 remove_lines::@3 - [200] (byte) remove_lines::full#4 ← phi( remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 remove_lines::@3/(byte) remove_lines::full#2 ) - [200] (byte) remove_lines::x#2 ← phi( remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 remove_lines::@3/(byte) remove_lines::x#1 ) - [200] (byte) remove_lines::w#4 ← phi( remove_lines::@1/(byte) remove_lines::w#12 remove_lines::@3/(byte) remove_lines::w#1 ) - [200] (byte) remove_lines::r#2 ← phi( remove_lines::@1/(byte) remove_lines::r#3 remove_lines::@3/(byte) remove_lines::r#1 ) - [201] (byte) remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::r#2) - [202] (byte) remove_lines::r#1 ← -- (byte) remove_lines::r#2 - [203] if((byte) remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@17 - to:remove_lines::@3 -remove_lines::@3: scope:[remove_lines] from remove_lines::@17 remove_lines::@2 - [204] (byte) remove_lines::full#2 ← phi( remove_lines::@17/(byte) remove_lines::full#4 remove_lines::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [205] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#4) ← (byte) remove_lines::c#0 - [206] (byte) remove_lines::w#1 ← -- (byte) remove_lines::w#4 - [207] (byte) remove_lines::x#1 ← ++ (byte) remove_lines::x#2 - [208] if((byte) remove_lines::x#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 remove_lines::@2 - to:remove_lines::@9 -remove_lines::@9: scope:[remove_lines] from remove_lines::@3 - [209] if((byte) remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@4 - to:remove_lines::@10 -remove_lines::@10: scope:[remove_lines] from remove_lines::@9 - [210] (byte) remove_lines::w#2 ← (byte) remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 - to:remove_lines::@4 -remove_lines::@4: scope:[remove_lines] from remove_lines::@10 remove_lines::@9 - [211] (byte) remove_lines::w#11 ← phi( remove_lines::@10/(byte) remove_lines::w#2 remove_lines::@9/(byte) remove_lines::w#1 ) - [212] (byte) remove_lines::y#1 ← ++ (byte) remove_lines::y#8 - [213] if((byte) remove_lines::y#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 remove_lines::@1 - to:remove_lines::@5 -remove_lines::@5: scope:[remove_lines] from remove_lines::@4 remove_lines::@6 - [214] (byte) remove_lines::w#6 ← phi( remove_lines::@4/(byte) remove_lines::w#11 remove_lines::@6/(byte) remove_lines::w#3 ) - [215] if((byte) remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@6 - to:remove_lines::@return -remove_lines::@return: scope:[remove_lines] from remove_lines::@5 + to:play_remove_lines::@1 +play_remove_lines::@1: scope:[play_remove_lines] from play_remove_lines play_remove_lines::@4 + [199] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@4/(byte) play_remove_lines::y#1 ) + [199] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::w#11 ) + [199] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::r#1 ) + to:play_remove_lines::@2 +play_remove_lines::@2: scope:[play_remove_lines] from play_remove_lines::@1 play_remove_lines::@3 + [200] (byte) play_remove_lines::full#4 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@3/(byte) play_remove_lines::full#2 ) + [200] (byte) play_remove_lines::x#2 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@3/(byte) play_remove_lines::x#1 ) + [200] (byte) play_remove_lines::w#4 ← phi( play_remove_lines::@1/(byte) play_remove_lines::w#12 play_remove_lines::@3/(byte) play_remove_lines::w#1 ) + [200] (byte) play_remove_lines::r#2 ← phi( play_remove_lines::@1/(byte) play_remove_lines::r#3 play_remove_lines::@3/(byte) play_remove_lines::r#1 ) + [201] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) + [202] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 + [203] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@17 + to:play_remove_lines::@3 +play_remove_lines::@3: scope:[play_remove_lines] from play_remove_lines::@17 play_remove_lines::@2 + [204] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@17/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [205] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 + [206] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 + [207] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 + [208] if((byte) play_remove_lines::x#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 play_remove_lines::@2 + to:play_remove_lines::@9 +play_remove_lines::@9: scope:[play_remove_lines] from play_remove_lines::@3 + [209] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 + to:play_remove_lines::@10 +play_remove_lines::@10: scope:[play_remove_lines] from play_remove_lines::@9 + [210] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 + to:play_remove_lines::@4 +play_remove_lines::@4: scope:[play_remove_lines] from play_remove_lines::@10 play_remove_lines::@9 + [211] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@10/(byte) play_remove_lines::w#2 play_remove_lines::@9/(byte) play_remove_lines::w#1 ) + [212] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 + [213] if((byte) play_remove_lines::y#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 play_remove_lines::@1 + to:play_remove_lines::@5 +play_remove_lines::@5: scope:[play_remove_lines] from play_remove_lines::@4 play_remove_lines::@6 + [214] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#11 play_remove_lines::@6/(byte) play_remove_lines::w#3 ) + [215] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 + to:play_remove_lines::@return +play_remove_lines::@return: scope:[play_remove_lines] from play_remove_lines::@5 [216] return to:@return -remove_lines::@6: scope:[remove_lines] from remove_lines::@5 - [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [218] (byte) remove_lines::w#3 ← -- (byte) remove_lines::w#6 - to:remove_lines::@5 -remove_lines::@17: scope:[remove_lines] from remove_lines::@2 +play_remove_lines::@6: scope:[play_remove_lines] from play_remove_lines::@5 + [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [218] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 + to:play_remove_lines::@5 +play_remove_lines::@17: scope:[play_remove_lines] from play_remove_lines::@2 [219] phi() - to:remove_lines::@3 -lock_current: scope:[lock_current] from play_move_down::@13 - [220] (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::@7 - [221] (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 ) - [221] (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 ) - [221] (byte) lock_current::ypos2#2 ← phi( lock_current/(byte) lock_current::ypos2#0 lock_current::@7/(byte) lock_current::ypos2#1 ) - [222] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) - [223] (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::@8 - [224] (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 ) - [224] (byte) lock_current::col#2 ← phi( lock_current::@1/(byte) lock_current::col#0 lock_current::@8/(byte) lock_current::col#1 ) - [224] (byte) lock_current::i#2 ← phi( lock_current::@1/(byte) lock_current::i#3 lock_current::@8/(byte~) lock_current::i#9 ) - [225] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 - [226] 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 - [227] *((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 - [228] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 - [229] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 - [230] 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 - [231] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [232] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 - [233] 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 + to:play_remove_lines::@3 +play_lock_current: scope:[play_lock_current] from play_move_down::@13 + [220] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 + to:play_lock_current::@1 +play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lock_current::@7 + [221] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte) play_lock_current::l#1 ) + [221] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte~) play_lock_current::i#7 ) + [221] (byte) play_lock_current::ypos2#2 ← phi( play_lock_current/(byte) play_lock_current::ypos2#0 play_lock_current::@7/(byte) play_lock_current::ypos2#1 ) + [222] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) + [223] (byte) play_lock_current::col#0 ← (byte) current_xpos#11 + to:play_lock_current::@2 +play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@8 + [224] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@8/(byte) play_lock_current::c#1 ) + [224] (byte) play_lock_current::col#2 ← phi( play_lock_current::@1/(byte) play_lock_current::col#0 play_lock_current::@8/(byte) play_lock_current::col#1 ) + [224] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@8/(byte~) play_lock_current::i#9 ) + [225] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 + [226] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 + to:play_lock_current::@4 +play_lock_current::@4: scope:[play_lock_current] from play_lock_current::@2 + [227] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_color#16 + to:play_lock_current::@3 +play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4 + [228] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 + [229] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 + [230] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 + to:play_lock_current::@5 +play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3 + [231] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [232] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 + [233] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 + to:play_lock_current::@return +play_lock_current::@return: scope:[play_lock_current] from play_lock_current::@5 [234] return to:@return -lock_current::@7: scope:[lock_current] from lock_current::@5 - [235] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 - to:lock_current::@1 -lock_current::@8: scope:[lock_current] from lock_current::@3 - [236] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 - to:lock_current::@2 +play_lock_current::@7: scope:[play_lock_current] from play_lock_current::@5 + [235] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 + to:play_lock_current::@1 +play_lock_current::@8: scope:[play_lock_current] from play_lock_current::@3 + [236] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 + to:play_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 [237] (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 ) [238] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 @@ -643,25 +643,25 @@ keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@1 keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read [303] return to:@return -tables_init: scope:[tables_init] from main::@22 +play_init: scope:[play_init] from main::@22 [304] phi() - to:tables_init::@1 -tables_init::@1: scope:[tables_init] from tables_init tables_init::@1 - [305] (byte) tables_init::idx#2 ← phi( tables_init/(byte/signed byte/word/signed word/dword/signed dword) 0 tables_init::@1/(byte) tables_init::idx#1 ) - [305] (byte*) tables_init::pli#2 ← phi( tables_init/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 tables_init::@1/(byte*) tables_init::pli#1 ) - [305] (byte) tables_init::j#2 ← phi( tables_init/(byte/signed byte/word/signed word/dword/signed dword) 0 tables_init::@1/(byte) tables_init::j#1 ) - [306] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 - [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 - [309] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 - [310] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 - [311] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 - [312] if((byte) tables_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 tables_init::@1 - to:tables_init::@2 -tables_init::@2: scope:[tables_init] from tables_init::@1 + to:play_init::@1 +play_init::@1: scope:[play_init] from play_init play_init::@1 + [305] (byte) play_init::idx#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::idx#1 ) + [305] (byte*) play_init::pli#2 ← phi( play_init/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 play_init::@1/(byte*) play_init::pli#1 ) + [305] (byte) play_init::j#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::j#1 ) + [306] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 + [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 + [309] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 + [310] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 + [311] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 + [312] if((byte) play_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 play_init::@1 + to:play_init::@2 +play_init::@2: scope:[play_init] from play_init::@1 [313] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 - to:tables_init::@return -tables_init::@return: scope:[tables_init] from tables_init::@2 + to:play_init::@return +play_init::@return: scope:[play_init] from play_init::@2 [314] return to:@return render_init: scope:[render_init] from main::@21 @@ -702,7 +702,7 @@ render_init::@return: scope:[render_init] from render_init::@5 to:@return fill: scope:[fill] from render_init render_init::@7 [335] (byte) fill::val#3 ← phi( render_init/(byte/word/signed word/dword/signed dword) 208 render_init::@7/(const byte) BLACK#0 ) - [335] (byte*) fill::addr#0 ← phi( render_init/(const byte*) SCREEN#0 render_init::@7/(const byte*) COLS#0 ) + [335] (byte*) fill::addr#0 ← phi( render_init/(const byte*) PLAYFIELD_SCREEN#0 render_init::@7/(const byte*) COLS#0 ) [336] (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 diff --git a/src/test/ref/examples/tetris/tetris.log b/src/test/ref/examples/tetris/tetris.log index 76f1f1bf8..c3cee6426 100644 --- a/src/test/ref/examples/tetris/tetris.log +++ b/src/test/ref/examples/tetris/tetris.log @@ -478,7 +478,7 @@ sid_rnd_init: scope:[sid_rnd_init] from main sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init return to:@return -sid_rnd: scope:[sid_rnd] from spawn_current::@2 +sid_rnd: scope:[sid_rnd] from play_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 @@ -487,1241 +487,32 @@ sid_rnd::@return: scope:[sid_rnd] from sid_rnd return to:@return @14: scope:[] from @12 - (byte) keyboard_modifiers#44 ← phi( @12/(byte) keyboard_modifiers#45 ) - (byte) keyboard_events_size#53 ← phi( @12/(byte) keyboard_events_size#57 ) - (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) keyboard_modifiers#39 ← phi( @12/(byte) keyboard_modifiers#45 ) + (byte) keyboard_events_size#48 ← phi( @12/(byte) keyboard_events_size#57 ) + (byte*) PLAYFIELD_SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (byte*~) $1 ← (byte*) PLAYFIELD_SCREEN#0 + (word) SPRITE_PTRS#0 + (byte*) PLAYFIELD_SPRITE_PTRS#0 ← (byte*~) $1 + (byte*) PLAYFIELD_SPRITES#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 + (byte*) PLAYFIELD_CHARSET#0 ← ((byte*)) (word/signed word/dword/signed dword) 10240 (byte) PLAYFIELD_LINES#0 ← (byte/signed byte/word/signed word/dword/signed dword) 22 (byte) PLAYFIELD_COLS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 - (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/signed word/word/dword/signed dword~) $23 ← (byte) PLAYFIELD_LINES#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte[$23]) playfield_lines_idx#0 ← { fill( $23, 0) } - (byte*) current_piece#0 ← ((byte*)) (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~) $2 ← (byte) PLAYFIELD_LINES#0 * (byte) PLAYFIELD_COLS#0 + (byte[$2]) playfield#0 ← { fill( $2, 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_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:@18 -main: scope:[main] from @26 - (byte) current_movedown_counter#46 ← phi( @26/(byte) current_movedown_counter#20 ) - (byte) keyboard_modifiers#52 ← phi( @26/(byte) keyboard_modifiers#25 ) - (byte) keyboard_events_size#70 ← phi( @26/(byte) keyboard_events_size#28 ) - (byte) current_piece_color#52 ← phi( @26/(byte) current_piece_color#26 ) - (byte) current_ypos#60 ← phi( @26/(byte) current_ypos#39 ) - (byte) current_xpos#80 ← phi( @26/(byte) current_xpos#47 ) - (byte*) current_piece_gfx#67 ← phi( @26/(byte*) current_piece_gfx#36 ) - (byte) current_orientation#62 ← phi( @26/(byte) current_orientation#40 ) - (byte*) current_piece#54 ← phi( @26/(byte*) current_piece#29 ) - (byte*) SCREEN#3 ← phi( @26/(byte*) SCREEN#4 ) - call sid_rnd_init - to:main::@21 -main::@21: scope:[main] from main - (byte) current_movedown_counter#45 ← phi( main/(byte) current_movedown_counter#46 ) - (byte) keyboard_modifiers#51 ← phi( main/(byte) keyboard_modifiers#52 ) - (byte) keyboard_events_size#67 ← phi( main/(byte) keyboard_events_size#70 ) - (byte) current_piece_color#38 ← phi( main/(byte) current_piece_color#52 ) - (byte) current_ypos#51 ← phi( main/(byte) current_ypos#60 ) - (byte) current_xpos#66 ← phi( main/(byte) current_xpos#80 ) - (byte*) current_piece_gfx#53 ← phi( main/(byte*) current_piece_gfx#67 ) - (byte) current_orientation#51 ← phi( main/(byte) current_orientation#62 ) - (byte*) current_piece#42 ← phi( main/(byte*) current_piece#54 ) - (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#3 ) - asm { sei } - call render_init - to:main::@22 -main::@22: scope:[main] from main::@21 - (byte) current_movedown_counter#42 ← phi( main::@21/(byte) current_movedown_counter#45 ) - (byte) keyboard_modifiers#49 ← phi( main::@21/(byte) keyboard_modifiers#51 ) - (byte) keyboard_events_size#65 ← phi( main::@21/(byte) keyboard_events_size#67 ) - (byte) current_piece_color#27 ← phi( main::@21/(byte) current_piece_color#38 ) - (byte) current_ypos#40 ← phi( main::@21/(byte) current_ypos#51 ) - (byte) current_xpos#48 ← phi( main::@21/(byte) current_xpos#66 ) - (byte*) current_piece_gfx#37 ← phi( main::@21/(byte*) current_piece_gfx#53 ) - (byte) current_orientation#41 ← phi( main::@21/(byte) current_orientation#51 ) - (byte*) current_piece#30 ← phi( main::@21/(byte*) current_piece#42 ) - call tables_init - to:main::@23 -main::@23: scope:[main] from main::@22 - (byte) current_movedown_counter#38 ← phi( main::@22/(byte) current_movedown_counter#42 ) - (byte) keyboard_modifiers#46 ← phi( main::@22/(byte) keyboard_modifiers#49 ) - (byte) keyboard_events_size#58 ← phi( main::@22/(byte) keyboard_events_size#65 ) - (byte) current_piece_color#18 ← phi( main::@22/(byte) current_piece_color#27 ) - (byte) current_ypos#24 ← phi( main::@22/(byte) current_ypos#40 ) - (byte) current_xpos#30 ← phi( main::@22/(byte) current_xpos#48 ) - (byte*) current_piece_gfx#23 ← phi( main::@22/(byte*) current_piece_gfx#37 ) - (byte) current_orientation#26 ← phi( main::@22/(byte) current_orientation#41 ) - (byte*) current_piece#18 ← phi( main::@22/(byte*) current_piece#30 ) - call spawn_current - to:main::@24 -main::@24: scope:[main] from main::@23 - (byte) current_movedown_counter#34 ← phi( main::@23/(byte) current_movedown_counter#38 ) - (byte) keyboard_modifiers#39 ← phi( main::@23/(byte) keyboard_modifiers#46 ) - (byte) keyboard_events_size#48 ← phi( main::@23/(byte) keyboard_events_size#58 ) - (byte) current_piece_color#9 ← phi( main::@23/(byte) current_piece_color#7 ) - (byte) current_ypos#10 ← phi( main::@23/(byte) current_ypos#8 ) - (byte) current_xpos#13 ← phi( main::@23/(byte) current_xpos#11 ) - (byte*) current_piece_gfx#12 ← phi( main::@23/(byte*) current_piece_gfx#10 ) - (byte) current_orientation#12 ← phi( main::@23/(byte) current_orientation#10 ) - (byte*) current_piece#9 ← phi( main::@23/(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::@25 -main::@25: scope:[main] from main::@24 - (byte) current_movedown_counter#27 ← phi( main::@24/(byte) current_movedown_counter#34 ) - (byte) keyboard_modifiers#33 ← phi( main::@24/(byte) keyboard_modifiers#39 ) - (byte) keyboard_events_size#39 ← phi( main::@24/(byte) keyboard_events_size#48 ) - (byte) current_piece_color#39 ← phi( main::@24/(byte) current_piece_color#1 ) - (byte) current_xpos#67 ← phi( main::@24/(byte) current_xpos#1 ) - (byte*) current_piece_gfx#54 ← phi( main::@24/(byte*) current_piece_gfx#1 ) - (byte) current_orientation#52 ← phi( main::@24/(byte) current_orientation#1 ) - (byte*) current_piece#43 ← phi( main::@24/(byte*) current_piece#1 ) - (byte) current_ypos#37 ← phi( main::@24/(byte) current_ypos#1 ) - call render_current - to:main::@26 -main::@26: scope:[main] from main::@25 - (byte) current_movedown_counter#22 ← phi( main::@25/(byte) current_movedown_counter#27 ) - (byte) keyboard_modifiers#30 ← phi( main::@25/(byte) keyboard_modifiers#33 ) - (byte) keyboard_events_size#33 ← phi( main::@25/(byte) keyboard_events_size#39 ) - (byte) current_piece_color#29 ← phi( main::@25/(byte) current_piece_color#39 ) - (byte) current_ypos#42 ← phi( main::@25/(byte) current_ypos#37 ) - (byte) current_xpos#50 ← phi( main::@25/(byte) current_xpos#67 ) - (byte*) current_piece_gfx#39 ← phi( main::@25/(byte*) current_piece_gfx#54 ) - (byte) current_orientation#43 ← phi( main::@25/(byte) current_orientation#52 ) - (byte*) current_piece#32 ← phi( main::@25/(byte*) current_piece#43 ) - to:main::@1 -main::@1: scope:[main] from main::@10 main::@26 - (byte) current_movedown_counter#15 ← phi( main::@10/(byte) current_movedown_counter#21 main::@26/(byte) current_movedown_counter#22 ) - (byte) keyboard_modifiers#24 ← phi( main::@10/(byte) keyboard_modifiers#29 main::@26/(byte) keyboard_modifiers#30 ) - (byte) keyboard_events_size#27 ← phi( main::@10/(byte) keyboard_events_size#32 main::@26/(byte) keyboard_events_size#33 ) - (byte) current_piece_color#20 ← phi( main::@10/(byte) current_piece_color#28 main::@26/(byte) current_piece_color#29 ) - (byte) current_ypos#26 ← phi( main::@10/(byte) current_ypos#41 main::@26/(byte) current_ypos#42 ) - (byte) current_xpos#32 ← phi( main::@10/(byte) current_xpos#49 main::@26/(byte) current_xpos#50 ) - (byte*) current_piece_gfx#26 ← phi( main::@10/(byte*) current_piece_gfx#38 main::@26/(byte*) current_piece_gfx#39 ) - (byte) current_orientation#29 ← phi( main::@10/(byte) current_orientation#42 main::@26/(byte) current_orientation#43 ) - (byte*) current_piece#20 ← phi( main::@10/(byte*) current_piece#31 main::@26/(byte*) current_piece#32 ) - if(true) goto main::@2 - to:main::@return -main::@2: scope:[main] from main::@1 - (byte) current_piece_color#69 ← phi( main::@1/(byte) current_piece_color#20 ) - (byte) current_xpos#93 ← phi( main::@1/(byte) current_xpos#32 ) - (byte*) current_piece_gfx#81 ← phi( main::@1/(byte*) current_piece_gfx#26 ) - (byte) current_orientation#72 ← phi( main::@1/(byte) current_orientation#29 ) - (byte*) current_piece#66 ← phi( main::@1/(byte*) current_piece#20 ) - (byte) current_ypos#68 ← phi( main::@1/(byte) current_ypos#26 ) - (byte) current_movedown_counter#43 ← 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 ) - to:main::@4 -main::@4: scope:[main] from main::@2 main::@5 - (byte) current_piece_color#62 ← phi( main::@2/(byte) current_piece_color#69 main::@5/(byte) current_piece_color#70 ) - (byte) current_xpos#88 ← phi( main::@2/(byte) current_xpos#93 main::@5/(byte) current_xpos#94 ) - (byte*) current_piece_gfx#76 ← phi( main::@2/(byte*) current_piece_gfx#81 main::@5/(byte*) current_piece_gfx#82 ) - (byte) current_orientation#67 ← phi( main::@2/(byte) current_orientation#72 main::@5/(byte) current_orientation#73 ) - (byte*) current_piece#61 ← phi( main::@2/(byte*) current_piece#66 main::@5/(byte*) current_piece#67 ) - (byte) current_ypos#64 ← phi( main::@2/(byte) current_ypos#68 main::@5/(byte) current_ypos#69 ) - (byte) current_movedown_counter#39 ← phi( main::@2/(byte) current_movedown_counter#43 main::@5/(byte) current_movedown_counter#44 ) - (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::$6 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 255 - if((bool~) main::$6) goto main::@5 - to:main::@7 -main::@5: scope:[main] from main::@4 - (byte) current_piece_color#70 ← phi( main::@4/(byte) current_piece_color#62 ) - (byte) current_xpos#94 ← phi( main::@4/(byte) current_xpos#88 ) - (byte*) current_piece_gfx#82 ← phi( main::@4/(byte*) current_piece_gfx#76 ) - (byte) current_orientation#73 ← phi( main::@4/(byte) current_orientation#67 ) - (byte*) current_piece#67 ← phi( main::@4/(byte*) current_piece#61 ) - (byte) current_ypos#69 ← phi( main::@4/(byte) current_ypos#64 ) - (byte) current_movedown_counter#44 ← phi( main::@4/(byte) current_movedown_counter#39 ) - (byte) keyboard_modifiers#41 ← phi( main::@4/(byte) keyboard_modifiers#34 ) - (byte) keyboard_events_size#50 ← phi( main::@4/(byte) keyboard_events_size#40 ) - to:main::@4 -main::@7: scope:[main] from main::@4 main::@8 - (byte) current_piece_color#53 ← phi( main::@4/(byte) current_piece_color#62 main::@8/(byte) current_piece_color#63 ) - (byte) current_xpos#81 ← phi( main::@4/(byte) current_xpos#88 main::@8/(byte) current_xpos#89 ) - (byte*) current_piece_gfx#68 ← phi( main::@4/(byte*) current_piece_gfx#76 main::@8/(byte*) current_piece_gfx#77 ) - (byte) current_orientation#63 ← phi( main::@4/(byte) current_orientation#67 main::@8/(byte) current_orientation#68 ) - (byte*) current_piece#55 ← phi( main::@4/(byte*) current_piece#61 main::@8/(byte*) current_piece#62 ) - (byte) current_ypos#61 ← phi( main::@4/(byte) current_ypos#64 main::@8/(byte) current_ypos#65 ) - (byte) current_movedown_counter#35 ← phi( main::@4/(byte) current_movedown_counter#39 main::@8/(byte) current_movedown_counter#40 ) - (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::$7 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 254 - if((bool~) main::$7) goto main::@8 - to:main::@9 -main::@8: scope:[main] from main::@7 - (byte) current_piece_color#63 ← phi( main::@7/(byte) current_piece_color#53 ) - (byte) current_xpos#89 ← phi( main::@7/(byte) current_xpos#81 ) - (byte*) current_piece_gfx#77 ← phi( main::@7/(byte*) current_piece_gfx#68 ) - (byte) current_orientation#68 ← phi( main::@7/(byte) current_orientation#63 ) - (byte*) current_piece#62 ← phi( main::@7/(byte*) current_piece#55 ) - (byte) current_ypos#65 ← phi( main::@7/(byte) current_ypos#61 ) - (byte) current_movedown_counter#40 ← phi( main::@7/(byte) current_movedown_counter#35 ) - (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_piece_color#40 ← phi( main::@7/(byte) current_piece_color#53 ) - (byte) current_xpos#68 ← phi( main::@7/(byte) current_xpos#81 ) - (byte*) current_piece_gfx#55 ← phi( main::@7/(byte*) current_piece_gfx#68 ) - (byte) current_orientation#53 ← phi( main::@7/(byte) current_orientation#63 ) - (byte*) current_piece#44 ← phi( main::@7/(byte*) current_piece#55 ) - (byte) current_ypos#52 ← phi( main::@7/(byte) current_ypos#61 ) - (byte) current_movedown_counter#28 ← phi( main::@7/(byte) current_movedown_counter#35 ) - (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::@27 -main::@27: 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#68 ) - (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#52 ) - (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 ) - (byte) keyboard_events_size#6 ← (byte) keyboard_events_size#17 - (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::@28 -main::@28: scope:[main] from main::@27 - (byte) keyboard_modifiers#50 ← phi( main::@27/(byte) keyboard_modifiers#7 ) - (byte) current_piece_color#19 ← phi( main::@27/(byte) current_piece_color#30 ) - (byte) current_xpos#31 ← phi( main::@27/(byte) current_xpos#51 ) - (byte*) current_piece_gfx#24 ← phi( main::@27/(byte*) current_piece_gfx#40 ) - (byte) current_orientation#27 ← phi( main::@27/(byte) current_orientation#44 ) - (byte*) current_piece#19 ← phi( main::@27/(byte*) current_piece#33 ) - (byte) current_ypos#25 ← phi( main::@27/(byte) current_ypos#43 ) - (byte) current_movedown_counter#14 ← phi( main::@27/(byte) current_movedown_counter#23 ) - (byte) keyboard_events_size#18 ← phi( main::@27/(byte) keyboard_events_size#5 ) - (byte) keyboard_event_get::return#5 ← phi( main::@27/(byte) keyboard_event_get::return#3 ) - (byte~) main::$9 ← (byte) keyboard_event_get::return#5 - (byte) keyboard_events_size#7 ← (byte) keyboard_events_size#18 - (byte) main::key_event#0 ← (byte~) main::$9 - (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::@29 -main::@29: scope:[main] from main::@28 - (byte) keyboard_modifiers#47 ← phi( main::@28/(byte) keyboard_modifiers#50 ) - (byte) keyboard_events_size#59 ← phi( main::@28/(byte) keyboard_events_size#7 ) - (byte) main::key_event#1 ← phi( main::@28/(byte) main::key_event#0 ) - (byte) main::render#4 ← phi( main::@28/(byte) main::render#0 ) - (byte) current_piece_color#10 ← phi( main::@28/(byte) current_piece_color#5 ) - (byte) current_xpos#14 ← phi( main::@28/(byte) current_xpos#6 ) - (byte*) current_piece_gfx#13 ← phi( main::@28/(byte*) current_piece_gfx#6 ) - (byte) current_orientation#13 ← phi( main::@28/(byte) current_orientation#6 ) - (byte*) current_piece#10 ← phi( main::@28/(byte*) current_piece#5 ) - (byte) current_ypos#11 ← phi( main::@28/(byte) current_ypos#6 ) - (byte) current_movedown_counter#7 ← phi( main::@28/(byte) current_movedown_counter#5 ) - (byte) play_move_down::return#4 ← phi( main::@28/(byte) play_move_down::return#0 ) - (byte~) main::$10 ← (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_orientation#2 ← (byte) current_orientation#13 - (byte*) current_piece_gfx#2 ← (byte*) current_piece_gfx#13 - (byte) current_xpos#2 ← (byte) current_xpos#14 - (byte) current_piece_color#2 ← (byte) current_piece_color#10 - (byte) main::render#1 ← (byte) main::render#4 + (byte~) main::$10 - (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::@30 -main::@30: scope:[main] from main::@29 - (byte) current_movedown_counter#36 ← phi( main::@29/(byte) current_movedown_counter#1 ) - (byte) keyboard_modifiers#42 ← phi( main::@29/(byte) keyboard_modifiers#47 ) - (byte) keyboard_events_size#51 ← phi( main::@29/(byte) keyboard_events_size#59 ) - (byte) current_piece_color#54 ← phi( main::@29/(byte) current_piece_color#2 ) - (byte*) current_piece#56 ← phi( main::@29/(byte*) current_piece#2 ) - (byte) current_ypos#58 ← phi( main::@29/(byte) current_ypos#2 ) - (byte*) current_piece_gfx#25 ← phi( main::@29/(byte*) current_piece_gfx#2 ) - (byte) current_orientation#28 ← phi( main::@29/(byte) current_orientation#2 ) - (byte) main::key_event#2 ← phi( main::@29/(byte) main::key_event#1 ) - (byte) main::render#5 ← phi( main::@29/(byte) main::render#1 ) - (byte) current_xpos#15 ← phi( main::@29/(byte) current_xpos#8 ) - (byte) play_move_leftright::return#5 ← phi( main::@29/(byte) play_move_leftright::return#0 ) - (byte~) main::$11 ← (byte) play_move_leftright::return#5 - (byte) current_xpos#3 ← (byte) current_xpos#15 - (byte) main::render#2 ← (byte) main::render#5 + (byte~) main::$11 - (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::@31 -main::@31: scope:[main] from main::@30 - (byte) current_movedown_counter#29 ← phi( main::@30/(byte) current_movedown_counter#36 ) - (byte) keyboard_modifiers#36 ← phi( main::@30/(byte) keyboard_modifiers#42 ) - (byte) keyboard_events_size#42 ← phi( main::@30/(byte) keyboard_events_size#51 ) - (byte) current_piece_color#41 ← phi( main::@30/(byte) current_piece_color#54 ) - (byte) current_ypos#53 ← phi( main::@30/(byte) current_ypos#58 ) - (byte) current_xpos#69 ← phi( main::@30/(byte) current_xpos#3 ) - (byte*) current_piece#45 ← phi( main::@30/(byte*) current_piece#56 ) - (byte) main::render#6 ← phi( main::@30/(byte) main::render#2 ) - (byte*) current_piece_gfx#14 ← phi( main::@30/(byte*) current_piece_gfx#7 ) - (byte) current_orientation#14 ← phi( main::@30/(byte) current_orientation#7 ) - (byte) play_move_rotate::return#5 ← phi( main::@30/(byte) play_move_rotate::return#0 ) - (byte~) main::$12 ← (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::$12 - (bool~) main::$13 ← (byte) main::render#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) main::$14 ← ! (bool~) main::$13 - if((bool~) main::$14) goto main::@10 - to:main::@19 -main::@10: scope:[main] from main::@31 main::@33 - (byte) current_movedown_counter#21 ← phi( main::@31/(byte) current_movedown_counter#29 main::@33/(byte) current_movedown_counter#30 ) - (byte) keyboard_modifiers#29 ← phi( main::@31/(byte) keyboard_modifiers#36 main::@33/(byte) keyboard_modifiers#37 ) - (byte) keyboard_events_size#32 ← phi( main::@31/(byte) keyboard_events_size#42 main::@33/(byte) keyboard_events_size#43 ) - (byte) current_piece_color#28 ← phi( main::@31/(byte) current_piece_color#41 main::@33/(byte) current_piece_color#42 ) - (byte) current_ypos#41 ← phi( main::@31/(byte) current_ypos#53 main::@33/(byte) current_ypos#54 ) - (byte) current_xpos#49 ← phi( main::@31/(byte) current_xpos#69 main::@33/(byte) current_xpos#70 ) - (byte*) current_piece_gfx#38 ← phi( main::@31/(byte*) current_piece_gfx#3 main::@33/(byte*) current_piece_gfx#56 ) - (byte) current_orientation#42 ← phi( main::@31/(byte) current_orientation#3 main::@33/(byte) current_orientation#54 ) - (byte*) current_piece#31 ← phi( main::@31/(byte*) current_piece#45 main::@33/(byte*) current_piece#46 ) - *((byte*) BORDERCOL#0) ← -- *((byte*) BORDERCOL#0) - to:main::@1 -main::@19: scope:[main] from main::@31 - (byte) current_movedown_counter#41 ← phi( main::@31/(byte) current_movedown_counter#29 ) - (byte) keyboard_modifiers#48 ← phi( main::@31/(byte) keyboard_modifiers#36 ) - (byte) keyboard_events_size#60 ← phi( main::@31/(byte) keyboard_events_size#42 ) - (byte) current_piece_color#64 ← phi( main::@31/(byte) current_piece_color#41 ) - (byte*) current_piece_gfx#78 ← phi( main::@31/(byte*) current_piece_gfx#3 ) - (byte) current_orientation#69 ← phi( main::@31/(byte) current_orientation#3 ) - (byte*) current_piece#63 ← phi( main::@31/(byte*) current_piece#45 ) - (byte) current_xpos#82 ← phi( main::@31/(byte) current_xpos#69 ) - (byte) current_ypos#44 ← phi( main::@31/(byte) current_ypos#53 ) - call render_playfield - to:main::@32 -main::@32: scope:[main] from main::@19 - (byte) current_movedown_counter#37 ← phi( main::@19/(byte) current_movedown_counter#41 ) - (byte) keyboard_modifiers#43 ← phi( main::@19/(byte) keyboard_modifiers#48 ) - (byte) keyboard_events_size#52 ← phi( main::@19/(byte) keyboard_events_size#60 ) - (byte) current_piece_color#55 ← phi( main::@19/(byte) current_piece_color#64 ) - (byte*) current_piece_gfx#69 ← phi( main::@19/(byte*) current_piece_gfx#78 ) - (byte) current_orientation#64 ← phi( main::@19/(byte) current_orientation#69 ) - (byte*) current_piece#57 ← phi( main::@19/(byte*) current_piece#63 ) - (byte) current_xpos#78 ← phi( main::@19/(byte) current_xpos#82 ) - (byte) current_ypos#38 ← phi( main::@19/(byte) current_ypos#44 ) - call render_current - to:main::@33 -main::@33: scope:[main] from main::@32 - (byte) current_movedown_counter#30 ← phi( main::@32/(byte) current_movedown_counter#37 ) - (byte) keyboard_modifiers#37 ← phi( main::@32/(byte) keyboard_modifiers#43 ) - (byte) keyboard_events_size#43 ← phi( main::@32/(byte) keyboard_events_size#52 ) - (byte) current_piece_color#42 ← phi( main::@32/(byte) current_piece_color#55 ) - (byte) current_ypos#54 ← phi( main::@32/(byte) current_ypos#38 ) - (byte) current_xpos#70 ← phi( main::@32/(byte) current_xpos#78 ) - (byte*) current_piece_gfx#56 ← phi( main::@32/(byte*) current_piece_gfx#69 ) - (byte) current_orientation#54 ← phi( main::@32/(byte) current_orientation#64 ) - (byte*) current_piece#46 ← phi( main::@32/(byte*) current_piece#57 ) - 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_gfx#15 ← phi( main::@1/(byte*) current_piece_gfx#26 ) - (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_orientation#4 ← (byte) current_orientation#15 - (byte*) current_piece_gfx#4 ← (byte*) current_piece_gfx#15 - (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::@28 - (byte) current_piece_color#71 ← phi( main::@28/(byte) current_piece_color#19 ) - (byte*) current_piece_gfx#83 ← phi( main::@28/(byte*) current_piece_gfx#24 ) - (byte*) current_piece#68 ← phi( main::@28/(byte*) current_piece#19 ) - (byte) current_orientation#70 ← phi( main::@28/(byte) current_orientation#27 ) - (byte) current_xpos#90 ← phi( main::@28/(byte) current_xpos#31 ) - (byte) current_ypos#66 ← phi( main::@28/(byte) current_ypos#25 ) - (byte) play_move_down::key_event#1 ← phi( main::@28/(byte) play_move_down::key_event#0 ) - (byte) current_movedown_counter#9 ← phi( main::@28/(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 - (bool~) play_move_down::$1 ← ! (bool~) play_move_down::$0 - 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#65 ← phi( play_move_down/(byte) current_piece_color#71 play_move_down::@8/(byte) current_piece_color#72 ) - (byte*) current_piece_gfx#79 ← phi( play_move_down/(byte*) current_piece_gfx#83 play_move_down::@8/(byte*) current_piece_gfx#84 ) - (byte*) current_piece#64 ← phi( play_move_down/(byte*) current_piece#68 play_move_down::@8/(byte*) current_piece#69 ) - (byte) current_orientation#65 ← phi( play_move_down/(byte) current_orientation#70 play_move_down::@8/(byte) current_orientation#71 ) - (byte) current_xpos#83 ← phi( play_move_down/(byte) current_xpos#90 play_move_down::@8/(byte) current_xpos#91 ) - (byte) current_ypos#62 ← phi( play_move_down/(byte) current_ypos#66 play_move_down::@8/(byte) current_ypos#67 ) - (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 - call keyboard_event_pressed - (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#57 ← phi( play_move_down::@1/(byte) current_piece_color#65 ) - (byte*) current_piece_gfx#71 ← phi( play_move_down::@1/(byte*) current_piece_gfx#79 ) - (byte*) current_piece#59 ← phi( play_move_down::@1/(byte*) current_piece#64 ) - (byte) current_orientation#56 ← phi( play_move_down::@1/(byte) current_orientation#65 ) - (byte) current_xpos#72 ← phi( play_move_down::@1/(byte) current_xpos#83 ) - (byte) current_ypos#56 ← phi( play_move_down::@1/(byte) current_ypos#62 ) - (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 ) - (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 - (bool~) play_move_down::$3 ← (byte~) play_move_down::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) play_move_down::$4 ← ! (bool~) play_move_down::$3 - 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#72 ← phi( play_move_down/(byte) current_piece_color#71 ) - (byte*) current_piece_gfx#84 ← phi( play_move_down/(byte*) current_piece_gfx#83 ) - (byte*) current_piece#69 ← phi( play_move_down/(byte*) current_piece#68 ) - (byte) current_orientation#71 ← phi( play_move_down/(byte) current_orientation#70 ) - (byte) current_xpos#91 ← phi( play_move_down/(byte) current_xpos#90 ) - (byte) current_ypos#67 ← phi( play_move_down/(byte) current_ypos#66 ) - (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#44 ← phi( play_move_down::@10/(byte) current_piece_color#56 play_move_down::@17/(byte) current_piece_color#57 play_move_down::@3/(byte) current_piece_color#58 ) - (byte*) current_piece_gfx#58 ← phi( play_move_down::@10/(byte*) current_piece_gfx#70 play_move_down::@17/(byte*) current_piece_gfx#71 play_move_down::@3/(byte*) current_piece_gfx#72 ) - (byte*) current_piece#48 ← phi( play_move_down::@10/(byte*) current_piece#58 play_move_down::@17/(byte*) current_piece#59 play_move_down::@3/(byte*) current_piece#60 ) - (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#71 play_move_down::@17/(byte) current_xpos#72 play_move_down::@3/(byte) current_xpos#73 ) - (byte) current_ypos#46 ← phi( play_move_down::@10/(byte) current_ypos#55 play_move_down::@17/(byte) current_ypos#56 play_move_down::@3/(byte) current_ypos#57 ) - (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_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#66 ← phi( play_move_down::@17/(byte) current_piece_color#57 ) - (byte*) current_piece_gfx#80 ← phi( play_move_down::@17/(byte*) current_piece_gfx#71 ) - (byte*) current_piece#65 ← phi( play_move_down::@17/(byte*) current_piece#59 ) - (byte) current_orientation#66 ← phi( play_move_down::@17/(byte) current_orientation#56 ) - (byte) current_xpos#84 ← phi( play_move_down::@17/(byte) current_xpos#72 ) - (byte) current_ypos#63 ← phi( play_move_down::@17/(byte) current_ypos#56 ) - (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_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#58 ← phi( play_move_down::@9/(byte) current_piece_color#66 ) - (byte*) current_piece_gfx#72 ← phi( play_move_down::@9/(byte*) current_piece_gfx#80 ) - (byte*) current_piece#60 ← phi( play_move_down::@9/(byte*) current_piece#65 ) - (byte) current_orientation#57 ← phi( play_move_down::@9/(byte) current_orientation#66 ) - (byte) current_xpos#73 ← phi( play_move_down::@9/(byte) current_xpos#84 ) - (byte) current_ypos#57 ← phi( play_move_down::@9/(byte) current_ypos#63 ) - (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#56 ← phi( play_move_down::@9/(byte) current_piece_color#66 ) - (byte*) current_piece_gfx#70 ← phi( play_move_down::@9/(byte*) current_piece_gfx#80 ) - (byte*) current_piece#58 ← phi( play_move_down::@9/(byte*) current_piece#65 ) - (byte) current_orientation#55 ← phi( play_move_down::@9/(byte) current_orientation#66 ) - (byte) current_xpos#71 ← phi( play_move_down::@9/(byte) current_xpos#84 ) - (byte) current_ypos#55 ← phi( play_move_down::@9/(byte) current_ypos#63 ) - (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#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_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#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_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_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_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#59 ← phi( play_move_down::@4/(byte) current_piece_color#31 ) - (byte*) current_piece_gfx#73 ← 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_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_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_piece_color#45 ← phi( play_move_down::@12/(byte) current_piece_color#59 ) - (byte) current_xpos#74 ← phi( play_move_down::@12/(byte) current_xpos#17 ) - (byte*) current_piece_gfx#59 ← phi( play_move_down::@12/(byte*) current_piece_gfx#73 ) - (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 - (bool~) play_move_down::$13 ← (byte~) play_move_down::$12 == (byte) COLLISION_NONE#0 - 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_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#74 ) - (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_piece_color#46 ← phi( play_move_down::@18/(byte) current_piece_color#45 ) - (byte*) current_piece_gfx#60 ← phi( play_move_down::@18/(byte*) current_piece_gfx#59 ) - (byte) current_orientation#59 ← phi( play_move_down::@18/(byte) current_orientation#58 ) - (byte*) current_piece#50 ← phi( play_move_down::@18/(byte*) current_piece#49 ) - (byte) current_xpos#61 ← phi( play_move_down::@18/(byte) current_xpos#74 ) - (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_piece_color#32 ← phi( play_move_down::@13/(byte) current_piece_color#46 ) - (byte) current_ypos#47 ← phi( play_move_down::@13/(byte) current_ypos#36 ) - (byte) current_xpos#54 ← phi( play_move_down::@13/(byte) current_xpos#61 ) - (byte*) current_piece_gfx#42 ← phi( play_move_down::@13/(byte*) current_piece_gfx#60 ) - (byte) current_orientation#47 ← phi( play_move_down::@13/(byte) current_orientation#59 ) - (byte*) current_piece#35 ← phi( play_move_down::@13/(byte*) current_piece#50 ) - call remove_lines - to:play_move_down::@20 -play_move_down::@20: scope:[play_move_down] from play_move_down::@19 - (byte) current_piece_color#21 ← phi( play_move_down::@19/(byte) current_piece_color#32 ) - (byte) current_ypos#29 ← phi( play_move_down::@19/(byte) current_ypos#47 ) - (byte) current_xpos#34 ← phi( play_move_down::@19/(byte) current_xpos#54 ) - (byte*) current_piece_gfx#27 ← phi( play_move_down::@19/(byte*) current_piece_gfx#42 ) - (byte) current_orientation#31 ← phi( play_move_down::@19/(byte) current_orientation#47 ) - (byte*) current_piece#21 ← phi( play_move_down::@19/(byte*) current_piece#35 ) - call spawn_current - to:play_move_down::@21 -play_move_down::@21: scope:[play_move_down] from play_move_down::@20 - (byte) current_piece_color#12 ← phi( play_move_down::@20/(byte) current_piece_color#7 ) - (byte) current_ypos#15 ← phi( play_move_down::@20/(byte) current_ypos#8 ) - (byte) current_xpos#18 ← phi( play_move_down::@20/(byte) current_xpos#11 ) - (byte*) current_piece_gfx#16 ← phi( play_move_down::@20/(byte*) current_piece_gfx#10 ) - (byte) current_orientation#17 ← phi( play_move_down::@20/(byte) current_orientation#10 ) - (byte*) current_piece#12 ← phi( play_move_down::@20/(byte*) current_piece#7 ) - (byte*) current_piece#4 ← (byte*) current_piece#12 - (byte) current_orientation#5 ← (byte) current_orientation#17 - (byte*) current_piece_gfx#5 ← (byte*) current_piece_gfx#16 - (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::@21 play_move_down::@6 - (byte) current_piece_color#23 ← phi( play_move_down::@21/(byte) current_piece_color#4 play_move_down::@6/(byte) current_piece_color#33 ) - (byte) current_xpos#36 ← phi( play_move_down::@21/(byte) current_xpos#5 play_move_down::@6/(byte) current_xpos#55 ) - (byte*) current_piece_gfx#29 ← phi( play_move_down::@21/(byte*) current_piece_gfx#5 play_move_down::@6/(byte*) current_piece_gfx#43 ) - (byte) current_orientation#33 ← phi( play_move_down::@21/(byte) current_orientation#5 play_move_down::@6/(byte) current_orientation#48 ) - (byte*) current_piece#23 ← phi( play_move_down::@21/(byte*) current_piece#4 play_move_down::@6/(byte*) current_piece#36 ) - (byte) current_ypos#31 ← phi( play_move_down::@21/(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_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_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 ) - (byte) play_move_down::return#5 ← phi( play_move_down::@5/(byte) play_move_down::return#1 play_move_down::@7/(byte) play_move_down::return#2 ) - (byte) play_move_down::return#3 ← (byte) play_move_down::return#5 - (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_orientation#6 ← (byte) current_orientation#18 - (byte*) current_piece_gfx#6 ← (byte*) current_piece_gfx#17 - (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::@29 - (byte*) current_piece#37 ← phi( main::@29/(byte*) current_piece#2 ) - (byte) current_orientation#34 ← phi( main::@29/(byte) current_orientation#2 ) - (byte) current_ypos#32 ← phi( main::@29/(byte) current_ypos#2 ) - (byte) current_xpos#37 ← phi( main::@29/(byte) current_xpos#2 ) - (byte) play_move_leftright::key_event#1 ← phi( main::@29/(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_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_orientation#19 - call collision - (byte) collision::return#1 ← (byte) collision::return#5 - to:play_move_leftright::@14 -play_move_leftright::@14: scope:[play_move_leftright] from play_move_leftright::@1 - (byte) current_xpos#41 ← phi( play_move_leftright::@1/(byte) current_xpos#20 ) - (byte) collision::return#11 ← phi( play_move_leftright::@1/(byte) collision::return#1 ) - (byte~) play_move_leftright::$8 ← (byte) collision::return#11 - (bool~) play_move_leftright::$9 ← (byte~) play_move_leftright::$8 == (byte) COLLISION_NONE#0 - (bool~) play_move_leftright::$10 ← ! (bool~) play_move_leftright::$9 - if((bool~) play_move_leftright::$10) goto play_move_leftright::@5 - 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_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 ) - (bool~) play_move_leftright::$1 ← (byte) play_move_leftright::key_event#2 == (byte) KEY_DOT#0 - (bool~) play_move_leftright::$2 ← ! (bool~) play_move_leftright::$1 - 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#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_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_orientation#20 - call collision - (byte) collision::return#2 ← (byte) collision::return#5 - to:play_move_leftright::@15 -play_move_leftright::@15: scope:[play_move_leftright] from play_move_leftright::@7 - (byte) current_xpos#39 ← phi( play_move_leftright::@7/(byte) current_xpos#21 ) - (byte) collision::return#12 ← phi( play_move_leftright::@7/(byte) collision::return#2 ) - (byte~) play_move_leftright::$4 ← (byte) collision::return#12 - (bool~) play_move_leftright::$5 ← (byte~) play_move_leftright::$4 == (byte) COLLISION_NONE#0 - (bool~) play_move_leftright::$6 ← ! (bool~) play_move_leftright::$5 - 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#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 ) - (byte) current_xpos#7 ← ++ (byte) current_xpos#22 - (byte) play_move_leftright::return#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:play_move_leftright::@return -play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@11 play_move_leftright::@4 play_move_leftright::@8 - (byte) current_xpos#23 ← phi( play_move_leftright::@11/(byte) current_xpos#9 play_move_leftright::@4/(byte) current_xpos#40 play_move_leftright::@8/(byte) current_xpos#7 ) - (byte) play_move_leftright::return#6 ← phi( play_move_leftright::@11/(byte) play_move_leftright::return#4 play_move_leftright::@4/(byte) play_move_leftright::return#3 play_move_leftright::@8/(byte) play_move_leftright::return#1 ) - (byte) play_move_leftright::return#2 ← (byte) play_move_leftright::return#6 - (byte) current_xpos#8 ← (byte) current_xpos#23 - 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#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#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::@30 - (byte*) current_piece_gfx#61 ← phi( main::@30/(byte*) current_piece_gfx#25 ) - (byte*) current_piece#51 ← phi( main::@30/(byte*) current_piece#56 ) - (byte) current_ypos#48 ← phi( main::@30/(byte) current_ypos#58 ) - (byte) current_xpos#59 ← phi( main::@30/(byte) current_xpos#3 ) - (byte) current_orientation#36 ← phi( main::@30/(byte) current_orientation#28 ) - (byte) play_move_rotate::key_event#1 ← phi( main::@30/(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#74 ← phi( play_move_rotate/(byte*) current_piece_gfx#61 ) - (byte*) current_piece#39 ← phi( play_move_rotate/(byte*) current_piece#51 ) - (byte) current_ypos#34 ← phi( play_move_rotate/(byte) current_ypos#48 ) - (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#52 ← phi( play_move_rotate/(byte*) current_piece#51 ) - (byte*) current_piece_gfx#44 ← phi( play_move_rotate/(byte*) current_piece_gfx#61 ) - (byte) current_ypos#49 ← phi( play_move_rotate/(byte) current_ypos#48 ) - (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#75 ← phi( play_move_rotate::@6/(byte*) current_piece_gfx#44 ) - (byte*) current_piece#40 ← phi( play_move_rotate::@6/(byte*) current_piece#52 ) - (byte) current_ypos#35 ← phi( play_move_rotate::@6/(byte) current_ypos#49 ) - (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_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_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_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#62 ← phi( play_move_rotate::@1/(byte*) current_piece_gfx#74 play_move_rotate::@2/(byte*) current_piece_gfx#75 ) - (byte) current_orientation#60 ← 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 ) - (byte) current_xpos#25 ← phi( play_move_rotate::@1/(byte) current_xpos#42 play_move_rotate::@2/(byte) current_xpos#43 ) - (byte) collision::xpos#3 ← (byte) current_xpos#25 - (byte) collision::ypos#3 ← (byte) current_ypos#19 - (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 - call collision - (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#62 ) - (byte) current_orientation#49 ← phi( play_move_rotate::@4/(byte) current_orientation#60 ) - (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 - (bool~) play_move_rotate::$7 ← (byte~) play_move_rotate::$6 == (byte) COLLISION_NONE#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_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_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 -@18: scope:[] from @14 - (byte) current_movedown_counter#33 ← phi( @14/(byte) current_movedown_counter#0 ) - (byte) keyboard_modifiers#38 ← phi( @14/(byte) keyboard_modifiers#44 ) - (byte) keyboard_events_size#44 ← phi( @14/(byte) keyboard_events_size#53 ) - (byte) current_piece_color#49 ← phi( @14/(byte) current_piece_color#0 ) - (byte) current_ypos#59 ← phi( @14/(byte) current_ypos#0 ) - (byte) current_xpos#77 ← phi( @14/(byte) current_xpos#0 ) - (byte*) current_piece_gfx#63 ← phi( @14/(byte*) current_piece_gfx#0 ) - (byte) current_orientation#61 ← phi( @14/(byte) current_orientation#0 ) - (byte*) current_piece#53 ← phi( @14/(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:@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 ) - (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 ) - (byte*) current_piece#15 ← phi( play_move_down::@12/(byte*) current_piece#25 play_move_leftright::@1/(byte*) current_piece#26 play_move_leftright::@7/(byte*) current_piece#27 play_move_rotate::@4/(byte*) current_piece#28 ) - (byte*~) collision::$0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 - (byte*) collision::piece_gfx#0 ← (byte*~) collision::$0 - (byte) collision::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte~) collision::$1 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) collision::ypos2#0 ← (byte~) collision::$1 - (byte) collision::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:collision::@1 -collision::@1: scope:[collision] from collision collision::@17 - (byte) collision::l#6 ← phi( collision/(byte) collision::l#0 collision::@17/(byte) collision::l#1 ) - (byte) collision::i#3 ← phi( collision/(byte) collision::i#0 collision::@17/(byte) collision::i#5 ) - (byte*) collision::piece_gfx#2 ← phi( collision/(byte*) collision::piece_gfx#0 collision::@17/(byte*) collision::piece_gfx#4 ) - (byte) collision::xpos#4 ← phi( collision/(byte) collision::xpos#5 collision::@17/(byte) collision::xpos#6 ) - (byte) collision::ypos2#2 ← phi( collision/(byte) collision::ypos2#0 collision::@17/(byte) collision::ypos2#1 ) - (byte*) collision::playfield_line#0 ← *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) - (byte) collision::col#0 ← (byte) collision::xpos#4 - (byte) collision::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:collision::@2 -collision::@2: scope:[collision] from collision::@1 collision::@3 - (byte*) collision::playfield_line#5 ← phi( collision::@1/(byte*) collision::playfield_line#0 collision::@3/(byte*) collision::playfield_line#6 ) - (byte) collision::xpos#8 ← phi( collision::@1/(byte) collision::xpos#4 collision::@3/(byte) collision::xpos#7 ) - (byte) collision::l#4 ← phi( collision::@1/(byte) collision::l#6 collision::@3/(byte) collision::l#3 ) - (byte) collision::ypos2#5 ← phi( collision::@1/(byte) collision::ypos2#2 collision::@3/(byte) collision::ypos2#6 ) - (byte) collision::c#3 ← phi( collision::@1/(byte) collision::c#0 collision::@3/(byte) collision::c#1 ) - (byte) collision::col#6 ← phi( collision::@1/(byte) collision::col#0 collision::@3/(byte) collision::col#1 ) - (byte) collision::i#2 ← phi( collision::@1/(byte) collision::i#3 collision::@3/(byte) collision::i#4 ) - (byte*) collision::piece_gfx#1 ← phi( collision::@1/(byte*) collision::piece_gfx#2 collision::@3/(byte*) collision::piece_gfx#3 ) - (bool~) collision::$2 ← *((byte*) collision::piece_gfx#1 + (byte) collision::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) collision::$3 ← ! (bool~) collision::$2 - (byte) collision::i#1 ← ++ (byte) collision::i#2 - if((bool~) collision::$3) goto collision::@3 - to:collision::@8 -collision::@3: scope:[collision] from collision::@2 collision::@7 - (byte*) collision::playfield_line#6 ← phi( collision::@2/(byte*) collision::playfield_line#5 collision::@7/(byte*) collision::playfield_line#7 ) - (byte) collision::xpos#7 ← phi( collision::@2/(byte) collision::xpos#8 collision::@7/(byte) collision::xpos#9 ) - (byte) collision::l#3 ← phi( collision::@2/(byte) collision::l#4 collision::@7/(byte) collision::l#5 ) - (byte) collision::ypos2#6 ← phi( collision::@2/(byte) collision::ypos2#5 collision::@7/(byte) collision::ypos2#7 ) - (byte) collision::i#4 ← phi( collision::@2/(byte) collision::i#1 collision::@7/(byte) collision::i#6 ) - (byte*) collision::piece_gfx#3 ← phi( collision::@2/(byte*) collision::piece_gfx#1 collision::@7/(byte*) collision::piece_gfx#5 ) - (byte) collision::c#2 ← phi( collision::@2/(byte) collision::c#3 collision::@7/(byte) collision::c#4 ) - (byte) collision::col#2 ← phi( collision::@2/(byte) collision::col#6 collision::@7/(byte) collision::col#7 ) - (byte) collision::col#1 ← ++ (byte) collision::col#2 - (byte) collision::c#1 ← (byte) collision::c#2 + rangenext(0,3) - (bool~) collision::$14 ← (byte) collision::c#1 != rangelast(0,3) - if((bool~) collision::$14) goto collision::@2 - to:collision::@17 -collision::@8: scope:[collision] from collision::@2 - (byte) collision::xpos#13 ← phi( collision::@2/(byte) collision::xpos#8 ) - (byte) collision::l#10 ← phi( collision::@2/(byte) collision::l#4 ) - (byte) collision::i#10 ← phi( collision::@2/(byte) collision::i#1 ) - (byte*) collision::piece_gfx#9 ← phi( collision::@2/(byte*) collision::piece_gfx#1 ) - (byte) collision::c#8 ← phi( collision::@2/(byte) collision::c#3 ) - (byte*) collision::playfield_line#4 ← phi( collision::@2/(byte*) collision::playfield_line#5 ) - (byte) collision::col#8 ← phi( collision::@2/(byte) collision::col#6 ) - (byte) collision::ypos2#3 ← phi( collision::@2/(byte) collision::ypos2#5 ) - (byte/signed word/word/dword/signed dword~) collision::$4 ← (byte/signed byte/word/signed word/dword/signed dword) 2 * (byte) PLAYFIELD_LINES#0 - (bool~) collision::$5 ← (byte) collision::ypos2#3 >= (byte/signed word/word/dword/signed dword~) collision::$4 - (bool~) collision::$6 ← ! (bool~) collision::$5 - if((bool~) collision::$6) goto collision::@4 - to:collision::@9 -collision::@4: scope:[collision] from collision::@8 - (byte) collision::xpos#12 ← phi( collision::@8/(byte) collision::xpos#13 ) - (byte) collision::l#9 ← phi( collision::@8/(byte) collision::l#10 ) - (byte) collision::ypos2#10 ← phi( collision::@8/(byte) collision::ypos2#3 ) - (byte) collision::i#9 ← phi( collision::@8/(byte) collision::i#10 ) - (byte*) collision::piece_gfx#8 ← phi( collision::@8/(byte*) collision::piece_gfx#9 ) - (byte) collision::c#7 ← phi( collision::@8/(byte) collision::c#8 ) - (byte*) collision::playfield_line#3 ← phi( collision::@8/(byte*) collision::playfield_line#4 ) - (byte) collision::col#3 ← phi( collision::@8/(byte) collision::col#8 ) - (byte~) collision::$7 ← (byte) collision::col#3 & (byte/word/signed word/dword/signed dword) 128 - (bool~) collision::$8 ← (byte~) collision::$7 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) collision::$9 ← ! (bool~) collision::$8 - if((bool~) collision::$9) goto collision::@5 - to:collision::@11 -collision::@9: scope:[collision] from collision::@8 - (byte) collision::return#4 ← (byte) COLLISION_BOTTOM#0 - to:collision::@return -collision::@return: scope:[collision] from collision::@11 collision::@13 collision::@15 collision::@18 collision::@9 - (byte) collision::return#14 ← phi( collision::@11/(byte) collision::return#6 collision::@13/(byte) collision::return#7 collision::@15/(byte) collision::return#8 collision::@18/(byte) collision::return#9 collision::@9/(byte) collision::return#4 ) - (byte) collision::return#5 ← (byte) collision::return#14 - return - to:@return -collision::@5: scope:[collision] from collision::@4 - (byte) collision::xpos#11 ← phi( collision::@4/(byte) collision::xpos#12 ) - (byte) collision::l#8 ← phi( collision::@4/(byte) collision::l#9 ) - (byte) collision::ypos2#9 ← phi( collision::@4/(byte) collision::ypos2#10 ) - (byte) collision::i#8 ← phi( collision::@4/(byte) collision::i#9 ) - (byte*) collision::piece_gfx#7 ← phi( collision::@4/(byte*) collision::piece_gfx#8 ) - (byte) collision::c#6 ← phi( collision::@4/(byte) collision::c#7 ) - (byte*) collision::playfield_line#2 ← phi( collision::@4/(byte*) collision::playfield_line#3 ) - (byte) collision::col#4 ← phi( collision::@4/(byte) collision::col#3 ) - (bool~) collision::$10 ← (byte) collision::col#4 >= (byte) PLAYFIELD_COLS#0 - (bool~) collision::$11 ← ! (bool~) collision::$10 - if((bool~) collision::$11) goto collision::@6 - to:collision::@13 -collision::@11: scope:[collision] from collision::@4 - (byte) collision::return#6 ← (byte) COLLISION_LEFT#0 - to:collision::@return -collision::@6: scope:[collision] from collision::@5 - (byte) collision::xpos#10 ← phi( collision::@5/(byte) collision::xpos#11 ) - (byte) collision::l#7 ← phi( collision::@5/(byte) collision::l#8 ) - (byte) collision::ypos2#8 ← phi( collision::@5/(byte) collision::ypos2#9 ) - (byte) collision::i#7 ← phi( collision::@5/(byte) collision::i#8 ) - (byte*) collision::piece_gfx#6 ← phi( collision::@5/(byte*) collision::piece_gfx#7 ) - (byte) collision::c#5 ← phi( collision::@5/(byte) collision::c#6 ) - (byte) collision::col#5 ← phi( collision::@5/(byte) collision::col#4 ) - (byte*) collision::playfield_line#1 ← phi( collision::@5/(byte*) collision::playfield_line#2 ) - (bool~) collision::$12 ← *((byte*) collision::playfield_line#1 + (byte) collision::col#5) != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) collision::$13 ← ! (bool~) collision::$12 - if((bool~) collision::$13) goto collision::@7 - to:collision::@15 -collision::@13: scope:[collision] from collision::@5 - (byte) collision::return#7 ← (byte) COLLISION_RIGHT#0 - to:collision::@return -collision::@7: scope:[collision] from collision::@6 - (byte*) collision::playfield_line#7 ← phi( collision::@6/(byte*) collision::playfield_line#1 ) - (byte) collision::xpos#9 ← phi( collision::@6/(byte) collision::xpos#10 ) - (byte) collision::l#5 ← phi( collision::@6/(byte) collision::l#7 ) - (byte) collision::ypos2#7 ← phi( collision::@6/(byte) collision::ypos2#8 ) - (byte) collision::i#6 ← phi( collision::@6/(byte) collision::i#7 ) - (byte*) collision::piece_gfx#5 ← phi( collision::@6/(byte*) collision::piece_gfx#6 ) - (byte) collision::c#4 ← phi( collision::@6/(byte) collision::c#5 ) - (byte) collision::col#7 ← phi( collision::@6/(byte) collision::col#5 ) - to:collision::@3 -collision::@15: scope:[collision] from collision::@6 - (byte) collision::return#8 ← (byte) COLLISION_PLAYFIELD#0 - to:collision::@return -collision::@17: scope:[collision] from collision::@3 - (byte) collision::i#5 ← phi( collision::@3/(byte) collision::i#4 ) - (byte*) collision::piece_gfx#4 ← phi( collision::@3/(byte*) collision::piece_gfx#3 ) - (byte) collision::xpos#6 ← phi( collision::@3/(byte) collision::xpos#7 ) - (byte) collision::l#2 ← phi( collision::@3/(byte) collision::l#3 ) - (byte) collision::ypos2#4 ← phi( collision::@3/(byte) collision::ypos2#6 ) - (byte) collision::ypos2#1 ← (byte) collision::ypos2#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte) collision::l#1 ← (byte) collision::l#2 + rangenext(0,3) - (bool~) collision::$15 ← (byte) collision::l#1 != rangelast(0,3) - if((bool~) collision::$15) goto collision::@1 - to:collision::@18 -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#47 ← phi( play_move_down::@13/(byte) current_piece_color#46 ) - (byte*) current_piece_gfx#46 ← phi( play_move_down::@13/(byte*) current_piece_gfx#60 ) - (byte) current_xpos#44 ← phi( play_move_down::@13/(byte) current_xpos#61 ) - (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) 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#47 lock_current::@5/(byte) current_piece_color#48 ) - (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) 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_xpos#75 ← phi( lock_current::@1/(byte) current_xpos#26 lock_current::@3/(byte) current_xpos#62 ) - (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) 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 ) - (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 - 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_xpos#62 ← phi( lock_current::@2/(byte) current_xpos#75 lock_current::@4/(byte) current_xpos#76 ) - (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) 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#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::$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_xpos#76 ← phi( lock_current::@2/(byte) current_xpos#75 ) - (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::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#48 ← 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_xpos#45 ← phi( lock_current::@3/(byte) current_xpos#62 ) - (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::@23 play_move_down::@20 - (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~) 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::@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_orientation#10 ← (byte) current_orientation#24 - (byte*) current_piece_gfx#10 ← (byte*) current_piece_gfx#20 - (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 -remove_lines: scope:[remove_lines] from play_move_down::@19 - (byte~) remove_lines::$0 ← (byte) PLAYFIELD_LINES#0 * (byte) PLAYFIELD_COLS#0 - (byte/signed word/word/dword/signed dword~) remove_lines::$1 ← (byte~) remove_lines::$0 - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) remove_lines::r#0 ← (byte/signed word/word/dword/signed dword~) remove_lines::$1 - (byte~) remove_lines::$2 ← (byte) PLAYFIELD_LINES#0 * (byte) PLAYFIELD_COLS#0 - (byte/signed word/word/dword/signed dword~) remove_lines::$3 ← (byte~) remove_lines::$2 - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) remove_lines::w#0 ← (byte/signed word/word/dword/signed dword~) remove_lines::$3 - (byte/signed word/word/dword/signed dword~) remove_lines::$4 ← (byte) PLAYFIELD_LINES#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) remove_lines::y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:remove_lines::@1 -remove_lines::@1: scope:[remove_lines] from remove_lines remove_lines::@4 - (byte) remove_lines::y#8 ← phi( remove_lines/(byte) remove_lines::y#0 remove_lines::@4/(byte) remove_lines::y#1 ) - (byte) remove_lines::w#12 ← phi( remove_lines/(byte) remove_lines::w#0 remove_lines::@4/(byte) remove_lines::w#11 ) - (byte) remove_lines::r#3 ← phi( remove_lines/(byte) remove_lines::r#0 remove_lines::@4/(byte) remove_lines::r#5 ) - (byte) remove_lines::full#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte/signed word/word/dword/signed dword~) remove_lines::$5 ← (byte) PLAYFIELD_COLS#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) remove_lines::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:remove_lines::@2 -remove_lines::@2: scope:[remove_lines] from remove_lines::@1 remove_lines::@3 - (byte) remove_lines::y#6 ← phi( remove_lines::@1/(byte) remove_lines::y#8 remove_lines::@3/(byte) remove_lines::y#5 ) - (byte) remove_lines::full#4 ← phi( remove_lines::@1/(byte) remove_lines::full#0 remove_lines::@3/(byte) remove_lines::full#3 ) - (byte) remove_lines::x#3 ← phi( remove_lines::@1/(byte) remove_lines::x#0 remove_lines::@3/(byte) remove_lines::x#1 ) - (byte) remove_lines::w#8 ← phi( remove_lines::@1/(byte) remove_lines::w#12 remove_lines::@3/(byte) remove_lines::w#1 ) - (byte) remove_lines::r#2 ← phi( remove_lines::@1/(byte) remove_lines::r#3 remove_lines::@3/(byte) remove_lines::r#4 ) - (byte) remove_lines::c#0 ← *((byte[$22]) playfield#0 + (byte) remove_lines::r#2) - (byte) remove_lines::r#1 ← -- (byte) remove_lines::r#2 - (bool~) remove_lines::$6 ← (byte) remove_lines::c#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) remove_lines::$7 ← ! (bool~) remove_lines::$6 - if((bool~) remove_lines::$7) goto remove_lines::@3 - to:remove_lines::@8 -remove_lines::@3: scope:[remove_lines] from remove_lines::@2 remove_lines::@8 - (byte) remove_lines::y#5 ← phi( remove_lines::@2/(byte) remove_lines::y#6 remove_lines::@8/(byte) remove_lines::y#7 ) - (byte) remove_lines::full#3 ← phi( remove_lines::@2/(byte) remove_lines::full#4 remove_lines::@8/(byte) remove_lines::full#1 ) - (byte) remove_lines::r#4 ← phi( remove_lines::@2/(byte) remove_lines::r#1 remove_lines::@8/(byte) remove_lines::r#6 ) - (byte) remove_lines::x#2 ← phi( remove_lines::@2/(byte) remove_lines::x#3 remove_lines::@8/(byte) remove_lines::x#4 ) - (byte) remove_lines::w#4 ← phi( remove_lines::@2/(byte) remove_lines::w#8 remove_lines::@8/(byte) remove_lines::w#9 ) - (byte) remove_lines::c#1 ← phi( remove_lines::@2/(byte) remove_lines::c#0 remove_lines::@8/(byte) remove_lines::c#2 ) - *((byte[$22]) playfield#0 + (byte) remove_lines::w#4) ← (byte) remove_lines::c#1 - (byte) remove_lines::w#1 ← -- (byte) remove_lines::w#4 - (byte) remove_lines::x#1 ← (byte) remove_lines::x#2 + rangenext(0,remove_lines::$5) - (bool~) remove_lines::$8 ← (byte) remove_lines::x#1 != rangelast(0,remove_lines::$5) - if((bool~) remove_lines::$8) goto remove_lines::@2 - to:remove_lines::@9 -remove_lines::@8: scope:[remove_lines] from remove_lines::@2 - (byte) remove_lines::y#7 ← phi( remove_lines::@2/(byte) remove_lines::y#6 ) - (byte) remove_lines::r#6 ← phi( remove_lines::@2/(byte) remove_lines::r#1 ) - (byte) remove_lines::x#4 ← phi( remove_lines::@2/(byte) remove_lines::x#3 ) - (byte) remove_lines::w#9 ← phi( remove_lines::@2/(byte) remove_lines::w#8 ) - (byte) remove_lines::c#2 ← phi( remove_lines::@2/(byte) remove_lines::c#0 ) - (byte) remove_lines::full#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:remove_lines::@3 -remove_lines::@9: scope:[remove_lines] from remove_lines::@3 - (byte) remove_lines::r#8 ← phi( remove_lines::@3/(byte) remove_lines::r#4 ) - (byte) remove_lines::w#10 ← phi( remove_lines::@3/(byte) remove_lines::w#1 ) - (byte) remove_lines::y#4 ← phi( remove_lines::@3/(byte) remove_lines::y#5 ) - (byte) remove_lines::full#2 ← phi( remove_lines::@3/(byte) remove_lines::full#3 ) - (bool~) remove_lines::$9 ← (byte) remove_lines::full#2 == (byte/signed byte/word/signed word/dword/signed dword) 1 - (bool~) remove_lines::$10 ← ! (bool~) remove_lines::$9 - if((bool~) remove_lines::$10) goto remove_lines::@4 - to:remove_lines::@10 -remove_lines::@4: scope:[remove_lines] from remove_lines::@10 remove_lines::@9 - (byte) remove_lines::r#5 ← phi( remove_lines::@10/(byte) remove_lines::r#7 remove_lines::@9/(byte) remove_lines::r#8 ) - (byte) remove_lines::w#11 ← phi( remove_lines::@10/(byte) remove_lines::w#2 remove_lines::@9/(byte) remove_lines::w#10 ) - (byte) remove_lines::y#2 ← phi( remove_lines::@10/(byte) remove_lines::y#3 remove_lines::@9/(byte) remove_lines::y#4 ) - (byte) remove_lines::y#1 ← (byte) remove_lines::y#2 + rangenext(0,remove_lines::$4) - (bool~) remove_lines::$12 ← (byte) remove_lines::y#1 != rangelast(0,remove_lines::$4) - if((bool~) remove_lines::$12) goto remove_lines::@1 - to:remove_lines::@5 -remove_lines::@10: scope:[remove_lines] from remove_lines::@9 - (byte) remove_lines::r#7 ← phi( remove_lines::@9/(byte) remove_lines::r#8 ) - (byte) remove_lines::y#3 ← phi( remove_lines::@9/(byte) remove_lines::y#4 ) - (byte) remove_lines::w#5 ← phi( remove_lines::@9/(byte) remove_lines::w#10 ) - (byte~) remove_lines::$11 ← (byte) remove_lines::w#5 + (byte) PLAYFIELD_COLS#0 - (byte) remove_lines::w#2 ← (byte~) remove_lines::$11 - to:remove_lines::@4 -remove_lines::@5: scope:[remove_lines] from remove_lines::@4 remove_lines::@6 - (byte) remove_lines::w#6 ← phi( remove_lines::@4/(byte) remove_lines::w#11 remove_lines::@6/(byte) remove_lines::w#3 ) - (bool~) remove_lines::$13 ← (byte) remove_lines::w#6 != (byte/word/signed word/dword/signed dword) 255 - if((bool~) remove_lines::$13) goto remove_lines::@6 - to:remove_lines::@return -remove_lines::@6: scope:[remove_lines] from remove_lines::@5 - (byte) remove_lines::w#7 ← phi( remove_lines::@5/(byte) remove_lines::w#6 ) - *((byte[$22]) playfield#0 + (byte) remove_lines::w#7) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) remove_lines::w#3 ← -- (byte) remove_lines::w#7 - to:remove_lines::@5 -remove_lines::@return: scope:[remove_lines] from remove_lines::@5 - return - to:@return -tables_init: scope:[tables_init] from main::@22 - (byte) tables_init::idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte*) tables_init::pli#0 ← (byte[$22]) playfield#0 - (byte/signed word/word/dword/signed dword~) tables_init::$0 ← (byte) PLAYFIELD_LINES#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) tables_init::j#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:tables_init::@1 -tables_init::@1: scope:[tables_init] from tables_init tables_init::@1 - (byte) tables_init::idx#2 ← phi( tables_init/(byte) tables_init::idx#0 tables_init::@1/(byte) tables_init::idx#1 ) - (byte*) tables_init::pli#2 ← phi( tables_init/(byte*) tables_init::pli#0 tables_init::@1/(byte*) tables_init::pli#1 ) - (byte) tables_init::j#2 ← phi( tables_init/(byte) tables_init::j#0 tables_init::@1/(byte) tables_init::j#1 ) - (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 - *((byte[$23]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 - (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (byte) PLAYFIELD_COLS#0 - (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (byte) PLAYFIELD_COLS#0 - (byte) tables_init::j#1 ← (byte) tables_init::j#2 + rangenext(0,tables_init::$0) - (bool~) tables_init::$2 ← (byte) tables_init::j#1 != rangelast(0,tables_init::$0) - if((bool~) tables_init::$2) goto tables_init::@1 - to:tables_init::@2 -tables_init::@2: scope:[tables_init] from tables_init::@1 - (byte~) tables_init::$3 ← (byte) PLAYFIELD_COLS#0 * (byte) PLAYFIELD_LINES#0 - *((byte[$23]) playfield_lines_idx#0 + (byte) PLAYFIELD_LINES#0) ← (byte~) tables_init::$3 - to:tables_init::@return -tables_init::@return: scope:[tables_init] from tables_init::@2 - return - to:@return -@23: scope:[] from @18 - (byte) current_movedown_counter#26 ← phi( @18/(byte) current_movedown_counter#33 ) - (byte) keyboard_modifiers#32 ← phi( @18/(byte) keyboard_modifiers#38 ) - (byte) keyboard_events_size#35 ← phi( @18/(byte) keyboard_events_size#44 ) - (byte) current_piece_color#37 ← phi( @18/(byte) current_piece_color#49 ) - (byte) current_ypos#50 ← phi( @18/(byte) current_ypos#59 ) - (byte) current_xpos#65 ← phi( @18/(byte) current_xpos#77 ) - (byte*) current_piece_gfx#52 ← phi( @18/(byte*) current_piece_gfx#63 ) - (byte) current_orientation#50 ← phi( @18/(byte) current_orientation#61 ) - (byte*) current_piece#41 ← phi( @18/(byte*) current_piece#53 ) - (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 - (byte*) CHARSET#0 ← ((byte*)) (word/signed word/dword/signed dword) 10240 - kickasm(location (byte*) CHARSET#0) {{ .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9)) - .for (var c=0; c<16; c++) + kickasm(location (byte*) PLAYFIELD_CHARSET#0) {{ .var charset = LoadPicture("nes-charset.png", List().add($000000, $ffffff)) + .for (var c=0; c<32; c++) .for (var y=0;y<8; y++) - .byte charset.getMulticolorByte(c,y) + .byte charset.getSinglecolorByte(c,y) }} - (byte/signed word/word/dword/signed dword~) $24 ← (byte) PLAYFIELD_LINES#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 - (byte*[$24]) screen_lines#0 ← { fill( $24, 0) } - to:@26 + (byte/signed word/word/dword/signed dword~) $3 ← (byte) PLAYFIELD_LINES#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte*[$3]) screen_lines#0 ← { fill( $3, 0) } + to:@17 render_init: scope:[render_init] from main::@21 - (byte*) SCREEN#1 ← phi( main::@21/(byte*) SCREEN#2 ) *((byte*) BGCOL#0) ← (byte) BLACK#0 - (byte*) fill::start#0 ← (byte*) SCREEN#1 + (byte*) fill::start#0 ← (byte*) PLAYFIELD_SCREEN#0 (word) fill::size#0 ← (word/signed word/dword/signed dword) 1000 (byte) fill::val#0 ← (byte/word/signed word/dword/signed dword) 208 call fill @@ -1743,7 +534,7 @@ render_init::@1: scope:[render_init] from render_init::@1 render_init::@8 (byte*) render_init::li#2 ← phi( render_init::@1/(byte*) render_init::li#1 render_init::@8/(byte*) render_init::li#0 ) (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@8/(byte) render_init::i#0 ) (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - *((byte*[$24]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 + *((byte*[$3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 (byte) render_init::i#1 ← (byte) render_init::i#2 + rangenext(0,render_init::$4) (bool~) render_init::$6 ← (byte) render_init::i#1 != rangelast(0,render_init::$4) @@ -1791,7 +582,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*[$24]) screen_lines#0 + (byte~) render_playfield::$1) + (byte*) render_playfield::line#0 ← *((byte*[$3]) 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 @@ -1800,7 +591,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[$22]) playfield#0 + (byte) render_playfield::i#2) + *((byte*) render_playfield::line#2) ← *((byte[$2]) 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) @@ -1818,20 +609,20 @@ render_playfield::@return: scope:[render_playfield] from render_playfield::@3 return to:@return render_current: scope:[render_current] from main::@25 main::@32 - (byte) current_piece_color#67 ← phi( main::@25/(byte) current_piece_color#39 main::@32/(byte) current_piece_color#55 ) - (byte*) current_piece_gfx#64 ← phi( main::@25/(byte*) current_piece_gfx#54 main::@32/(byte*) current_piece_gfx#69 ) - (byte) current_xpos#63 ← phi( main::@25/(byte) current_xpos#67 main::@32/(byte) current_xpos#78 ) - (byte) current_ypos#22 ← phi( main::@25/(byte) current_ypos#37 main::@32/(byte) current_ypos#38 ) + (byte) current_piece_color#62 ← phi( main::@25/(byte) current_piece_color#48 main::@32/(byte) current_piece_color#61 ) + (byte*) current_piece_gfx#53 ← phi( main::@25/(byte*) current_piece_gfx#64 main::@32/(byte*) current_piece_gfx#67 ) + (byte) current_xpos#48 ← phi( main::@25/(byte) current_xpos#66 main::@32/(byte) current_xpos#67 ) + (byte) current_ypos#10 ← phi( main::@25/(byte) current_ypos#24 main::@32/(byte) current_ypos#25 ) (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::$0 ← (byte) current_ypos#10 << (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#60 ← phi( render_current/(byte) current_piece_color#67 render_current::@2/(byte) current_piece_color#68 ) + (byte) current_piece_color#52 ← phi( render_current/(byte) current_piece_color#62 render_current::@2/(byte) current_piece_color#63 ) (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#64 render_current::@2/(byte*) current_piece_gfx#65 ) - (byte) current_xpos#46 ← phi( render_current/(byte) current_xpos#63 render_current::@2/(byte) current_xpos#64 ) + (byte*) current_piece_gfx#37 ← phi( render_current/(byte*) current_piece_gfx#53 render_current::@2/(byte*) current_piece_gfx#54 ) + (byte) current_xpos#30 ← phi( render_current/(byte) current_xpos#48 render_current::@2/(byte) current_xpos#49 ) (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 @@ -1840,10 +631,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#68 ← phi( render_current::@1/(byte) current_piece_color#60 render_current::@4/(byte) current_piece_color#50 ) + (byte) current_piece_color#63 ← phi( render_current::@1/(byte) current_piece_color#52 render_current::@4/(byte) current_piece_color#38 ) (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#65 ← phi( render_current::@1/(byte*) current_piece_gfx#49 render_current::@4/(byte*) current_piece_gfx#34 ) - (byte) current_xpos#64 ← phi( render_current::@1/(byte) current_xpos#46 render_current::@4/(byte) current_xpos#79 ) + (byte*) current_piece_gfx#54 ← phi( render_current::@1/(byte*) current_piece_gfx#37 render_current::@4/(byte*) current_piece_gfx#23 ) + (byte) current_xpos#49 ← phi( render_current::@1/(byte) current_xpos#30 render_current::@4/(byte) current_xpos#68 ) (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 @@ -1852,27 +643,27 @@ 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#51 ← phi( render_current::@1/(byte) current_piece_color#60 ) + (byte) current_piece_color#39 ← phi( render_current::@1/(byte) current_piece_color#52 ) (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#46 ) + (byte*) current_piece_gfx#24 ← phi( render_current::@1/(byte*) current_piece_gfx#37 ) + (byte) current_xpos#13 ← phi( render_current::@1/(byte) current_xpos#30 ) (byte) render_current::ypos2#4 ← phi( render_current::@1/(byte) render_current::ypos2#2 ) - (byte*) render_current::screen_line#0 ← *((byte*[$24]) screen_lines#0 + (byte) render_current::ypos2#4) - (byte) render_current::xpos#0 ← (byte) current_xpos#28 + (byte*) render_current::screen_line#0 ← *((byte*[$3]) screen_lines#0 + (byte) render_current::ypos2#4) + (byte) render_current::xpos#0 ← (byte) current_xpos#13 (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#85 ← phi( render_current::@4/(byte) current_xpos#79 render_current::@6/(byte) current_xpos#28 ) + (byte) current_xpos#80 ← phi( render_current::@4/(byte) current_xpos#68 render_current::@6/(byte) current_xpos#13 ) (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#50 render_current::@6/(byte) current_piece_color#51 ) + (byte) current_piece_color#27 ← phi( render_current::@4/(byte) current_piece_color#38 render_current::@6/(byte) current_piece_color#39 ) (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 ) (byte) render_current::xpos#5 ← phi( render_current::@4/(byte) render_current::xpos#1 render_current::@6/(byte) render_current::xpos#0 ) (byte) render_current::i#2 ← phi( render_current::@4/(byte) render_current::i#3 render_current::@6/(byte) render_current::i#4 ) - (byte*) current_piece_gfx#21 ← phi( render_current::@4/(byte*) current_piece_gfx#34 render_current::@6/(byte*) current_piece_gfx#35 ) - (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#21 + (byte) render_current::i#2) + (byte*) current_piece_gfx#12 ← phi( render_current::@4/(byte*) current_piece_gfx#23 render_current::@6/(byte*) current_piece_gfx#24 ) + (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#12 + (byte) render_current::i#2) (byte) render_current::i#1 ← ++ (byte) render_current::i#2 (bool~) render_current::$4 ← (byte) render_current::current_cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) render_current::$5 ← ! (bool~) render_current::$4 @@ -1880,10 +671,10 @@ 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#50 ← phi( render_current::@3/(byte) current_piece_color#36 render_current::@5/(byte) current_piece_color#61 render_current::@8/(byte) current_piece_color#16 ) - (byte) current_xpos#79 ← phi( render_current::@3/(byte) current_xpos#85 render_current::@5/(byte) current_xpos#86 render_current::@8/(byte) current_xpos#87 ) + (byte) current_piece_color#38 ← phi( render_current::@3/(byte) current_piece_color#27 render_current::@5/(byte) current_piece_color#53 render_current::@8/(byte) current_piece_color#9 ) + (byte) current_xpos#68 ← phi( render_current::@3/(byte) current_xpos#80 render_current::@5/(byte) current_xpos#81 render_current::@8/(byte) current_xpos#82 ) (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*) current_piece_gfx#23 ← phi( render_current::@3/(byte*) current_piece_gfx#12 render_current::@5/(byte*) current_piece_gfx#38 render_current::@8/(byte*) current_piece_gfx#39 ) (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 ) (byte) render_current::ypos2#5 ← phi( render_current::@3/(byte) render_current::ypos2#6 render_current::@5/(byte) render_current::ypos2#7 render_current::@8/(byte) render_current::ypos2#8 ) (byte) render_current::c#2 ← phi( render_current::@3/(byte) render_current::c#3 render_current::@5/(byte) render_current::c#4 render_current::@8/(byte) render_current::c#5 ) @@ -1894,14 +685,14 @@ 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#92 ← phi( render_current::@3/(byte) current_xpos#85 ) + (byte) current_xpos#88 ← phi( render_current::@3/(byte) current_xpos#80 ) (byte) render_current::i#9 ← phi( render_current::@3/(byte) render_current::i#1 ) - (byte*) current_piece_gfx#66 ← phi( render_current::@3/(byte*) current_piece_gfx#21 ) + (byte*) current_piece_gfx#55 ← phi( render_current::@3/(byte*) current_piece_gfx#12 ) (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 ) (byte*) render_current::screen_line#2 ← phi( render_current::@3/(byte*) render_current::screen_line#3 ) - (byte) current_piece_color#25 ← phi( render_current::@3/(byte) current_piece_color#36 ) + (byte) current_piece_color#18 ← phi( render_current::@3/(byte) current_piece_color#27 ) (byte) render_current::xpos#3 ← phi( render_current::@3/(byte) render_current::xpos#5 ) (bool~) render_current::$6 ← (byte) render_current::xpos#3 < (byte) PLAYFIELD_COLS#0 (bool~) render_current::$7 ← ! (bool~) render_current::$6 @@ -1909,53 +700,1258 @@ 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#61 ← phi( render_current::@7/(byte) current_piece_color#25 ) - (byte) current_xpos#86 ← phi( render_current::@7/(byte) current_xpos#92 ) + (byte) current_piece_color#53 ← phi( render_current::@7/(byte) current_piece_color#18 ) + (byte) current_xpos#81 ← phi( render_current::@7/(byte) current_xpos#88 ) (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#66 ) + (byte*) current_piece_gfx#38 ← phi( render_current::@7/(byte*) current_piece_gfx#55 ) (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#87 ← phi( render_current::@7/(byte) current_xpos#92 ) + (byte) current_xpos#82 ← phi( render_current::@7/(byte) current_xpos#88 ) (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#66 ) + (byte*) current_piece_gfx#39 ← phi( render_current::@7/(byte*) current_piece_gfx#55 ) (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 ) (byte) render_current::xpos#4 ← phi( render_current::@7/(byte) render_current::xpos#3 ) (byte*) render_current::screen_line#1 ← phi( render_current::@7/(byte*) render_current::screen_line#2 ) - (byte) current_piece_color#16 ← phi( render_current::@7/(byte) current_piece_color#25 ) - *((byte*) render_current::screen_line#1 + (byte) render_current::xpos#4) ← (byte) current_piece_color#16 + (byte) current_piece_color#9 ← phi( render_current::@7/(byte) current_piece_color#18 ) + *((byte*) render_current::screen_line#1 + (byte) render_current::xpos#4) ← (byte) current_piece_color#9 to:render_current::@4 render_current::@return: scope:[render_current] from render_current::@2 return to:@return -@26: scope:[] from @23 - (byte*) SCREEN#4 ← phi( @23/(byte*) SCREEN#0 ) - (byte) current_movedown_counter#20 ← phi( @23/(byte) current_movedown_counter#26 ) - (byte) keyboard_modifiers#25 ← phi( @23/(byte) keyboard_modifiers#32 ) - (byte) keyboard_events_size#28 ← phi( @23/(byte) keyboard_events_size#35 ) - (byte) current_piece_color#26 ← phi( @23/(byte) current_piece_color#37 ) - (byte) current_ypos#39 ← phi( @23/(byte) current_ypos#50 ) - (byte) current_xpos#47 ← phi( @23/(byte) current_xpos#65 ) - (byte*) current_piece_gfx#36 ← phi( @23/(byte*) current_piece_gfx#52 ) - (byte) current_orientation#40 ← phi( @23/(byte) current_orientation#50 ) - (byte*) current_piece#29 ← phi( @23/(byte*) current_piece#41 ) +@17: scope:[] from @14 + (byte) keyboard_modifiers#33 ← phi( @14/(byte) keyboard_modifiers#39 ) + (byte) keyboard_events_size#39 ← phi( @14/(byte) keyboard_events_size#48 ) + (byte) current_piece_color#44 ← phi( @14/(byte) current_piece_color#0 ) + (byte) current_ypos#55 ← phi( @14/(byte) current_ypos#0 ) + (byte) current_xpos#73 ← phi( @14/(byte) current_xpos#0 ) + (byte*) current_piece_gfx#62 ← phi( @14/(byte*) current_piece_gfx#0 ) + (byte/signed byte/word/signed word/dword/signed dword~) $4 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte/signed word/word/dword/signed dword/signed byte~) $5 ← (byte/signed byte/word/signed word/dword/signed dword~) $4 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$5]) 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~) $6 ← (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~) $7 ← (byte/signed byte/word/signed word/dword/signed dword~) $6 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$7]) 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~) $8 ← (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~) $9 ← (byte/signed byte/word/signed word/dword/signed dword~) $8 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$9]) 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~) $10 ← (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~) $11 ← (byte/signed byte/word/signed word/dword/signed dword~) $10 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$11]) 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~) $12 ← (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~) $13 ← (byte/signed byte/word/signed word/dword/signed dword~) $12 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$13]) 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~) $14 ← (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~) $15 ← (byte/signed byte/word/signed word/dword/signed dword~) $14 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$15]) 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~) $16 ← (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~) $17 ← (byte/signed byte/word/signed word/dword/signed dword~) $16 * (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte[$17]) 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~) $18 ← ((word)) (byte[$5]) PIECE_T#0 + (word~) $19 ← ((word)) (byte[$7]) PIECE_S#0 + (word~) $20 ← ((word)) (byte[$9]) PIECE_Z#0 + (word~) $21 ← ((word)) (byte[$13]) PIECE_J#0 + (word~) $22 ← ((word)) (byte[$15]) PIECE_O#0 + (word~) $23 ← ((word)) (byte[$17]) PIECE_I#0 + (word~) $24 ← ((word)) (byte[$11]) PIECE_L#0 + (word[]) PIECES#0 ← { (word~) $18, (word~) $19, (word~) $20, (word~) $21, (word~) $22, (word~) $23, (word~) $24 } + (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]) playfield_lines#0 ← { fill( PLAYFIELD_LINES#0, 0) } + (byte/signed word/word/dword/signed dword~) $25 ← (byte) PLAYFIELD_LINES#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte[$25]) playfield_lines_idx#0 ← { fill( $25, 0) } + (byte*) current_piece#0 ← ((byte*)) (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_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:@20 +play_move_down: scope:[play_move_down] from main::@28 + (byte) current_piece_color#69 ← phi( main::@28/(byte) current_piece_color#24 ) + (byte*) current_piece_gfx#81 ← phi( main::@28/(byte*) current_piece_gfx#33 ) + (byte*) current_piece#65 ← phi( main::@28/(byte*) current_piece#27 ) + (byte) current_orientation#66 ← phi( main::@28/(byte) current_orientation#37 ) + (byte) current_xpos#89 ← phi( main::@28/(byte) current_xpos#45 ) + (byte) current_ypos#64 ← phi( main::@28/(byte) current_ypos#37 ) + (byte) play_move_down::key_event#1 ← phi( main::@28/(byte) play_move_down::key_event#0 ) + (byte) current_movedown_counter#7 ← phi( main::@28/(byte) current_movedown_counter#14 ) + (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#7 + (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 + (bool~) play_move_down::$1 ← ! (bool~) play_move_down::$0 + 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#64 ← phi( play_move_down/(byte) current_piece_color#69 play_move_down::@8/(byte) current_piece_color#70 ) + (byte*) current_piece_gfx#76 ← phi( play_move_down/(byte*) current_piece_gfx#81 play_move_down::@8/(byte*) current_piece_gfx#82 ) + (byte*) current_piece#60 ← phi( play_move_down/(byte*) current_piece#65 play_move_down::@8/(byte*) current_piece#66 ) + (byte) current_orientation#61 ← phi( play_move_down/(byte) current_orientation#66 play_move_down::@8/(byte) current_orientation#67 ) + (byte) current_xpos#83 ← phi( play_move_down/(byte) current_xpos#89 play_move_down::@8/(byte) current_xpos#90 ) + (byte) current_ypos#60 ← phi( play_move_down/(byte) current_ypos#64 play_move_down::@8/(byte) current_ypos#65 ) + (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#21 ← phi( play_move_down/(byte) current_movedown_counter#1 play_move_down::@8/(byte) current_movedown_counter#27 ) + (byte) keyboard_event_pressed::keycode#4 ← (byte) KEY_SPACE#0 + call keyboard_event_pressed + (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#55 ← phi( play_move_down::@1/(byte) current_piece_color#64 ) + (byte*) current_piece_gfx#69 ← phi( play_move_down::@1/(byte*) current_piece_gfx#76 ) + (byte*) current_piece#54 ← phi( play_move_down::@1/(byte*) current_piece#60 ) + (byte) current_orientation#52 ← phi( play_move_down::@1/(byte) current_orientation#61 ) + (byte) current_xpos#70 ← phi( play_move_down::@1/(byte) current_xpos#83 ) + (byte) current_ypos#52 ← phi( play_move_down::@1/(byte) current_ypos#60 ) + (byte) play_move_down::movedown#10 ← phi( play_move_down::@1/(byte) play_move_down::movedown#12 ) + (byte) current_movedown_counter#16 ← phi( play_move_down::@1/(byte) current_movedown_counter#21 ) + (byte) keyboard_event_pressed::return#12 ← phi( play_move_down::@1/(byte) keyboard_event_pressed::return#6 ) + (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + (bool~) play_move_down::$3 ← (byte~) play_move_down::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) play_move_down::$4 ← ! (bool~) play_move_down::$3 + 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#70 ← phi( play_move_down/(byte) current_piece_color#69 ) + (byte*) current_piece_gfx#82 ← phi( play_move_down/(byte*) current_piece_gfx#81 ) + (byte*) current_piece#66 ← phi( play_move_down/(byte*) current_piece#65 ) + (byte) current_orientation#67 ← phi( play_move_down/(byte) current_orientation#66 ) + (byte) current_xpos#90 ← phi( play_move_down/(byte) current_xpos#89 ) + (byte) current_ypos#65 ← phi( play_move_down/(byte) current_ypos#64 ) + (byte) current_movedown_counter#27 ← phi( play_move_down/(byte) current_movedown_counter#1 ) + (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#41 ← phi( play_move_down::@10/(byte) current_piece_color#54 play_move_down::@17/(byte) current_piece_color#55 play_move_down::@3/(byte) current_piece_color#56 ) + (byte*) current_piece_gfx#57 ← phi( play_move_down::@10/(byte*) current_piece_gfx#68 play_move_down::@17/(byte*) current_piece_gfx#69 play_move_down::@3/(byte*) current_piece_gfx#70 ) + (byte*) current_piece#43 ← phi( play_move_down::@10/(byte*) current_piece#53 play_move_down::@17/(byte*) current_piece#54 play_move_down::@3/(byte*) current_piece#55 ) + (byte) current_orientation#42 ← phi( play_move_down::@10/(byte) current_orientation#51 play_move_down::@17/(byte) current_orientation#52 play_move_down::@3/(byte) current_orientation#53 ) + (byte) current_xpos#51 ← 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#41 ← phi( play_move_down::@10/(byte) current_ypos#51 play_move_down::@17/(byte) current_ypos#52 play_move_down::@3/(byte) current_ypos#53 ) + (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#8 ← phi( play_move_down::@10/(byte) current_movedown_counter#15 play_move_down::@17/(byte) current_movedown_counter#16 play_move_down::@3/(byte) current_movedown_counter#17 ) + (bool~) play_move_down::$7 ← (byte) current_movedown_counter#8 >= (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#65 ← phi( play_move_down::@17/(byte) current_piece_color#55 ) + (byte*) current_piece_gfx#77 ← phi( play_move_down::@17/(byte*) current_piece_gfx#69 ) + (byte*) current_piece#61 ← phi( play_move_down::@17/(byte*) current_piece#54 ) + (byte) current_orientation#62 ← phi( play_move_down::@17/(byte) current_orientation#52 ) + (byte) current_xpos#84 ← phi( play_move_down::@17/(byte) current_xpos#70 ) + (byte) current_ypos#61 ← phi( play_move_down::@17/(byte) current_ypos#52 ) + (byte) play_move_down::movedown#8 ← phi( play_move_down::@17/(byte) play_move_down::movedown#10 ) + (byte) current_movedown_counter#9 ← phi( play_move_down::@17/(byte) current_movedown_counter#16 ) + (bool~) play_move_down::$5 ← (byte) current_movedown_counter#9 >= (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#56 ← phi( play_move_down::@9/(byte) current_piece_color#65 ) + (byte*) current_piece_gfx#70 ← phi( play_move_down::@9/(byte*) current_piece_gfx#77 ) + (byte*) current_piece#55 ← phi( play_move_down::@9/(byte*) current_piece#61 ) + (byte) current_orientation#53 ← phi( play_move_down::@9/(byte) current_orientation#62 ) + (byte) current_xpos#71 ← phi( play_move_down::@9/(byte) current_xpos#84 ) + (byte) current_ypos#53 ← phi( play_move_down::@9/(byte) current_ypos#61 ) + (byte) play_move_down::movedown#11 ← phi( play_move_down::@9/(byte) play_move_down::movedown#8 ) + (byte) current_movedown_counter#17 ← phi( play_move_down::@9/(byte) current_movedown_counter#9 ) + to:play_move_down::@2 +play_move_down::@10: scope:[play_move_down] from play_move_down::@9 + (byte) current_piece_color#54 ← phi( play_move_down::@9/(byte) current_piece_color#65 ) + (byte*) current_piece_gfx#68 ← phi( play_move_down::@9/(byte*) current_piece_gfx#77 ) + (byte*) current_piece#53 ← phi( play_move_down::@9/(byte*) current_piece#61 ) + (byte) current_orientation#51 ← phi( play_move_down::@9/(byte) current_orientation#62 ) + (byte) current_xpos#69 ← phi( play_move_down::@9/(byte) current_xpos#84 ) + (byte) current_ypos#51 ← phi( play_move_down::@9/(byte) current_ypos#61 ) + (byte) current_movedown_counter#15 ← phi( play_move_down::@9/(byte) current_movedown_counter#9 ) + (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#28 ← phi( play_move_down::@11/(byte) current_piece_color#40 play_move_down::@2/(byte) current_piece_color#41 ) + (byte*) current_piece_gfx#40 ← phi( play_move_down::@11/(byte*) current_piece_gfx#56 play_move_down::@2/(byte*) current_piece_gfx#57 ) + (byte*) current_piece#30 ← phi( play_move_down::@11/(byte*) current_piece#42 play_move_down::@2/(byte*) current_piece#43 ) + (byte) current_movedown_counter#22 ← phi( play_move_down::@11/(byte) current_movedown_counter#28 play_move_down::@2/(byte) current_movedown_counter#8 ) + (byte) current_orientation#26 ← phi( play_move_down::@11/(byte) current_orientation#41 play_move_down::@2/(byte) current_orientation#42 ) + (byte) current_xpos#31 ← phi( play_move_down::@11/(byte) current_xpos#50 play_move_down::@2/(byte) current_xpos#51 ) + (byte) current_ypos#26 ← phi( play_move_down::@11/(byte) current_ypos#40 play_move_down::@2/(byte) current_ypos#41 ) + (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#40 ← phi( play_move_down::@2/(byte) current_piece_color#41 ) + (byte*) current_piece_gfx#56 ← phi( play_move_down::@2/(byte*) current_piece_gfx#57 ) + (byte*) current_piece#42 ← phi( play_move_down::@2/(byte*) current_piece#43 ) + (byte) current_movedown_counter#28 ← phi( play_move_down::@2/(byte) current_movedown_counter#8 ) + (byte) current_orientation#41 ← phi( play_move_down::@2/(byte) current_orientation#42 ) + (byte) current_xpos#50 ← phi( play_move_down::@2/(byte) current_xpos#51 ) + (byte) current_ypos#40 ← phi( play_move_down::@2/(byte) current_ypos#41 ) + (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_piece_color#20 ← phi( play_move_down::@4/(byte) current_piece_color#28 ) + (byte) current_xpos#33 ← phi( play_move_down::@4/(byte) current_xpos#31 ) + (byte*) current_piece_gfx#26 ← phi( play_move_down::@4/(byte*) current_piece_gfx#40 ) + (byte) current_orientation#28 ← phi( play_move_down::@4/(byte) current_orientation#26 ) + (byte*) current_piece#19 ← phi( play_move_down::@4/(byte*) current_piece#30 ) + (byte) current_ypos#29 ← phi( play_move_down::@4/(byte) current_ypos#26 ) + (byte) current_movedown_counter#18 ← phi( play_move_down::@4/(byte) current_movedown_counter#22 ) + (byte) play_move_down::return#0 ← (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#57 ← phi( play_move_down::@4/(byte) current_piece_color#28 ) + (byte*) current_piece_gfx#71 ← phi( play_move_down::@4/(byte*) current_piece_gfx#40 ) + (byte*) current_piece#22 ← phi( play_move_down::@4/(byte*) current_piece#30 ) + (byte) current_orientation#12 ← phi( play_move_down::@4/(byte) current_orientation#26 ) + (byte) current_xpos#14 ← phi( play_move_down::@4/(byte) current_xpos#31 ) + (byte) current_ypos#11 ← phi( play_move_down::@4/(byte) current_ypos#26 ) + (byte/signed word/word/dword/signed dword~) play_move_down::$11 ← (byte) current_ypos#11 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) play_collision::xpos#0 ← (byte) current_xpos#14 + (byte) play_collision::ypos#0 ← (byte/signed word/word/dword/signed dword~) play_move_down::$11 + (byte) play_collision::orientation#0 ← (byte) current_orientation#12 + call play_collision + (byte) play_collision::return#0 ← (byte) play_collision::return#5 + to:play_move_down::@18 +play_move_down::@18: scope:[play_move_down] from play_move_down::@12 + (byte) current_piece_color#42 ← phi( play_move_down::@12/(byte) current_piece_color#57 ) + (byte) current_xpos#72 ← phi( play_move_down::@12/(byte) current_xpos#14 ) + (byte*) current_piece_gfx#58 ← phi( play_move_down::@12/(byte*) current_piece_gfx#71 ) + (byte) current_orientation#54 ← phi( play_move_down::@12/(byte) current_orientation#12 ) + (byte*) current_piece#44 ← phi( play_move_down::@12/(byte*) current_piece#22 ) + (byte) current_ypos#27 ← phi( play_move_down::@12/(byte) current_ypos#11 ) + (byte) play_collision::return#10 ← phi( play_move_down::@12/(byte) play_collision::return#0 ) + (byte~) play_move_down::$12 ← (byte) play_collision::return#10 + (bool~) play_move_down::$13 ← (byte~) play_move_down::$12 == (byte) COLLISION_NONE#0 + 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_piece_color#30 ← phi( play_move_down::@18/(byte) current_piece_color#42 ) + (byte) current_xpos#53 ← phi( play_move_down::@18/(byte) current_xpos#72 ) + (byte*) current_piece_gfx#42 ← phi( play_move_down::@18/(byte*) current_piece_gfx#58 ) + (byte) current_orientation#44 ← phi( play_move_down::@18/(byte) current_orientation#54 ) + (byte*) current_piece#32 ← phi( play_move_down::@18/(byte*) current_piece#44 ) + (byte) current_ypos#12 ← phi( play_move_down::@18/(byte) current_ypos#27 ) + (byte) current_ypos#1 ← ++ (byte) current_ypos#12 + to:play_move_down::@7 +play_move_down::@13: scope:[play_move_down] from play_move_down::@18 + (byte) current_piece_color#43 ← phi( play_move_down::@18/(byte) current_piece_color#42 ) + (byte*) current_piece_gfx#59 ← phi( play_move_down::@18/(byte*) current_piece_gfx#58 ) + (byte) current_orientation#55 ← phi( play_move_down::@18/(byte) current_orientation#54 ) + (byte*) current_piece#45 ← phi( play_move_down::@18/(byte*) current_piece#44 ) + (byte) current_xpos#59 ← phi( play_move_down::@18/(byte) current_xpos#72 ) + (byte) current_ypos#35 ← phi( play_move_down::@18/(byte) current_ypos#27 ) + call play_lock_current + to:play_move_down::@19 +play_move_down::@19: scope:[play_move_down] from play_move_down::@13 + (byte) current_piece_color#29 ← phi( play_move_down::@13/(byte) current_piece_color#43 ) + (byte) current_ypos#42 ← phi( play_move_down::@13/(byte) current_ypos#35 ) + (byte) current_xpos#52 ← phi( play_move_down::@13/(byte) current_xpos#59 ) + (byte*) current_piece_gfx#41 ← phi( play_move_down::@13/(byte*) current_piece_gfx#59 ) + (byte) current_orientation#43 ← phi( play_move_down::@13/(byte) current_orientation#55 ) + (byte*) current_piece#31 ← phi( play_move_down::@13/(byte*) current_piece#45 ) + call play_remove_lines + to:play_move_down::@20 +play_move_down::@20: scope:[play_move_down] from play_move_down::@19 + (byte) current_piece_color#19 ← phi( play_move_down::@19/(byte) current_piece_color#29 ) + (byte) current_ypos#28 ← phi( play_move_down::@19/(byte) current_ypos#42 ) + (byte) current_xpos#32 ← phi( play_move_down::@19/(byte) current_xpos#52 ) + (byte*) current_piece_gfx#25 ← phi( play_move_down::@19/(byte*) current_piece_gfx#41 ) + (byte) current_orientation#27 ← phi( play_move_down::@19/(byte) current_orientation#43 ) + (byte*) current_piece#18 ← phi( play_move_down::@19/(byte*) current_piece#31 ) + call play_spawn_current + to:play_move_down::@21 +play_move_down::@21: scope:[play_move_down] from play_move_down::@20 + (byte) current_piece_color#10 ← phi( play_move_down::@20/(byte) current_piece_color#4 ) + (byte) current_ypos#13 ← phi( play_move_down::@20/(byte) current_ypos#5 ) + (byte) current_xpos#15 ← phi( play_move_down::@20/(byte) current_xpos#7 ) + (byte*) current_piece_gfx#13 ← phi( play_move_down::@20/(byte*) current_piece_gfx#6 ) + (byte) current_orientation#13 ← phi( play_move_down::@20/(byte) current_orientation#6 ) + (byte*) current_piece#9 ← phi( play_move_down::@20/(byte*) current_piece#4 ) + (byte*) current_piece#1 ← (byte*) current_piece#9 + (byte) current_orientation#1 ← (byte) current_orientation#13 + (byte*) current_piece_gfx#1 ← (byte*) current_piece_gfx#13 + (byte) current_xpos#1 ← (byte) current_xpos#15 + (byte) current_ypos#2 ← (byte) current_ypos#13 + (byte) current_piece_color#1 ← (byte) current_piece_color#10 + to:play_move_down::@7 +play_move_down::@7: scope:[play_move_down] from play_move_down::@21 play_move_down::@6 + (byte) current_piece_color#21 ← phi( play_move_down::@21/(byte) current_piece_color#1 play_move_down::@6/(byte) current_piece_color#30 ) + (byte) current_xpos#34 ← phi( play_move_down::@21/(byte) current_xpos#1 play_move_down::@6/(byte) current_xpos#53 ) + (byte*) current_piece_gfx#27 ← phi( play_move_down::@21/(byte*) current_piece_gfx#1 play_move_down::@6/(byte*) current_piece_gfx#42 ) + (byte) current_orientation#29 ← phi( play_move_down::@21/(byte) current_orientation#1 play_move_down::@6/(byte) current_orientation#44 ) + (byte*) current_piece#20 ← phi( play_move_down::@21/(byte*) current_piece#1 play_move_down::@6/(byte*) current_piece#32 ) + (byte) current_ypos#30 ← phi( play_move_down::@21/(byte) current_ypos#2 play_move_down::@6/(byte) current_ypos#1 ) + (byte) current_movedown_counter#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) play_move_down::return#1 ← (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_piece_color#11 ← phi( play_move_down::@5/(byte) current_piece_color#20 play_move_down::@7/(byte) current_piece_color#21 ) + (byte) current_xpos#16 ← phi( play_move_down::@5/(byte) current_xpos#33 play_move_down::@7/(byte) current_xpos#34 ) + (byte*) current_piece_gfx#14 ← phi( play_move_down::@5/(byte*) current_piece_gfx#26 play_move_down::@7/(byte*) current_piece_gfx#27 ) + (byte) current_orientation#14 ← phi( play_move_down::@5/(byte) current_orientation#28 play_move_down::@7/(byte) current_orientation#29 ) + (byte*) current_piece#10 ← phi( play_move_down::@5/(byte*) current_piece#19 play_move_down::@7/(byte*) current_piece#20 ) + (byte) current_ypos#14 ← phi( play_move_down::@5/(byte) current_ypos#29 play_move_down::@7/(byte) current_ypos#30 ) + (byte) current_movedown_counter#10 ← phi( play_move_down::@5/(byte) current_movedown_counter#18 play_move_down::@7/(byte) current_movedown_counter#2 ) + (byte) play_move_down::return#4 ← phi( play_move_down::@5/(byte) play_move_down::return#0 play_move_down::@7/(byte) play_move_down::return#1 ) + (byte) play_move_down::return#2 ← (byte) play_move_down::return#4 + (byte) current_movedown_counter#3 ← (byte) current_movedown_counter#10 + (byte) current_ypos#3 ← (byte) current_ypos#14 + (byte*) current_piece#2 ← (byte*) current_piece#10 + (byte) current_orientation#2 ← (byte) current_orientation#14 + (byte*) current_piece_gfx#2 ← (byte*) current_piece_gfx#14 + (byte) current_xpos#2 ← (byte) current_xpos#16 + (byte) current_piece_color#2 ← (byte) current_piece_color#11 + return + to:@return +play_move_leftright: scope:[play_move_leftright] from main::@29 + (byte*) current_piece#33 ← phi( main::@29/(byte*) current_piece#6 ) + (byte) current_orientation#30 ← phi( main::@29/(byte) current_orientation#8 ) + (byte) current_ypos#31 ← phi( main::@29/(byte) current_ypos#7 ) + (byte) current_xpos#35 ← phi( main::@29/(byte) current_xpos#9 ) + (byte) play_move_leftright::key_event#1 ← phi( main::@29/(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#23 ← phi( play_move_leftright/(byte*) current_piece#33 ) + (byte) current_orientation#15 ← phi( play_move_leftright/(byte) current_orientation#30 ) + (byte) current_ypos#15 ← phi( play_move_leftright/(byte) current_ypos#31 ) + (byte) current_xpos#17 ← phi( play_move_leftright/(byte) current_xpos#35 ) + (byte/signed word/word/dword/signed dword~) play_move_leftright::$7 ← (byte) current_xpos#17 - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) play_collision::xpos#1 ← (byte/signed word/word/dword/signed dword~) play_move_leftright::$7 + (byte) play_collision::ypos#1 ← (byte) current_ypos#15 + (byte) play_collision::orientation#1 ← (byte) current_orientation#15 + call play_collision + (byte) play_collision::return#1 ← (byte) play_collision::return#5 + to:play_move_leftright::@14 +play_move_leftright::@14: scope:[play_move_leftright] from play_move_leftright::@1 + (byte) current_xpos#39 ← phi( play_move_leftright::@1/(byte) current_xpos#17 ) + (byte) play_collision::return#11 ← phi( play_move_leftright::@1/(byte) play_collision::return#1 ) + (byte~) play_move_leftright::$8 ← (byte) play_collision::return#11 + (bool~) play_move_leftright::$9 ← (byte~) play_move_leftright::$8 == (byte) COLLISION_NONE#0 + (bool~) play_move_leftright::$10 ← ! (bool~) play_move_leftright::$9 + if((bool~) play_move_leftright::$10) goto play_move_leftright::@5 + to:play_move_leftright::@11 +play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright + (byte*) current_piece#34 ← phi( play_move_leftright/(byte*) current_piece#33 ) + (byte) current_orientation#31 ← phi( play_move_leftright/(byte) current_orientation#30 ) + (byte) current_ypos#32 ← phi( play_move_leftright/(byte) current_ypos#31 ) + (byte) current_xpos#36 ← phi( play_move_leftright/(byte) current_xpos#35 ) + (byte) play_move_leftright::key_event#2 ← phi( play_move_leftright/(byte) play_move_leftright::key_event#1 ) + (bool~) play_move_leftright::$1 ← (byte) play_move_leftright::key_event#2 == (byte) KEY_DOT#0 + (bool~) play_move_leftright::$2 ← ! (bool~) play_move_leftright::$1 + 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#54 ← phi( play_move_leftright::@6/(byte) current_xpos#36 ) + to:play_move_leftright::@4 +play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@6 + (byte*) current_piece#24 ← phi( play_move_leftright::@6/(byte*) current_piece#34 ) + (byte) current_orientation#16 ← phi( play_move_leftright::@6/(byte) current_orientation#31 ) + (byte) current_ypos#16 ← phi( play_move_leftright::@6/(byte) current_ypos#32 ) + (byte) current_xpos#18 ← phi( play_move_leftright::@6/(byte) current_xpos#36 ) + (byte/signed word/word/dword/signed dword~) play_move_leftright::$3 ← (byte) current_xpos#18 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) play_collision::xpos#2 ← (byte/signed word/word/dword/signed dword~) play_move_leftright::$3 + (byte) play_collision::ypos#2 ← (byte) current_ypos#16 + (byte) play_collision::orientation#2 ← (byte) current_orientation#16 + call play_collision + (byte) play_collision::return#2 ← (byte) play_collision::return#5 + to:play_move_leftright::@15 +play_move_leftright::@15: scope:[play_move_leftright] from play_move_leftright::@7 + (byte) current_xpos#37 ← phi( play_move_leftright::@7/(byte) current_xpos#18 ) + (byte) play_collision::return#12 ← phi( play_move_leftright::@7/(byte) play_collision::return#2 ) + (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 + (bool~) play_move_leftright::$5 ← (byte~) play_move_leftright::$4 == (byte) COLLISION_NONE#0 + (bool~) play_move_leftright::$6 ← ! (bool~) play_move_leftright::$5 + 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#55 ← phi( play_move_leftright::@15/(byte) current_xpos#37 ) + to:play_move_leftright::@4 +play_move_leftright::@8: scope:[play_move_leftright] from play_move_leftright::@15 + (byte) current_xpos#19 ← phi( play_move_leftright::@15/(byte) current_xpos#37 ) + (byte) current_xpos#3 ← ++ (byte) current_xpos#19 + (byte) play_move_leftright::return#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:play_move_leftright::@return +play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@11 play_move_leftright::@4 play_move_leftright::@8 + (byte) current_xpos#20 ← phi( play_move_leftright::@11/(byte) current_xpos#5 play_move_leftright::@4/(byte) current_xpos#38 play_move_leftright::@8/(byte) current_xpos#3 ) + (byte) play_move_leftright::return#5 ← phi( play_move_leftright::@11/(byte) play_move_leftright::return#3 play_move_leftright::@4/(byte) play_move_leftright::return#2 play_move_leftright::@8/(byte) play_move_leftright::return#0 ) + (byte) play_move_leftright::return#1 ← (byte) play_move_leftright::return#5 + (byte) current_xpos#4 ← (byte) current_xpos#20 + 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#38 ← phi( play_move_leftright::@2/(byte) current_xpos#54 play_move_leftright::@3/(byte) current_xpos#55 play_move_leftright::@5/(byte) current_xpos#56 ) + (byte) play_move_leftright::return#2 ← (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#56 ← phi( play_move_leftright::@14/(byte) current_xpos#39 ) + to:play_move_leftright::@4 +play_move_leftright::@11: scope:[play_move_leftright] from play_move_leftright::@14 + (byte) current_xpos#21 ← phi( play_move_leftright::@14/(byte) current_xpos#39 ) + (byte) current_xpos#5 ← -- (byte) current_xpos#21 + (byte) play_move_leftright::return#3 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:play_move_leftright::@return +play_move_rotate: scope:[play_move_rotate] from main::@30 + (byte*) current_piece_gfx#60 ← phi( main::@30/(byte*) current_piece_gfx#34 ) + (byte*) current_piece#46 ← phi( main::@30/(byte*) current_piece#56 ) + (byte) current_ypos#43 ← phi( main::@30/(byte) current_ypos#54 ) + (byte) current_xpos#57 ← phi( main::@30/(byte) current_xpos#10 ) + (byte) current_orientation#32 ← phi( main::@30/(byte) current_orientation#38 ) + (byte) play_move_rotate::key_event#1 ← phi( main::@30/(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#72 ← phi( play_move_rotate/(byte*) current_piece_gfx#60 ) + (byte*) current_piece#35 ← phi( play_move_rotate/(byte*) current_piece#46 ) + (byte) current_ypos#33 ← phi( play_move_rotate/(byte) current_ypos#43 ) + (byte) current_xpos#40 ← phi( play_move_rotate/(byte) current_xpos#57 ) + (byte) current_orientation#17 ← phi( play_move_rotate/(byte) current_orientation#32 ) + (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#17 - (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#47 ← phi( play_move_rotate/(byte*) current_piece#46 ) + (byte*) current_piece_gfx#43 ← phi( play_move_rotate/(byte*) current_piece_gfx#60 ) + (byte) current_ypos#44 ← phi( play_move_rotate/(byte) current_ypos#43 ) + (byte) current_xpos#58 ← phi( play_move_rotate/(byte) current_xpos#57 ) + (byte) current_orientation#33 ← phi( play_move_rotate/(byte) current_orientation#32 ) + (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#73 ← phi( play_move_rotate::@6/(byte*) current_piece_gfx#43 ) + (byte*) current_piece#36 ← phi( play_move_rotate::@6/(byte*) current_piece#47 ) + (byte) current_ypos#34 ← phi( play_move_rotate::@6/(byte) current_ypos#44 ) + (byte) current_xpos#41 ← phi( play_move_rotate::@6/(byte) current_xpos#58 ) + (byte) current_orientation#18 ← phi( play_move_rotate::@6/(byte) current_orientation#33 ) + (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 + (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#29 ← phi( play_move_rotate::@6/(byte*) current_piece_gfx#43 ) + (byte) current_orientation#35 ← phi( play_move_rotate::@6/(byte) current_orientation#33 ) + (byte) play_move_rotate::return#0 ← (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#15 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#4 play_move_rotate::@5/(byte*) current_piece_gfx#28 play_move_rotate::@7/(byte*) current_piece_gfx#29 ) + (byte) current_orientation#19 ← phi( play_move_rotate::@11/(byte) current_orientation#4 play_move_rotate::@5/(byte) current_orientation#34 play_move_rotate::@7/(byte) current_orientation#35 ) + (byte) play_move_rotate::return#5 ← phi( play_move_rotate::@11/(byte) play_move_rotate::return#3 play_move_rotate::@5/(byte) play_move_rotate::return#2 play_move_rotate::@7/(byte) play_move_rotate::return#0 ) + (byte) play_move_rotate::return#1 ← (byte) play_move_rotate::return#5 + (byte) current_orientation#3 ← (byte) current_orientation#19 + (byte*) current_piece_gfx#3 ← (byte*) current_piece_gfx#15 + return + to:@return +play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2 + (byte*) current_piece_gfx#61 ← phi( play_move_rotate::@1/(byte*) current_piece_gfx#72 play_move_rotate::@2/(byte*) current_piece_gfx#73 ) + (byte) current_orientation#56 ← phi( play_move_rotate::@1/(byte) current_orientation#17 play_move_rotate::@2/(byte) current_orientation#18 ) + (byte*) current_piece#25 ← phi( play_move_rotate::@1/(byte*) current_piece#35 play_move_rotate::@2/(byte*) current_piece#36 ) + (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#17 ← phi( play_move_rotate::@1/(byte) current_ypos#33 play_move_rotate::@2/(byte) current_ypos#34 ) + (byte) current_xpos#22 ← phi( play_move_rotate::@1/(byte) current_xpos#40 play_move_rotate::@2/(byte) current_xpos#41 ) + (byte) play_collision::xpos#3 ← (byte) current_xpos#22 + (byte) play_collision::ypos#3 ← (byte) current_ypos#17 + (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + call play_collision + (byte) play_collision::return#3 ← (byte) play_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#44 ← phi( play_move_rotate::@4/(byte*) current_piece_gfx#61 ) + (byte) current_orientation#45 ← phi( play_move_rotate::@4/(byte) current_orientation#56 ) + (byte*) current_piece#21 ← phi( play_move_rotate::@4/(byte*) current_piece#25 ) + (byte) play_move_rotate::orientation#5 ← phi( play_move_rotate::@4/(byte) play_move_rotate::orientation#3 ) + (byte) play_collision::return#13 ← phi( play_move_rotate::@4/(byte) play_collision::return#3 ) + (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 + (bool~) play_move_rotate::$7 ← (byte~) play_move_rotate::$6 == (byte) COLLISION_NONE#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#28 ← phi( play_move_rotate::@14/(byte*) current_piece_gfx#44 ) + (byte) current_orientation#34 ← phi( play_move_rotate::@14/(byte) current_orientation#45 ) + (byte) play_move_rotate::return#2 ← (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#11 ← phi( play_move_rotate::@14/(byte*) current_piece#21 ) + (byte) play_move_rotate::orientation#4 ← phi( play_move_rotate::@14/(byte) play_move_rotate::orientation#5 ) + (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#4 + (byte*~) play_move_rotate::$9 ← (byte*) current_piece#11 + (byte) current_orientation#4 + (byte*) current_piece_gfx#4 ← (byte*~) play_move_rotate::$9 + (byte) play_move_rotate::return#3 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:play_move_rotate::@return +@20: scope:[] from @17 + (byte) current_movedown_counter#26 ← phi( @17/(byte) current_movedown_counter#0 ) + (byte) keyboard_modifiers#32 ← phi( @17/(byte) keyboard_modifiers#33 ) + (byte) keyboard_events_size#35 ← phi( @17/(byte) keyboard_events_size#39 ) + (byte) current_piece_color#37 ← phi( @17/(byte) current_piece_color#44 ) + (byte) current_ypos#50 ← phi( @17/(byte) current_ypos#55 ) + (byte) current_xpos#65 ← phi( @17/(byte) current_xpos#73 ) + (byte*) current_piece_gfx#52 ← phi( @17/(byte*) current_piece_gfx#62 ) + (byte) current_orientation#50 ← phi( @17/(byte) current_orientation#0 ) + (byte*) current_piece#41 ← phi( @17/(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:@26 +play_collision: scope:[play_collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 + (byte) play_collision::xpos#5 ← phi( play_move_down::@12/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@7/(byte) play_collision::xpos#2 play_move_rotate::@4/(byte) play_collision::xpos#3 ) + (byte) play_collision::ypos#4 ← phi( play_move_down::@12/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@7/(byte) play_collision::ypos#2 play_move_rotate::@4/(byte) play_collision::ypos#3 ) + (byte) play_collision::orientation#4 ← phi( play_move_down::@12/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@7/(byte) play_collision::orientation#2 play_move_rotate::@4/(byte) play_collision::orientation#3 ) + (byte*) current_piece#12 ← phi( play_move_down::@12/(byte*) current_piece#22 play_move_leftright::@1/(byte*) current_piece#23 play_move_leftright::@7/(byte*) current_piece#24 play_move_rotate::@4/(byte*) current_piece#25 ) + (byte*~) play_collision::$0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 + (byte*) play_collision::piece_gfx#0 ← (byte*~) play_collision::$0 + (byte) play_collision::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) play_collision::$1 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) play_collision::ypos2#0 ← (byte~) play_collision::$1 + (byte) play_collision::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:play_collision::@1 +play_collision::@1: scope:[play_collision] from play_collision play_collision::@17 + (byte) play_collision::l#6 ← phi( play_collision/(byte) play_collision::l#0 play_collision::@17/(byte) play_collision::l#1 ) + (byte) play_collision::i#3 ← phi( play_collision/(byte) play_collision::i#0 play_collision::@17/(byte) play_collision::i#5 ) + (byte*) play_collision::piece_gfx#2 ← phi( play_collision/(byte*) play_collision::piece_gfx#0 play_collision::@17/(byte*) play_collision::piece_gfx#4 ) + (byte) play_collision::xpos#4 ← phi( play_collision/(byte) play_collision::xpos#5 play_collision::@17/(byte) play_collision::xpos#6 ) + (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@17/(byte) play_collision::ypos2#1 ) + (byte*) play_collision::playfield_line#0 ← *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) + (byte) play_collision::col#0 ← (byte) play_collision::xpos#4 + (byte) play_collision::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:play_collision::@2 +play_collision::@2: scope:[play_collision] from play_collision::@1 play_collision::@3 + (byte*) play_collision::playfield_line#5 ← phi( play_collision::@1/(byte*) play_collision::playfield_line#0 play_collision::@3/(byte*) play_collision::playfield_line#6 ) + (byte) play_collision::xpos#8 ← phi( play_collision::@1/(byte) play_collision::xpos#4 play_collision::@3/(byte) play_collision::xpos#7 ) + (byte) play_collision::l#4 ← phi( play_collision::@1/(byte) play_collision::l#6 play_collision::@3/(byte) play_collision::l#3 ) + (byte) play_collision::ypos2#5 ← phi( play_collision::@1/(byte) play_collision::ypos2#2 play_collision::@3/(byte) play_collision::ypos2#6 ) + (byte) play_collision::c#3 ← phi( play_collision::@1/(byte) play_collision::c#0 play_collision::@3/(byte) play_collision::c#1 ) + (byte) play_collision::col#6 ← phi( play_collision::@1/(byte) play_collision::col#0 play_collision::@3/(byte) play_collision::col#1 ) + (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@3/(byte) play_collision::i#4 ) + (byte*) play_collision::piece_gfx#1 ← phi( play_collision::@1/(byte*) play_collision::piece_gfx#2 play_collision::@3/(byte*) play_collision::piece_gfx#3 ) + (bool~) play_collision::$2 ← *((byte*) play_collision::piece_gfx#1 + (byte) play_collision::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) play_collision::$3 ← ! (bool~) play_collision::$2 + (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 + if((bool~) play_collision::$3) goto play_collision::@3 + to:play_collision::@8 +play_collision::@3: scope:[play_collision] from play_collision::@2 play_collision::@7 + (byte*) play_collision::playfield_line#6 ← phi( play_collision::@2/(byte*) play_collision::playfield_line#5 play_collision::@7/(byte*) play_collision::playfield_line#7 ) + (byte) play_collision::xpos#7 ← phi( play_collision::@2/(byte) play_collision::xpos#8 play_collision::@7/(byte) play_collision::xpos#9 ) + (byte) play_collision::l#3 ← phi( play_collision::@2/(byte) play_collision::l#4 play_collision::@7/(byte) play_collision::l#5 ) + (byte) play_collision::ypos2#6 ← phi( play_collision::@2/(byte) play_collision::ypos2#5 play_collision::@7/(byte) play_collision::ypos2#7 ) + (byte) play_collision::i#4 ← phi( play_collision::@2/(byte) play_collision::i#1 play_collision::@7/(byte) play_collision::i#6 ) + (byte*) play_collision::piece_gfx#3 ← phi( play_collision::@2/(byte*) play_collision::piece_gfx#1 play_collision::@7/(byte*) play_collision::piece_gfx#5 ) + (byte) play_collision::c#2 ← phi( play_collision::@2/(byte) play_collision::c#3 play_collision::@7/(byte) play_collision::c#4 ) + (byte) play_collision::col#2 ← phi( play_collision::@2/(byte) play_collision::col#6 play_collision::@7/(byte) play_collision::col#7 ) + (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 + (byte) play_collision::c#1 ← (byte) play_collision::c#2 + rangenext(0,3) + (bool~) play_collision::$14 ← (byte) play_collision::c#1 != rangelast(0,3) + if((bool~) play_collision::$14) goto play_collision::@2 + to:play_collision::@17 +play_collision::@8: scope:[play_collision] from play_collision::@2 + (byte) play_collision::xpos#13 ← phi( play_collision::@2/(byte) play_collision::xpos#8 ) + (byte) play_collision::l#10 ← phi( play_collision::@2/(byte) play_collision::l#4 ) + (byte) play_collision::i#10 ← phi( play_collision::@2/(byte) play_collision::i#1 ) + (byte*) play_collision::piece_gfx#9 ← phi( play_collision::@2/(byte*) play_collision::piece_gfx#1 ) + (byte) play_collision::c#8 ← phi( play_collision::@2/(byte) play_collision::c#3 ) + (byte*) play_collision::playfield_line#4 ← phi( play_collision::@2/(byte*) play_collision::playfield_line#5 ) + (byte) play_collision::col#8 ← phi( play_collision::@2/(byte) play_collision::col#6 ) + (byte) play_collision::ypos2#3 ← phi( play_collision::@2/(byte) play_collision::ypos2#5 ) + (byte/signed word/word/dword/signed dword~) play_collision::$4 ← (byte/signed byte/word/signed word/dword/signed dword) 2 * (byte) PLAYFIELD_LINES#0 + (bool~) play_collision::$5 ← (byte) play_collision::ypos2#3 >= (byte/signed word/word/dword/signed dword~) play_collision::$4 + (bool~) play_collision::$6 ← ! (bool~) play_collision::$5 + if((bool~) play_collision::$6) goto play_collision::@4 + to:play_collision::@9 +play_collision::@4: scope:[play_collision] from play_collision::@8 + (byte) play_collision::xpos#12 ← phi( play_collision::@8/(byte) play_collision::xpos#13 ) + (byte) play_collision::l#9 ← phi( play_collision::@8/(byte) play_collision::l#10 ) + (byte) play_collision::ypos2#10 ← phi( play_collision::@8/(byte) play_collision::ypos2#3 ) + (byte) play_collision::i#9 ← phi( play_collision::@8/(byte) play_collision::i#10 ) + (byte*) play_collision::piece_gfx#8 ← phi( play_collision::@8/(byte*) play_collision::piece_gfx#9 ) + (byte) play_collision::c#7 ← phi( play_collision::@8/(byte) play_collision::c#8 ) + (byte*) play_collision::playfield_line#3 ← phi( play_collision::@8/(byte*) play_collision::playfield_line#4 ) + (byte) play_collision::col#3 ← phi( play_collision::@8/(byte) play_collision::col#8 ) + (byte~) play_collision::$7 ← (byte) play_collision::col#3 & (byte/word/signed word/dword/signed dword) 128 + (bool~) play_collision::$8 ← (byte~) play_collision::$7 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) play_collision::$9 ← ! (bool~) play_collision::$8 + if((bool~) play_collision::$9) goto play_collision::@5 + to:play_collision::@11 +play_collision::@9: scope:[play_collision] from play_collision::@8 + (byte) play_collision::return#4 ← (byte) COLLISION_BOTTOM#0 + to:play_collision::@return +play_collision::@return: scope:[play_collision] from play_collision::@11 play_collision::@13 play_collision::@15 play_collision::@18 play_collision::@9 + (byte) play_collision::return#14 ← phi( play_collision::@11/(byte) play_collision::return#6 play_collision::@13/(byte) play_collision::return#7 play_collision::@15/(byte) play_collision::return#8 play_collision::@18/(byte) play_collision::return#9 play_collision::@9/(byte) play_collision::return#4 ) + (byte) play_collision::return#5 ← (byte) play_collision::return#14 + return + to:@return +play_collision::@5: scope:[play_collision] from play_collision::@4 + (byte) play_collision::xpos#11 ← phi( play_collision::@4/(byte) play_collision::xpos#12 ) + (byte) play_collision::l#8 ← phi( play_collision::@4/(byte) play_collision::l#9 ) + (byte) play_collision::ypos2#9 ← phi( play_collision::@4/(byte) play_collision::ypos2#10 ) + (byte) play_collision::i#8 ← phi( play_collision::@4/(byte) play_collision::i#9 ) + (byte*) play_collision::piece_gfx#7 ← phi( play_collision::@4/(byte*) play_collision::piece_gfx#8 ) + (byte) play_collision::c#6 ← phi( play_collision::@4/(byte) play_collision::c#7 ) + (byte*) play_collision::playfield_line#2 ← phi( play_collision::@4/(byte*) play_collision::playfield_line#3 ) + (byte) play_collision::col#4 ← phi( play_collision::@4/(byte) play_collision::col#3 ) + (bool~) play_collision::$10 ← (byte) play_collision::col#4 >= (byte) PLAYFIELD_COLS#0 + (bool~) play_collision::$11 ← ! (bool~) play_collision::$10 + if((bool~) play_collision::$11) goto play_collision::@6 + to:play_collision::@13 +play_collision::@11: scope:[play_collision] from play_collision::@4 + (byte) play_collision::return#6 ← (byte) COLLISION_LEFT#0 + to:play_collision::@return +play_collision::@6: scope:[play_collision] from play_collision::@5 + (byte) play_collision::xpos#10 ← phi( play_collision::@5/(byte) play_collision::xpos#11 ) + (byte) play_collision::l#7 ← phi( play_collision::@5/(byte) play_collision::l#8 ) + (byte) play_collision::ypos2#8 ← phi( play_collision::@5/(byte) play_collision::ypos2#9 ) + (byte) play_collision::i#7 ← phi( play_collision::@5/(byte) play_collision::i#8 ) + (byte*) play_collision::piece_gfx#6 ← phi( play_collision::@5/(byte*) play_collision::piece_gfx#7 ) + (byte) play_collision::c#5 ← phi( play_collision::@5/(byte) play_collision::c#6 ) + (byte) play_collision::col#5 ← phi( play_collision::@5/(byte) play_collision::col#4 ) + (byte*) play_collision::playfield_line#1 ← phi( play_collision::@5/(byte*) play_collision::playfield_line#2 ) + (bool~) play_collision::$12 ← *((byte*) play_collision::playfield_line#1 + (byte) play_collision::col#5) != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) play_collision::$13 ← ! (bool~) play_collision::$12 + if((bool~) play_collision::$13) goto play_collision::@7 + to:play_collision::@15 +play_collision::@13: scope:[play_collision] from play_collision::@5 + (byte) play_collision::return#7 ← (byte) COLLISION_RIGHT#0 + to:play_collision::@return +play_collision::@7: scope:[play_collision] from play_collision::@6 + (byte*) play_collision::playfield_line#7 ← phi( play_collision::@6/(byte*) play_collision::playfield_line#1 ) + (byte) play_collision::xpos#9 ← phi( play_collision::@6/(byte) play_collision::xpos#10 ) + (byte) play_collision::l#5 ← phi( play_collision::@6/(byte) play_collision::l#7 ) + (byte) play_collision::ypos2#7 ← phi( play_collision::@6/(byte) play_collision::ypos2#8 ) + (byte) play_collision::i#6 ← phi( play_collision::@6/(byte) play_collision::i#7 ) + (byte*) play_collision::piece_gfx#5 ← phi( play_collision::@6/(byte*) play_collision::piece_gfx#6 ) + (byte) play_collision::c#4 ← phi( play_collision::@6/(byte) play_collision::c#5 ) + (byte) play_collision::col#7 ← phi( play_collision::@6/(byte) play_collision::col#5 ) + to:play_collision::@3 +play_collision::@15: scope:[play_collision] from play_collision::@6 + (byte) play_collision::return#8 ← (byte) COLLISION_PLAYFIELD#0 + to:play_collision::@return +play_collision::@17: scope:[play_collision] from play_collision::@3 + (byte) play_collision::i#5 ← phi( play_collision::@3/(byte) play_collision::i#4 ) + (byte*) play_collision::piece_gfx#4 ← phi( play_collision::@3/(byte*) play_collision::piece_gfx#3 ) + (byte) play_collision::xpos#6 ← phi( play_collision::@3/(byte) play_collision::xpos#7 ) + (byte) play_collision::l#2 ← phi( play_collision::@3/(byte) play_collision::l#3 ) + (byte) play_collision::ypos2#4 ← phi( play_collision::@3/(byte) play_collision::ypos2#6 ) + (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) play_collision::l#1 ← (byte) play_collision::l#2 + rangenext(0,3) + (bool~) play_collision::$15 ← (byte) play_collision::l#1 != rangelast(0,3) + if((bool~) play_collision::$15) goto play_collision::@1 + to:play_collision::@18 +play_collision::@18: scope:[play_collision] from play_collision::@17 + (byte) play_collision::return#9 ← (byte) COLLISION_NONE#0 + to:play_collision::@return +play_lock_current: scope:[play_lock_current] from play_move_down::@13 + (byte) current_piece_color#45 ← phi( play_move_down::@13/(byte) current_piece_color#43 ) + (byte*) current_piece_gfx#45 ← phi( play_move_down::@13/(byte*) current_piece_gfx#59 ) + (byte) current_xpos#42 ← phi( play_move_down::@13/(byte) current_xpos#59 ) + (byte) current_ypos#18 ← phi( play_move_down::@13/(byte) current_ypos#35 ) + (byte) play_lock_current::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) play_lock_current::$0 ← (byte) current_ypos#18 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) play_lock_current::ypos2#0 ← (byte~) play_lock_current::$0 + (byte) play_lock_current::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:play_lock_current::@1 +play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lock_current::@5 + (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte) play_lock_current::l#0 play_lock_current::@5/(byte) play_lock_current::l#1 ) + (byte) current_piece_color#31 ← phi( play_lock_current/(byte) current_piece_color#45 play_lock_current::@5/(byte) current_piece_color#46 ) + (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte) play_lock_current::i#0 play_lock_current::@5/(byte) play_lock_current::i#5 ) + (byte*) current_piece_gfx#30 ← phi( play_lock_current/(byte*) current_piece_gfx#45 play_lock_current::@5/(byte*) current_piece_gfx#46 ) + (byte) current_xpos#23 ← phi( play_lock_current/(byte) current_xpos#42 play_lock_current::@5/(byte) current_xpos#43 ) + (byte) play_lock_current::ypos2#2 ← phi( play_lock_current/(byte) play_lock_current::ypos2#0 play_lock_current::@5/(byte) play_lock_current::ypos2#1 ) + (byte*) play_lock_current::playfield_line#0 ← *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) + (byte) play_lock_current::col#0 ← (byte) current_xpos#23 + (byte) play_lock_current::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:play_lock_current::@2 +play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@3 + (byte) current_xpos#74 ← phi( play_lock_current::@1/(byte) current_xpos#23 play_lock_current::@3/(byte) current_xpos#60 ) + (byte) play_lock_current::l#4 ← phi( play_lock_current::@1/(byte) play_lock_current::l#6 play_lock_current::@3/(byte) play_lock_current::l#3 ) + (byte) play_lock_current::ypos2#5 ← phi( play_lock_current::@1/(byte) play_lock_current::ypos2#2 play_lock_current::@3/(byte) play_lock_current::ypos2#4 ) + (byte*) play_lock_current::playfield_line#2 ← phi( play_lock_current::@1/(byte*) play_lock_current::playfield_line#0 play_lock_current::@3/(byte*) play_lock_current::playfield_line#3 ) + (byte) current_piece_color#22 ← phi( play_lock_current::@1/(byte) current_piece_color#31 play_lock_current::@3/(byte) current_piece_color#32 ) + (byte) play_lock_current::c#3 ← phi( play_lock_current::@1/(byte) play_lock_current::c#0 play_lock_current::@3/(byte) play_lock_current::c#1 ) + (byte) play_lock_current::col#4 ← phi( play_lock_current::@1/(byte) play_lock_current::col#0 play_lock_current::@3/(byte) play_lock_current::col#1 ) + (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@3/(byte) play_lock_current::i#4 ) + (byte*) current_piece_gfx#16 ← phi( play_lock_current::@1/(byte*) current_piece_gfx#30 play_lock_current::@3/(byte*) current_piece_gfx#31 ) + (bool~) play_lock_current::$1 ← *((byte*) current_piece_gfx#16 + (byte) play_lock_current::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) play_lock_current::$2 ← ! (bool~) play_lock_current::$1 + (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 + if((bool~) play_lock_current::$2) goto play_lock_current::@3 + to:play_lock_current::@4 +play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4 + (byte) current_xpos#60 ← phi( play_lock_current::@2/(byte) current_xpos#74 play_lock_current::@4/(byte) current_xpos#75 ) + (byte*) play_lock_current::playfield_line#3 ← phi( play_lock_current::@2/(byte*) play_lock_current::playfield_line#2 play_lock_current::@4/(byte*) play_lock_current::playfield_line#1 ) + (byte) current_piece_color#32 ← phi( play_lock_current::@2/(byte) current_piece_color#22 play_lock_current::@4/(byte) current_piece_color#12 ) + (byte) play_lock_current::l#3 ← phi( play_lock_current::@2/(byte) play_lock_current::l#4 play_lock_current::@4/(byte) play_lock_current::l#5 ) + (byte) play_lock_current::ypos2#4 ← phi( play_lock_current::@2/(byte) play_lock_current::ypos2#5 play_lock_current::@4/(byte) play_lock_current::ypos2#6 ) + (byte) play_lock_current::i#4 ← phi( play_lock_current::@2/(byte) play_lock_current::i#1 play_lock_current::@4/(byte) play_lock_current::i#6 ) + (byte*) current_piece_gfx#31 ← phi( play_lock_current::@2/(byte*) current_piece_gfx#16 play_lock_current::@4/(byte*) current_piece_gfx#47 ) + (byte) play_lock_current::c#2 ← phi( play_lock_current::@2/(byte) play_lock_current::c#3 play_lock_current::@4/(byte) play_lock_current::c#4 ) + (byte) play_lock_current::col#2 ← phi( play_lock_current::@2/(byte) play_lock_current::col#4 play_lock_current::@4/(byte) play_lock_current::col#3 ) + (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 + (byte) play_lock_current::c#1 ← (byte) play_lock_current::c#2 + rangenext(0,3) + (bool~) play_lock_current::$3 ← (byte) play_lock_current::c#1 != rangelast(0,3) + if((bool~) play_lock_current::$3) goto play_lock_current::@2 + to:play_lock_current::@5 +play_lock_current::@4: scope:[play_lock_current] from play_lock_current::@2 + (byte) current_xpos#75 ← phi( play_lock_current::@2/(byte) current_xpos#74 ) + (byte) play_lock_current::l#5 ← phi( play_lock_current::@2/(byte) play_lock_current::l#4 ) + (byte) play_lock_current::ypos2#6 ← phi( play_lock_current::@2/(byte) play_lock_current::ypos2#5 ) + (byte) play_lock_current::i#6 ← phi( play_lock_current::@2/(byte) play_lock_current::i#1 ) + (byte*) current_piece_gfx#47 ← phi( play_lock_current::@2/(byte*) current_piece_gfx#16 ) + (byte) play_lock_current::c#4 ← phi( play_lock_current::@2/(byte) play_lock_current::c#3 ) + (byte) play_lock_current::col#3 ← phi( play_lock_current::@2/(byte) play_lock_current::col#4 ) + (byte*) play_lock_current::playfield_line#1 ← phi( play_lock_current::@2/(byte*) play_lock_current::playfield_line#2 ) + (byte) current_piece_color#12 ← phi( play_lock_current::@2/(byte) current_piece_color#22 ) + *((byte*) play_lock_current::playfield_line#1 + (byte) play_lock_current::col#3) ← (byte) current_piece_color#12 + to:play_lock_current::@3 +play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3 + (byte) current_piece_color#46 ← phi( play_lock_current::@3/(byte) current_piece_color#32 ) + (byte) play_lock_current::i#5 ← phi( play_lock_current::@3/(byte) play_lock_current::i#4 ) + (byte*) current_piece_gfx#46 ← phi( play_lock_current::@3/(byte*) current_piece_gfx#31 ) + (byte) current_xpos#43 ← phi( play_lock_current::@3/(byte) current_xpos#60 ) + (byte) play_lock_current::l#2 ← phi( play_lock_current::@3/(byte) play_lock_current::l#3 ) + (byte) play_lock_current::ypos2#3 ← phi( play_lock_current::@3/(byte) play_lock_current::ypos2#4 ) + (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) play_lock_current::l#1 ← (byte) play_lock_current::l#2 + rangenext(0,3) + (bool~) play_lock_current::$4 ← (byte) play_lock_current::l#1 != rangelast(0,3) + if((bool~) play_lock_current::$4) goto play_lock_current::@1 + to:play_lock_current::@return +play_lock_current::@return: scope:[play_lock_current] from play_lock_current::@5 + return + to:@return +play_spawn_current: scope:[play_spawn_current] from main::@23 play_move_down::@20 + (byte) play_spawn_current::piece_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + to:play_spawn_current::@1 +play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current play_spawn_current::@7 + (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current/(byte) play_spawn_current::piece_idx#0 play_spawn_current::@7/(byte) play_spawn_current::piece_idx#1 ) + (bool~) play_spawn_current::$0 ← (byte) play_spawn_current::piece_idx#2 == (byte/signed byte/word/signed word/dword/signed dword) 7 + if((bool~) play_spawn_current::$0) goto play_spawn_current::@2 + to:play_spawn_current::@3 +play_spawn_current::@2: scope:[play_spawn_current] from play_spawn_current::@1 + call sid_rnd + (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#1 + to:play_spawn_current::@7 +play_spawn_current::@7: scope:[play_spawn_current] from play_spawn_current::@2 + (byte) sid_rnd::return#4 ← phi( play_spawn_current::@2/(byte) sid_rnd::return#2 ) + (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#4 + (byte~) play_spawn_current::$2 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$2 + to:play_spawn_current::@1 +play_spawn_current::@3: scope:[play_spawn_current] from play_spawn_current::@1 + (byte) play_spawn_current::piece_idx#3 ← phi( play_spawn_current::@1/(byte) play_spawn_current::piece_idx#2 ) + (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte*) current_piece#3 ← ((byte*)) *((word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte) current_orientation#5 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*~) play_spawn_current::$4 ← (byte*) current_piece#3 + (byte) current_orientation#5 + (byte*) current_piece_gfx#5 ← (byte*~) play_spawn_current::$4 + (byte) current_xpos#6 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) current_ypos#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) current_piece_color#3 ← *((byte[]) PIECES_COLORS#0 + (byte) play_spawn_current::piece_idx#3) + to:play_spawn_current::@return +play_spawn_current::@return: scope:[play_spawn_current] from play_spawn_current::@3 + (byte) current_piece_color#13 ← phi( play_spawn_current::@3/(byte) current_piece_color#3 ) + (byte) current_ypos#19 ← phi( play_spawn_current::@3/(byte) current_ypos#4 ) + (byte) current_xpos#24 ← phi( play_spawn_current::@3/(byte) current_xpos#6 ) + (byte*) current_piece_gfx#17 ← phi( play_spawn_current::@3/(byte*) current_piece_gfx#5 ) + (byte) current_orientation#20 ← phi( play_spawn_current::@3/(byte) current_orientation#5 ) + (byte*) current_piece#13 ← phi( play_spawn_current::@3/(byte*) current_piece#3 ) + (byte*) current_piece#4 ← (byte*) current_piece#13 + (byte) current_orientation#6 ← (byte) current_orientation#20 + (byte*) current_piece_gfx#6 ← (byte*) current_piece_gfx#17 + (byte) current_xpos#7 ← (byte) current_xpos#24 + (byte) current_ypos#5 ← (byte) current_ypos#19 + (byte) current_piece_color#4 ← (byte) current_piece_color#13 + return + to:@return +play_remove_lines: scope:[play_remove_lines] from play_move_down::@19 + (byte~) play_remove_lines::$0 ← (byte) PLAYFIELD_LINES#0 * (byte) PLAYFIELD_COLS#0 + (byte/signed word/word/dword/signed dword~) play_remove_lines::$1 ← (byte~) play_remove_lines::$0 - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) play_remove_lines::r#0 ← (byte/signed word/word/dword/signed dword~) play_remove_lines::$1 + (byte~) play_remove_lines::$2 ← (byte) PLAYFIELD_LINES#0 * (byte) PLAYFIELD_COLS#0 + (byte/signed word/word/dword/signed dword~) play_remove_lines::$3 ← (byte~) play_remove_lines::$2 - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) play_remove_lines::w#0 ← (byte/signed word/word/dword/signed dword~) play_remove_lines::$3 + (byte/signed word/word/dword/signed dword~) play_remove_lines::$4 ← (byte) PLAYFIELD_LINES#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) play_remove_lines::y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:play_remove_lines::@1 +play_remove_lines::@1: scope:[play_remove_lines] from play_remove_lines play_remove_lines::@4 + (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte) play_remove_lines::y#0 play_remove_lines::@4/(byte) play_remove_lines::y#1 ) + (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(byte) play_remove_lines::w#0 play_remove_lines::@4/(byte) play_remove_lines::w#11 ) + (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(byte) play_remove_lines::r#0 play_remove_lines::@4/(byte) play_remove_lines::r#5 ) + (byte) play_remove_lines::full#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte/signed word/word/dword/signed dword~) play_remove_lines::$5 ← (byte) PLAYFIELD_COLS#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) play_remove_lines::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:play_remove_lines::@2 +play_remove_lines::@2: scope:[play_remove_lines] from play_remove_lines::@1 play_remove_lines::@3 + (byte) play_remove_lines::y#6 ← phi( play_remove_lines::@1/(byte) play_remove_lines::y#8 play_remove_lines::@3/(byte) play_remove_lines::y#5 ) + (byte) play_remove_lines::full#4 ← phi( play_remove_lines::@1/(byte) play_remove_lines::full#0 play_remove_lines::@3/(byte) play_remove_lines::full#3 ) + (byte) play_remove_lines::x#3 ← phi( play_remove_lines::@1/(byte) play_remove_lines::x#0 play_remove_lines::@3/(byte) play_remove_lines::x#1 ) + (byte) play_remove_lines::w#8 ← phi( play_remove_lines::@1/(byte) play_remove_lines::w#12 play_remove_lines::@3/(byte) play_remove_lines::w#1 ) + (byte) play_remove_lines::r#2 ← phi( play_remove_lines::@1/(byte) play_remove_lines::r#3 play_remove_lines::@3/(byte) play_remove_lines::r#4 ) + (byte) play_remove_lines::c#0 ← *((byte[$2]) playfield#0 + (byte) play_remove_lines::r#2) + (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 + (bool~) play_remove_lines::$6 ← (byte) play_remove_lines::c#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) play_remove_lines::$7 ← ! (bool~) play_remove_lines::$6 + if((bool~) play_remove_lines::$7) goto play_remove_lines::@3 + to:play_remove_lines::@8 +play_remove_lines::@3: scope:[play_remove_lines] from play_remove_lines::@2 play_remove_lines::@8 + (byte) play_remove_lines::y#5 ← phi( play_remove_lines::@2/(byte) play_remove_lines::y#6 play_remove_lines::@8/(byte) play_remove_lines::y#7 ) + (byte) play_remove_lines::full#3 ← phi( play_remove_lines::@2/(byte) play_remove_lines::full#4 play_remove_lines::@8/(byte) play_remove_lines::full#1 ) + (byte) play_remove_lines::r#4 ← phi( play_remove_lines::@2/(byte) play_remove_lines::r#1 play_remove_lines::@8/(byte) play_remove_lines::r#6 ) + (byte) play_remove_lines::x#2 ← phi( play_remove_lines::@2/(byte) play_remove_lines::x#3 play_remove_lines::@8/(byte) play_remove_lines::x#4 ) + (byte) play_remove_lines::w#4 ← phi( play_remove_lines::@2/(byte) play_remove_lines::w#8 play_remove_lines::@8/(byte) play_remove_lines::w#9 ) + (byte) play_remove_lines::c#1 ← phi( play_remove_lines::@2/(byte) play_remove_lines::c#0 play_remove_lines::@8/(byte) play_remove_lines::c#2 ) + *((byte[$2]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#1 + (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 + (byte) play_remove_lines::x#1 ← (byte) play_remove_lines::x#2 + rangenext(0,play_remove_lines::$5) + (bool~) play_remove_lines::$8 ← (byte) play_remove_lines::x#1 != rangelast(0,play_remove_lines::$5) + if((bool~) play_remove_lines::$8) goto play_remove_lines::@2 + to:play_remove_lines::@9 +play_remove_lines::@8: scope:[play_remove_lines] from play_remove_lines::@2 + (byte) play_remove_lines::y#7 ← phi( play_remove_lines::@2/(byte) play_remove_lines::y#6 ) + (byte) play_remove_lines::r#6 ← phi( play_remove_lines::@2/(byte) play_remove_lines::r#1 ) + (byte) play_remove_lines::x#4 ← phi( play_remove_lines::@2/(byte) play_remove_lines::x#3 ) + (byte) play_remove_lines::w#9 ← phi( play_remove_lines::@2/(byte) play_remove_lines::w#8 ) + (byte) play_remove_lines::c#2 ← phi( play_remove_lines::@2/(byte) play_remove_lines::c#0 ) + (byte) play_remove_lines::full#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:play_remove_lines::@3 +play_remove_lines::@9: scope:[play_remove_lines] from play_remove_lines::@3 + (byte) play_remove_lines::r#8 ← phi( play_remove_lines::@3/(byte) play_remove_lines::r#4 ) + (byte) play_remove_lines::w#10 ← phi( play_remove_lines::@3/(byte) play_remove_lines::w#1 ) + (byte) play_remove_lines::y#4 ← phi( play_remove_lines::@3/(byte) play_remove_lines::y#5 ) + (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@3/(byte) play_remove_lines::full#3 ) + (bool~) play_remove_lines::$9 ← (byte) play_remove_lines::full#2 == (byte/signed byte/word/signed word/dword/signed dword) 1 + (bool~) play_remove_lines::$10 ← ! (bool~) play_remove_lines::$9 + if((bool~) play_remove_lines::$10) goto play_remove_lines::@4 + to:play_remove_lines::@10 +play_remove_lines::@4: scope:[play_remove_lines] from play_remove_lines::@10 play_remove_lines::@9 + (byte) play_remove_lines::r#5 ← phi( play_remove_lines::@10/(byte) play_remove_lines::r#7 play_remove_lines::@9/(byte) play_remove_lines::r#8 ) + (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@10/(byte) play_remove_lines::w#2 play_remove_lines::@9/(byte) play_remove_lines::w#10 ) + (byte) play_remove_lines::y#2 ← phi( play_remove_lines::@10/(byte) play_remove_lines::y#3 play_remove_lines::@9/(byte) play_remove_lines::y#4 ) + (byte) play_remove_lines::y#1 ← (byte) play_remove_lines::y#2 + rangenext(0,play_remove_lines::$4) + (bool~) play_remove_lines::$12 ← (byte) play_remove_lines::y#1 != rangelast(0,play_remove_lines::$4) + if((bool~) play_remove_lines::$12) goto play_remove_lines::@1 + to:play_remove_lines::@5 +play_remove_lines::@10: scope:[play_remove_lines] from play_remove_lines::@9 + (byte) play_remove_lines::r#7 ← phi( play_remove_lines::@9/(byte) play_remove_lines::r#8 ) + (byte) play_remove_lines::y#3 ← phi( play_remove_lines::@9/(byte) play_remove_lines::y#4 ) + (byte) play_remove_lines::w#5 ← phi( play_remove_lines::@9/(byte) play_remove_lines::w#10 ) + (byte~) play_remove_lines::$11 ← (byte) play_remove_lines::w#5 + (byte) PLAYFIELD_COLS#0 + (byte) play_remove_lines::w#2 ← (byte~) play_remove_lines::$11 + to:play_remove_lines::@4 +play_remove_lines::@5: scope:[play_remove_lines] from play_remove_lines::@4 play_remove_lines::@6 + (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#11 play_remove_lines::@6/(byte) play_remove_lines::w#3 ) + (bool~) play_remove_lines::$13 ← (byte) play_remove_lines::w#6 != (byte/word/signed word/dword/signed dword) 255 + if((bool~) play_remove_lines::$13) goto play_remove_lines::@6 + to:play_remove_lines::@return +play_remove_lines::@6: scope:[play_remove_lines] from play_remove_lines::@5 + (byte) play_remove_lines::w#7 ← phi( play_remove_lines::@5/(byte) play_remove_lines::w#6 ) + *((byte[$2]) playfield#0 + (byte) play_remove_lines::w#7) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#7 + to:play_remove_lines::@5 +play_remove_lines::@return: scope:[play_remove_lines] from play_remove_lines::@5 + return + to:@return +play_init: scope:[play_init] from main::@22 + (byte) play_init::idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*) play_init::pli#0 ← (byte[$2]) playfield#0 + (byte/signed word/word/dword/signed dword~) play_init::$0 ← (byte) PLAYFIELD_LINES#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) play_init::j#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:play_init::@1 +play_init::@1: scope:[play_init] from play_init play_init::@1 + (byte) play_init::idx#2 ← phi( play_init/(byte) play_init::idx#0 play_init::@1/(byte) play_init::idx#1 ) + (byte*) play_init::pli#2 ← phi( play_init/(byte*) play_init::pli#0 play_init::@1/(byte*) play_init::pli#1 ) + (byte) play_init::j#2 ← phi( play_init/(byte) play_init::j#0 play_init::@1/(byte) play_init::j#1 ) + (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 + *((byte[$25]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 + (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (byte) PLAYFIELD_COLS#0 + (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (byte) PLAYFIELD_COLS#0 + (byte) play_init::j#1 ← (byte) play_init::j#2 + rangenext(0,play_init::$0) + (bool~) play_init::$2 ← (byte) play_init::j#1 != rangelast(0,play_init::$0) + if((bool~) play_init::$2) goto play_init::@1 + to:play_init::@2 +play_init::@2: scope:[play_init] from play_init::@1 + (byte~) play_init::$3 ← (byte) PLAYFIELD_COLS#0 * (byte) PLAYFIELD_LINES#0 + *((byte[$25]) playfield_lines_idx#0 + (byte) PLAYFIELD_LINES#0) ← (byte~) play_init::$3 + to:play_init::@return +play_init::@return: scope:[play_init] from play_init::@2 + return + to:@return +main: scope:[main] from @26 + (byte) current_movedown_counter#45 ← phi( @26/(byte) current_movedown_counter#20 ) + (byte) keyboard_modifiers#52 ← phi( @26/(byte) keyboard_modifiers#25 ) + (byte) keyboard_events_size#70 ← phi( @26/(byte) keyboard_events_size#28 ) + (byte) current_piece_color#58 ← phi( @26/(byte) current_piece_color#26 ) + (byte) current_ypos#62 ← phi( @26/(byte) current_ypos#39 ) + (byte) current_xpos#85 ← phi( @26/(byte) current_xpos#47 ) + (byte*) current_piece_gfx#74 ← phi( @26/(byte*) current_piece_gfx#36 ) + (byte) current_orientation#63 ← phi( @26/(byte) current_orientation#40 ) + (byte*) current_piece#57 ← phi( @26/(byte*) current_piece#29 ) + call sid_rnd_init + to:main::@21 +main::@21: scope:[main] from main + (byte) current_movedown_counter#44 ← phi( main/(byte) current_movedown_counter#45 ) + (byte) keyboard_modifiers#51 ← phi( main/(byte) keyboard_modifiers#52 ) + (byte) keyboard_events_size#67 ← phi( main/(byte) keyboard_events_size#70 ) + (byte) current_piece_color#47 ← phi( main/(byte) current_piece_color#58 ) + (byte) current_ypos#56 ← phi( main/(byte) current_ypos#62 ) + (byte) current_xpos#76 ← phi( main/(byte) current_xpos#85 ) + (byte*) current_piece_gfx#63 ← phi( main/(byte*) current_piece_gfx#74 ) + (byte) current_orientation#57 ← phi( main/(byte) current_orientation#63 ) + (byte*) current_piece#48 ← phi( main/(byte*) current_piece#57 ) + asm { sei } + call render_init + to:main::@22 +main::@22: scope:[main] from main::@21 + (byte) current_movedown_counter#41 ← phi( main::@21/(byte) current_movedown_counter#44 ) + (byte) keyboard_modifiers#49 ← phi( main::@21/(byte) keyboard_modifiers#51 ) + (byte) keyboard_events_size#65 ← phi( main::@21/(byte) keyboard_events_size#67 ) + (byte) current_piece_color#33 ← phi( main::@21/(byte) current_piece_color#47 ) + (byte) current_ypos#45 ← phi( main::@21/(byte) current_ypos#56 ) + (byte) current_xpos#61 ← phi( main::@21/(byte) current_xpos#76 ) + (byte*) current_piece_gfx#48 ← phi( main::@21/(byte*) current_piece_gfx#63 ) + (byte) current_orientation#46 ← phi( main::@21/(byte) current_orientation#57 ) + (byte*) current_piece#37 ← phi( main::@21/(byte*) current_piece#48 ) + call play_init + to:main::@23 +main::@23: scope:[main] from main::@22 + (byte) current_movedown_counter#37 ← phi( main::@22/(byte) current_movedown_counter#41 ) + (byte) keyboard_modifiers#46 ← phi( main::@22/(byte) keyboard_modifiers#49 ) + (byte) keyboard_events_size#58 ← phi( main::@22/(byte) keyboard_events_size#65 ) + (byte) current_piece_color#23 ← phi( main::@22/(byte) current_piece_color#33 ) + (byte) current_ypos#36 ← phi( main::@22/(byte) current_ypos#45 ) + (byte) current_xpos#44 ← phi( main::@22/(byte) current_xpos#61 ) + (byte*) current_piece_gfx#32 ← phi( main::@22/(byte*) current_piece_gfx#48 ) + (byte) current_orientation#36 ← phi( main::@22/(byte) current_orientation#46 ) + (byte*) current_piece#26 ← phi( main::@22/(byte*) current_piece#37 ) + call play_spawn_current + to:main::@24 +main::@24: scope:[main] from main::@23 + (byte) current_movedown_counter#33 ← phi( main::@23/(byte) current_movedown_counter#37 ) + (byte) keyboard_modifiers#40 ← phi( main::@23/(byte) keyboard_modifiers#46 ) + (byte) keyboard_events_size#49 ← phi( main::@23/(byte) keyboard_events_size#58 ) + (byte) current_piece_color#14 ← phi( main::@23/(byte) current_piece_color#4 ) + (byte) current_ypos#20 ← phi( main::@23/(byte) current_ypos#5 ) + (byte) current_xpos#25 ← phi( main::@23/(byte) current_xpos#7 ) + (byte*) current_piece_gfx#18 ← phi( main::@23/(byte*) current_piece_gfx#6 ) + (byte) current_orientation#21 ← phi( main::@23/(byte) current_orientation#6 ) + (byte*) current_piece#14 ← phi( main::@23/(byte*) current_piece#4 ) + (byte*) current_piece#5 ← (byte*) current_piece#14 + (byte) current_orientation#7 ← (byte) current_orientation#21 + (byte*) current_piece_gfx#7 ← (byte*) current_piece_gfx#18 + (byte) current_xpos#8 ← (byte) current_xpos#25 + (byte) current_ypos#6 ← (byte) current_ypos#20 + (byte) current_piece_color#5 ← (byte) current_piece_color#14 + call render_playfield + to:main::@25 +main::@25: scope:[main] from main::@24 + (byte) current_movedown_counter#29 ← phi( main::@24/(byte) current_movedown_counter#33 ) + (byte) keyboard_modifiers#34 ← phi( main::@24/(byte) keyboard_modifiers#40 ) + (byte) keyboard_events_size#40 ← phi( main::@24/(byte) keyboard_events_size#49 ) + (byte) current_piece_color#48 ← phi( main::@24/(byte) current_piece_color#5 ) + (byte*) current_piece_gfx#64 ← phi( main::@24/(byte*) current_piece_gfx#7 ) + (byte) current_orientation#58 ← phi( main::@24/(byte) current_orientation#7 ) + (byte*) current_piece#49 ← phi( main::@24/(byte*) current_piece#5 ) + (byte) current_xpos#66 ← phi( main::@24/(byte) current_xpos#8 ) + (byte) current_ypos#24 ← phi( main::@24/(byte) current_ypos#6 ) + call render_current + to:main::@26 +main::@26: scope:[main] from main::@25 + (byte) current_movedown_counter#24 ← phi( main::@25/(byte) current_movedown_counter#29 ) + (byte) keyboard_modifiers#30 ← phi( main::@25/(byte) keyboard_modifiers#34 ) + (byte) keyboard_events_size#33 ← phi( main::@25/(byte) keyboard_events_size#40 ) + (byte) current_piece_color#35 ← phi( main::@25/(byte) current_piece_color#48 ) + (byte) current_ypos#47 ← phi( main::@25/(byte) current_ypos#24 ) + (byte) current_xpos#63 ← phi( main::@25/(byte) current_xpos#66 ) + (byte*) current_piece_gfx#50 ← phi( main::@25/(byte*) current_piece_gfx#64 ) + (byte) current_orientation#48 ← phi( main::@25/(byte) current_orientation#58 ) + (byte*) current_piece#39 ← phi( main::@25/(byte*) current_piece#49 ) + to:main::@1 +main::@1: scope:[main] from main::@10 main::@26 + (byte) current_movedown_counter#19 ← phi( main::@10/(byte) current_movedown_counter#23 main::@26/(byte) current_movedown_counter#24 ) + (byte) keyboard_modifiers#24 ← phi( main::@10/(byte) keyboard_modifiers#29 main::@26/(byte) keyboard_modifiers#30 ) + (byte) keyboard_events_size#27 ← phi( main::@10/(byte) keyboard_events_size#32 main::@26/(byte) keyboard_events_size#33 ) + (byte) current_piece_color#25 ← phi( main::@10/(byte) current_piece_color#34 main::@26/(byte) current_piece_color#35 ) + (byte) current_ypos#38 ← phi( main::@10/(byte) current_ypos#46 main::@26/(byte) current_ypos#47 ) + (byte) current_xpos#46 ← phi( main::@10/(byte) current_xpos#62 main::@26/(byte) current_xpos#63 ) + (byte*) current_piece_gfx#35 ← phi( main::@10/(byte*) current_piece_gfx#49 main::@26/(byte*) current_piece_gfx#50 ) + (byte) current_orientation#39 ← phi( main::@10/(byte) current_orientation#47 main::@26/(byte) current_orientation#48 ) + (byte*) current_piece#28 ← phi( main::@10/(byte*) current_piece#38 main::@26/(byte*) current_piece#39 ) + if(true) goto main::@2 + to:main::@return +main::@2: scope:[main] from main::@1 + (byte) current_piece_color#71 ← phi( main::@1/(byte) current_piece_color#25 ) + (byte) current_xpos#93 ← phi( main::@1/(byte) current_xpos#46 ) + (byte*) current_piece_gfx#83 ← phi( main::@1/(byte*) current_piece_gfx#35 ) + (byte) current_orientation#71 ← phi( main::@1/(byte) current_orientation#39 ) + (byte*) current_piece#67 ← phi( main::@1/(byte*) current_piece#28 ) + (byte) current_ypos#68 ← phi( main::@1/(byte) current_ypos#38 ) + (byte) current_movedown_counter#42 ← phi( main::@1/(byte) current_movedown_counter#19 ) + (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_piece_color#66 ← phi( main::@2/(byte) current_piece_color#71 main::@5/(byte) current_piece_color#72 ) + (byte) current_xpos#91 ← phi( main::@2/(byte) current_xpos#93 main::@5/(byte) current_xpos#94 ) + (byte*) current_piece_gfx#78 ← phi( main::@2/(byte*) current_piece_gfx#83 main::@5/(byte*) current_piece_gfx#84 ) + (byte) current_orientation#68 ← phi( main::@2/(byte) current_orientation#71 main::@5/(byte) current_orientation#72 ) + (byte*) current_piece#62 ← phi( main::@2/(byte*) current_piece#67 main::@5/(byte*) current_piece#68 ) + (byte) current_ypos#66 ← phi( main::@2/(byte) current_ypos#68 main::@5/(byte) current_ypos#69 ) + (byte) current_movedown_counter#38 ← phi( main::@2/(byte) current_movedown_counter#42 main::@5/(byte) current_movedown_counter#43 ) + (byte) keyboard_modifiers#35 ← phi( main::@2/(byte) keyboard_modifiers#41 main::@5/(byte) keyboard_modifiers#42 ) + (byte) keyboard_events_size#41 ← phi( main::@2/(byte) keyboard_events_size#50 main::@5/(byte) keyboard_events_size#51 ) + (bool~) main::$6 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 255 + if((bool~) main::$6) goto main::@5 + to:main::@7 +main::@5: scope:[main] from main::@4 + (byte) current_piece_color#72 ← phi( main::@4/(byte) current_piece_color#66 ) + (byte) current_xpos#94 ← phi( main::@4/(byte) current_xpos#91 ) + (byte*) current_piece_gfx#84 ← phi( main::@4/(byte*) current_piece_gfx#78 ) + (byte) current_orientation#72 ← phi( main::@4/(byte) current_orientation#68 ) + (byte*) current_piece#68 ← phi( main::@4/(byte*) current_piece#62 ) + (byte) current_ypos#69 ← phi( main::@4/(byte) current_ypos#66 ) + (byte) current_movedown_counter#43 ← phi( main::@4/(byte) current_movedown_counter#38 ) + (byte) keyboard_modifiers#42 ← phi( main::@4/(byte) keyboard_modifiers#35 ) + (byte) keyboard_events_size#51 ← phi( main::@4/(byte) keyboard_events_size#41 ) + to:main::@4 +main::@7: scope:[main] from main::@4 main::@8 + (byte) current_piece_color#59 ← phi( main::@4/(byte) current_piece_color#66 main::@8/(byte) current_piece_color#67 ) + (byte) current_xpos#86 ← phi( main::@4/(byte) current_xpos#91 main::@8/(byte) current_xpos#92 ) + (byte*) current_piece_gfx#75 ← phi( main::@4/(byte*) current_piece_gfx#78 main::@8/(byte*) current_piece_gfx#79 ) + (byte) current_orientation#64 ← phi( main::@4/(byte) current_orientation#68 main::@8/(byte) current_orientation#69 ) + (byte*) current_piece#58 ← phi( main::@4/(byte*) current_piece#62 main::@8/(byte*) current_piece#63 ) + (byte) current_ypos#63 ← phi( main::@4/(byte) current_ypos#66 main::@8/(byte) current_ypos#67 ) + (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#35 main::@8/(byte) keyboard_modifiers#36 ) + (byte) keyboard_events_size#34 ← phi( main::@4/(byte) keyboard_events_size#41 main::@8/(byte) keyboard_events_size#42 ) + (bool~) main::$7 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 254 + if((bool~) main::$7) goto main::@8 + to:main::@9 +main::@8: scope:[main] from main::@7 + (byte) current_piece_color#67 ← phi( main::@7/(byte) current_piece_color#59 ) + (byte) current_xpos#92 ← phi( main::@7/(byte) current_xpos#86 ) + (byte*) current_piece_gfx#79 ← phi( main::@7/(byte*) current_piece_gfx#75 ) + (byte) current_orientation#69 ← phi( main::@7/(byte) current_orientation#64 ) + (byte*) current_piece#63 ← phi( main::@7/(byte*) current_piece#58 ) + (byte) current_ypos#67 ← phi( main::@7/(byte) current_ypos#63 ) + (byte) current_movedown_counter#39 ← phi( main::@7/(byte) current_movedown_counter#34 ) + (byte) keyboard_modifiers#36 ← phi( main::@7/(byte) keyboard_modifiers#31 ) + (byte) keyboard_events_size#42 ← phi( main::@7/(byte) keyboard_events_size#34 ) + to:main::@7 +main::@9: scope:[main] from main::@7 + (byte) current_piece_color#49 ← phi( main::@7/(byte) current_piece_color#59 ) + (byte) current_xpos#77 ← phi( main::@7/(byte) current_xpos#86 ) + (byte*) current_piece_gfx#65 ← phi( main::@7/(byte*) current_piece_gfx#75 ) + (byte) current_orientation#59 ← phi( main::@7/(byte) current_orientation#64 ) + (byte*) current_piece#50 ← phi( main::@7/(byte*) current_piece#58 ) + (byte) current_ypos#57 ← phi( main::@7/(byte) current_ypos#63 ) + (byte) current_movedown_counter#30 ← 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::@27 +main::@27: scope:[main] from main::@9 + (byte) current_piece_color#36 ← phi( main::@9/(byte) current_piece_color#49 ) + (byte) current_xpos#64 ← phi( main::@9/(byte) current_xpos#77 ) + (byte*) current_piece_gfx#51 ← phi( main::@9/(byte*) current_piece_gfx#65 ) + (byte) current_orientation#49 ← phi( main::@9/(byte) current_orientation#59 ) + (byte*) current_piece#40 ← phi( main::@9/(byte*) current_piece#50 ) + (byte) current_ypos#48 ← phi( main::@9/(byte) current_ypos#57 ) + (byte) current_movedown_counter#25 ← phi( main::@9/(byte) current_movedown_counter#30 ) + (byte) keyboard_modifiers#15 ← phi( main::@9/(byte) keyboard_modifiers#6 ) + (byte) keyboard_events_size#17 ← phi( main::@9/(byte) keyboard_events_size#3 ) + (byte) keyboard_events_size#6 ← (byte) keyboard_events_size#17 + (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::@28 +main::@28: scope:[main] from main::@27 + (byte) keyboard_modifiers#50 ← phi( main::@27/(byte) keyboard_modifiers#7 ) + (byte) current_piece_color#24 ← phi( main::@27/(byte) current_piece_color#36 ) + (byte) current_xpos#45 ← phi( main::@27/(byte) current_xpos#64 ) + (byte*) current_piece_gfx#33 ← phi( main::@27/(byte*) current_piece_gfx#51 ) + (byte) current_orientation#37 ← phi( main::@27/(byte) current_orientation#49 ) + (byte*) current_piece#27 ← phi( main::@27/(byte*) current_piece#40 ) + (byte) current_ypos#37 ← phi( main::@27/(byte) current_ypos#48 ) + (byte) current_movedown_counter#14 ← phi( main::@27/(byte) current_movedown_counter#25 ) + (byte) keyboard_events_size#18 ← phi( main::@27/(byte) keyboard_events_size#5 ) + (byte) keyboard_event_get::return#5 ← phi( main::@27/(byte) keyboard_event_get::return#3 ) + (byte~) main::$9 ← (byte) keyboard_event_get::return#5 + (byte) keyboard_events_size#7 ← (byte) keyboard_events_size#18 + (byte) main::key_event#0 ← (byte~) main::$9 + (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#3 ← (byte) play_move_down::return#2 + to:main::@29 +main::@29: scope:[main] from main::@28 + (byte) keyboard_modifiers#47 ← phi( main::@28/(byte) keyboard_modifiers#50 ) + (byte) keyboard_events_size#59 ← phi( main::@28/(byte) keyboard_events_size#7 ) + (byte) main::key_event#1 ← phi( main::@28/(byte) main::key_event#0 ) + (byte) main::render#4 ← phi( main::@28/(byte) main::render#0 ) + (byte) current_piece_color#15 ← phi( main::@28/(byte) current_piece_color#2 ) + (byte) current_xpos#26 ← phi( main::@28/(byte) current_xpos#2 ) + (byte*) current_piece_gfx#19 ← phi( main::@28/(byte*) current_piece_gfx#2 ) + (byte) current_orientation#22 ← phi( main::@28/(byte) current_orientation#2 ) + (byte*) current_piece#15 ← phi( main::@28/(byte*) current_piece#2 ) + (byte) current_ypos#21 ← phi( main::@28/(byte) current_ypos#3 ) + (byte) current_movedown_counter#11 ← phi( main::@28/(byte) current_movedown_counter#3 ) + (byte) play_move_down::return#5 ← phi( main::@28/(byte) play_move_down::return#3 ) + (byte~) main::$10 ← (byte) play_move_down::return#5 + (byte) current_movedown_counter#4 ← (byte) current_movedown_counter#11 + (byte) current_ypos#7 ← (byte) current_ypos#21 + (byte*) current_piece#6 ← (byte*) current_piece#15 + (byte) current_orientation#8 ← (byte) current_orientation#22 + (byte*) current_piece_gfx#8 ← (byte*) current_piece_gfx#19 + (byte) current_xpos#9 ← (byte) current_xpos#26 + (byte) current_piece_color#6 ← (byte) current_piece_color#15 + (byte) main::render#1 ← (byte) main::render#4 + (byte~) main::$10 + (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#1 + call play_move_leftright + (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 + to:main::@30 +main::@30: scope:[main] from main::@29 + (byte) current_movedown_counter#35 ← phi( main::@29/(byte) current_movedown_counter#4 ) + (byte) keyboard_modifiers#43 ← phi( main::@29/(byte) keyboard_modifiers#47 ) + (byte) keyboard_events_size#52 ← phi( main::@29/(byte) keyboard_events_size#59 ) + (byte) current_piece_color#60 ← phi( main::@29/(byte) current_piece_color#6 ) + (byte*) current_piece#56 ← phi( main::@29/(byte*) current_piece#6 ) + (byte) current_ypos#54 ← phi( main::@29/(byte) current_ypos#7 ) + (byte*) current_piece_gfx#34 ← phi( main::@29/(byte*) current_piece_gfx#8 ) + (byte) current_orientation#38 ← phi( main::@29/(byte) current_orientation#8 ) + (byte) main::key_event#2 ← phi( main::@29/(byte) main::key_event#1 ) + (byte) main::render#5 ← phi( main::@29/(byte) main::render#1 ) + (byte) current_xpos#27 ← phi( main::@29/(byte) current_xpos#4 ) + (byte) play_move_leftright::return#6 ← phi( main::@29/(byte) play_move_leftright::return#4 ) + (byte~) main::$11 ← (byte) play_move_leftright::return#6 + (byte) current_xpos#10 ← (byte) current_xpos#27 + (byte) main::render#2 ← (byte) main::render#5 + (byte~) main::$11 + (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#2 + call play_move_rotate + (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 + to:main::@31 +main::@31: scope:[main] from main::@30 + (byte) current_movedown_counter#31 ← phi( main::@30/(byte) current_movedown_counter#35 ) + (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_piece_color#50 ← phi( main::@30/(byte) current_piece_color#60 ) + (byte) current_ypos#58 ← phi( main::@30/(byte) current_ypos#54 ) + (byte) current_xpos#78 ← phi( main::@30/(byte) current_xpos#10 ) + (byte*) current_piece#51 ← phi( main::@30/(byte*) current_piece#56 ) + (byte) main::render#6 ← phi( main::@30/(byte) main::render#2 ) + (byte*) current_piece_gfx#20 ← phi( main::@30/(byte*) current_piece_gfx#3 ) + (byte) current_orientation#23 ← phi( main::@30/(byte) current_orientation#3 ) + (byte) play_move_rotate::return#6 ← phi( main::@30/(byte) play_move_rotate::return#4 ) + (byte~) main::$12 ← (byte) play_move_rotate::return#6 + (byte) current_orientation#9 ← (byte) current_orientation#23 + (byte*) current_piece_gfx#9 ← (byte*) current_piece_gfx#20 + (byte) main::render#3 ← (byte) main::render#6 + (byte~) main::$12 + (bool~) main::$13 ← (byte) main::render#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) main::$14 ← ! (bool~) main::$13 + if((bool~) main::$14) goto main::@10 + to:main::@19 +main::@10: scope:[main] from main::@31 main::@33 + (byte) current_movedown_counter#23 ← phi( main::@31/(byte) current_movedown_counter#31 main::@33/(byte) current_movedown_counter#32 ) + (byte) keyboard_modifiers#29 ← phi( main::@31/(byte) keyboard_modifiers#37 main::@33/(byte) keyboard_modifiers#38 ) + (byte) keyboard_events_size#32 ← phi( main::@31/(byte) keyboard_events_size#43 main::@33/(byte) keyboard_events_size#44 ) + (byte) current_piece_color#34 ← phi( main::@31/(byte) current_piece_color#50 main::@33/(byte) current_piece_color#51 ) + (byte) current_ypos#46 ← phi( main::@31/(byte) current_ypos#58 main::@33/(byte) current_ypos#59 ) + (byte) current_xpos#62 ← phi( main::@31/(byte) current_xpos#78 main::@33/(byte) current_xpos#79 ) + (byte*) current_piece_gfx#49 ← phi( main::@31/(byte*) current_piece_gfx#9 main::@33/(byte*) current_piece_gfx#66 ) + (byte) current_orientation#47 ← phi( main::@31/(byte) current_orientation#9 main::@33/(byte) current_orientation#60 ) + (byte*) current_piece#38 ← phi( main::@31/(byte*) current_piece#51 main::@33/(byte*) current_piece#52 ) + *((byte*) BORDERCOL#0) ← -- *((byte*) BORDERCOL#0) + to:main::@1 +main::@19: scope:[main] from main::@31 + (byte) current_movedown_counter#40 ← phi( main::@31/(byte) current_movedown_counter#31 ) + (byte) keyboard_modifiers#48 ← phi( main::@31/(byte) keyboard_modifiers#37 ) + (byte) keyboard_events_size#60 ← phi( main::@31/(byte) keyboard_events_size#43 ) + (byte) current_piece_color#68 ← phi( main::@31/(byte) current_piece_color#50 ) + (byte) current_orientation#70 ← phi( main::@31/(byte) current_orientation#9 ) + (byte*) current_piece#64 ← phi( main::@31/(byte*) current_piece#51 ) + (byte*) current_piece_gfx#80 ← phi( main::@31/(byte*) current_piece_gfx#9 ) + (byte) current_xpos#87 ← phi( main::@31/(byte) current_xpos#78 ) + (byte) current_ypos#49 ← phi( main::@31/(byte) current_ypos#58 ) + call render_playfield + to:main::@32 +main::@32: 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#48 ) + (byte) keyboard_events_size#53 ← phi( main::@19/(byte) keyboard_events_size#60 ) + (byte) current_piece_color#61 ← phi( main::@19/(byte) current_piece_color#68 ) + (byte) current_orientation#65 ← phi( main::@19/(byte) current_orientation#70 ) + (byte*) current_piece#59 ← phi( main::@19/(byte*) current_piece#64 ) + (byte*) current_piece_gfx#67 ← phi( main::@19/(byte*) current_piece_gfx#80 ) + (byte) current_xpos#67 ← phi( main::@19/(byte) current_xpos#87 ) + (byte) current_ypos#25 ← phi( main::@19/(byte) current_ypos#49 ) + call render_current + to:main::@33 +main::@33: scope:[main] from main::@32 + (byte) current_movedown_counter#32 ← phi( main::@32/(byte) current_movedown_counter#36 ) + (byte) keyboard_modifiers#38 ← phi( main::@32/(byte) keyboard_modifiers#44 ) + (byte) keyboard_events_size#44 ← phi( main::@32/(byte) keyboard_events_size#53 ) + (byte) current_piece_color#51 ← phi( main::@32/(byte) current_piece_color#61 ) + (byte) current_ypos#59 ← phi( main::@32/(byte) current_ypos#25 ) + (byte) current_xpos#79 ← phi( main::@32/(byte) current_xpos#67 ) + (byte*) current_piece_gfx#66 ← phi( main::@32/(byte*) current_piece_gfx#67 ) + (byte) current_orientation#60 ← phi( main::@32/(byte) current_orientation#65 ) + (byte*) current_piece#52 ← phi( main::@32/(byte*) current_piece#59 ) + to:main::@10 +main::@return: scope:[main] from main::@1 + (byte) current_movedown_counter#12 ← phi( main::@1/(byte) current_movedown_counter#19 ) + (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#16 ← phi( main::@1/(byte) current_piece_color#25 ) + (byte) current_ypos#22 ← phi( main::@1/(byte) current_ypos#38 ) + (byte) current_xpos#28 ← phi( main::@1/(byte) current_xpos#46 ) + (byte*) current_piece_gfx#21 ← phi( main::@1/(byte*) current_piece_gfx#35 ) + (byte) current_orientation#24 ← phi( main::@1/(byte) current_orientation#39 ) + (byte*) current_piece#16 ← phi( main::@1/(byte*) current_piece#28 ) + (byte*) current_piece#7 ← (byte*) current_piece#16 + (byte) current_orientation#10 ← (byte) current_orientation#24 + (byte*) current_piece_gfx#10 ← (byte*) current_piece_gfx#21 + (byte) current_xpos#11 ← (byte) current_xpos#28 + (byte) current_ypos#8 ← (byte) current_ypos#22 + (byte) current_piece_color#7 ← (byte) current_piece_color#16 + (byte) keyboard_events_size#8 ← (byte) keyboard_events_size#19 + (byte) keyboard_modifiers#8 ← (byte) keyboard_modifiers#16 + (byte) current_movedown_counter#5 ← (byte) current_movedown_counter#12 + return + to:@return +@26: scope:[] from @20 + (byte) current_movedown_counter#20 ← phi( @20/(byte) current_movedown_counter#26 ) + (byte) keyboard_modifiers#25 ← phi( @20/(byte) keyboard_modifiers#32 ) + (byte) keyboard_events_size#28 ← phi( @20/(byte) keyboard_events_size#35 ) + (byte) current_piece_color#26 ← phi( @20/(byte) current_piece_color#37 ) + (byte) current_ypos#39 ← phi( @20/(byte) current_ypos#50 ) + (byte) current_xpos#47 ← phi( @20/(byte) current_xpos#65 ) + (byte*) current_piece_gfx#36 ← phi( @20/(byte*) current_piece_gfx#52 ) + (byte) current_orientation#40 ← phi( @20/(byte) current_orientation#50 ) + (byte*) current_piece#29 ← phi( @20/(byte*) current_piece#41 ) call main to:@27 @27: scope:[] from @26 - (byte) current_movedown_counter#13 ← phi( @26/(byte) current_movedown_counter#2 ) + (byte) current_movedown_counter#13 ← phi( @26/(byte) current_movedown_counter#5 ) (byte) keyboard_modifiers#17 ← phi( @26/(byte) keyboard_modifiers#8 ) (byte) keyboard_events_size#20 ← phi( @26/(byte) keyboard_events_size#8 ) - (byte) current_piece_color#17 ← phi( @26/(byte) current_piece_color#3 ) - (byte) current_ypos#23 ← phi( @26/(byte) current_ypos#3 ) - (byte) current_xpos#29 ← phi( @26/(byte) current_xpos#4 ) - (byte*) current_piece_gfx#22 ← phi( @26/(byte*) current_piece_gfx#4 ) - (byte) current_orientation#25 ← phi( @26/(byte) current_orientation#4 ) - (byte*) current_piece#17 ← phi( @26/(byte*) current_piece#3 ) + (byte) current_piece_color#17 ← phi( @26/(byte) current_piece_color#7 ) + (byte) current_ypos#23 ← phi( @26/(byte) current_ypos#8 ) + (byte) current_xpos#29 ← phi( @26/(byte) current_xpos#11 ) + (byte*) current_piece_gfx#22 ← phi( @26/(byte*) current_piece_gfx#10 ) + (byte) current_orientation#25 ← phi( @26/(byte) current_orientation#10 ) + (byte*) current_piece#17 ← phi( @26/(byte*) current_piece#7 ) (byte*) current_piece#8 ← (byte*) current_piece#17 (byte) current_orientation#11 ← (byte) current_orientation#25 (byte*) current_piece_gfx#11 ← (byte*) current_piece_gfx#22 @@ -1970,34 +1966,35 @@ render_current::@return: scope:[render_current] from render_current::@2 SYMBOL TABLE SSA (byte~) $0 -(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 +(byte*~) $1 +(byte/signed byte/word/signed word/dword/signed dword~) $10 +(byte/signed word/word/dword/signed dword/signed byte~) $11 +(byte/signed byte/word/signed word/dword/signed dword~) $12 +(byte/signed word/word/dword/signed dword/signed byte~) $13 +(byte/signed byte/word/signed word/dword/signed dword~) $14 +(byte/signed word/word/dword/signed dword/signed byte~) $15 +(byte/signed byte/word/signed word/dword/signed dword~) $16 +(byte/signed word/word/dword/signed dword/signed byte~) $17 (word~) $18 (word~) $19 -(byte/signed word/word/dword/signed dword/signed byte~) $2 +(byte~) $2 (word~) $20 (word~) $21 -(byte~) $22 -(byte/signed word/word/dword/signed dword~) $23 -(byte/signed word/word/dword/signed dword~) $24 -(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 +(word~) $22 +(word~) $23 +(word~) $24 +(byte/signed word/word/dword/signed dword~) $25 +(byte/signed word/word/dword/signed dword~) $3 +(byte/signed byte/word/signed word/dword/signed dword~) $4 +(byte/signed word/word/dword/signed dword/signed byte~) $5 +(byte/signed byte/word/signed word/dword/signed dword~) $6 +(byte/signed word/word/dword/signed dword/signed byte~) $7 +(byte/signed byte/word/signed word/dword/signed dword~) $8 +(byte/signed word/word/dword/signed dword/signed byte~) $9 (label) @12 (label) @14 -(label) @18 -(label) @23 +(label) @17 +(label) @20 (label) @26 (label) @27 (label) @5 @@ -2024,8 +2021,6 @@ SYMBOL TABLE SSA (byte) BROWN#0 (byte*) CHARGEN (byte*) CHARGEN#0 -(byte*) CHARSET -(byte*) CHARSET#0 (byte*) CIA1_INTERRUPT (byte*) CIA1_INTERRUPT#0 (byte*) CIA1_PORT_A @@ -2244,26 +2239,34 @@ SYMBOL TABLE SSA (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[$17]) PIECE_I +(byte[$17]) PIECE_I#0 +(byte[$13]) PIECE_J +(byte[$13]) PIECE_J#0 +(byte[$11]) PIECE_L +(byte[$11]) PIECE_L#0 +(byte[$15]) PIECE_O +(byte[$15]) PIECE_O#0 +(byte[$7]) PIECE_S +(byte[$7]) PIECE_S#0 +(byte[$5]) PIECE_T +(byte[$5]) PIECE_T#0 +(byte[$9]) PIECE_Z +(byte[$9]) PIECE_Z#0 (byte) PINK (byte) PINK#0 +(byte*) PLAYFIELD_CHARSET +(byte*) PLAYFIELD_CHARSET#0 (byte) PLAYFIELD_COLS (byte) PLAYFIELD_COLS#0 (byte) PLAYFIELD_LINES (byte) PLAYFIELD_LINES#0 +(byte*) PLAYFIELD_SCREEN +(byte*) PLAYFIELD_SCREEN#0 +(byte*) PLAYFIELD_SPRITES +(byte*) PLAYFIELD_SPRITES#0 +(byte*) PLAYFIELD_SPRITE_PTRS +(byte*) PLAYFIELD_SPRITE_PTRS#0 (byte*) PROCPORT (byte*) PROCPORT#0 (byte) PROCPORT_BASIC_KERNEL_IO @@ -2286,12 +2289,6 @@ SYMBOL TABLE SSA (byte*) RASTER#0 (byte) RED (byte) RED#0 -(byte*) SCREEN -(byte*) SCREEN#0 -(byte*) SCREEN#1 -(byte*) SCREEN#2 -(byte*) SCREEN#3 -(byte*) SCREEN#4 (byte) SID_CONTROL_GATE (byte) SID_CONTROL_GATE#0 (byte) SID_CONTROL_NOISE @@ -2366,157 +2363,6 @@ SYMBOL TABLE SSA (byte) WHITE#0 (byte) YELLOW (byte) YELLOW#0 -(byte()) collision((byte) collision::xpos , (byte) collision::ypos , (byte) collision::orientation) -(byte*~) collision::$0 -(byte~) collision::$1 -(bool~) collision::$10 -(bool~) collision::$11 -(bool~) collision::$12 -(bool~) collision::$13 -(bool~) collision::$14 -(bool~) collision::$15 -(bool~) collision::$2 -(bool~) collision::$3 -(byte/signed word/word/dword/signed dword~) collision::$4 -(bool~) collision::$5 -(bool~) collision::$6 -(byte~) collision::$7 -(bool~) collision::$8 -(bool~) collision::$9 -(label) collision::@1 -(label) collision::@11 -(label) collision::@13 -(label) collision::@15 -(label) collision::@17 -(label) collision::@18 -(label) collision::@2 -(label) collision::@3 -(label) collision::@4 -(label) collision::@5 -(label) collision::@6 -(label) collision::@7 -(label) collision::@8 -(label) collision::@9 -(label) collision::@return -(byte) collision::c -(byte) collision::c#0 -(byte) collision::c#1 -(byte) collision::c#2 -(byte) collision::c#3 -(byte) collision::c#4 -(byte) collision::c#5 -(byte) collision::c#6 -(byte) collision::c#7 -(byte) collision::c#8 -(byte) collision::col -(byte) collision::col#0 -(byte) collision::col#1 -(byte) collision::col#2 -(byte) collision::col#3 -(byte) collision::col#4 -(byte) collision::col#5 -(byte) collision::col#6 -(byte) collision::col#7 -(byte) collision::col#8 -(byte) collision::i -(byte) collision::i#0 -(byte) collision::i#1 -(byte) collision::i#10 -(byte) collision::i#2 -(byte) collision::i#3 -(byte) collision::i#4 -(byte) collision::i#5 -(byte) collision::i#6 -(byte) collision::i#7 -(byte) collision::i#8 -(byte) collision::i#9 -(byte) collision::l -(byte) collision::l#0 -(byte) collision::l#1 -(byte) collision::l#10 -(byte) collision::l#2 -(byte) collision::l#3 -(byte) collision::l#4 -(byte) collision::l#5 -(byte) collision::l#6 -(byte) collision::l#7 -(byte) collision::l#8 -(byte) collision::l#9 -(byte) collision::orientation -(byte) collision::orientation#0 -(byte) collision::orientation#1 -(byte) collision::orientation#2 -(byte) collision::orientation#3 -(byte) collision::orientation#4 -(byte*) collision::piece_gfx -(byte*) collision::piece_gfx#0 -(byte*) collision::piece_gfx#1 -(byte*) collision::piece_gfx#2 -(byte*) collision::piece_gfx#3 -(byte*) collision::piece_gfx#4 -(byte*) collision::piece_gfx#5 -(byte*) collision::piece_gfx#6 -(byte*) collision::piece_gfx#7 -(byte*) collision::piece_gfx#8 -(byte*) collision::piece_gfx#9 -(byte*) collision::playfield_line -(byte*) collision::playfield_line#0 -(byte*) collision::playfield_line#1 -(byte*) collision::playfield_line#2 -(byte*) collision::playfield_line#3 -(byte*) collision::playfield_line#4 -(byte*) collision::playfield_line#5 -(byte*) collision::playfield_line#6 -(byte*) collision::playfield_line#7 -(byte) collision::return -(byte) collision::return#0 -(byte) collision::return#1 -(byte) collision::return#10 -(byte) collision::return#11 -(byte) collision::return#12 -(byte) collision::return#13 -(byte) collision::return#14 -(byte) collision::return#2 -(byte) collision::return#3 -(byte) collision::return#4 -(byte) collision::return#5 -(byte) collision::return#6 -(byte) collision::return#7 -(byte) collision::return#8 -(byte) collision::return#9 -(byte) collision::xpos -(byte) collision::xpos#0 -(byte) collision::xpos#1 -(byte) collision::xpos#10 -(byte) collision::xpos#11 -(byte) collision::xpos#12 -(byte) collision::xpos#13 -(byte) collision::xpos#2 -(byte) collision::xpos#3 -(byte) collision::xpos#4 -(byte) collision::xpos#5 -(byte) collision::xpos#6 -(byte) collision::xpos#7 -(byte) collision::xpos#8 -(byte) collision::xpos#9 -(byte) collision::ypos -(byte) collision::ypos#0 -(byte) collision::ypos#1 -(byte) collision::ypos#2 -(byte) collision::ypos#3 -(byte) collision::ypos#4 -(byte) collision::ypos2 -(byte) collision::ypos2#0 -(byte) collision::ypos2#1 -(byte) collision::ypos2#10 -(byte) collision::ypos2#2 -(byte) collision::ypos2#3 -(byte) collision::ypos2#4 -(byte) collision::ypos2#5 -(byte) collision::ypos2#6 -(byte) collision::ypos2#7 -(byte) collision::ypos2#8 -(byte) collision::ypos2#9 (byte) current_movedown_counter (byte) current_movedown_counter#0 (byte) current_movedown_counter#1 @@ -2559,7 +2405,6 @@ SYMBOL TABLE SSA (byte) current_movedown_counter#43 (byte) current_movedown_counter#44 (byte) current_movedown_counter#45 -(byte) current_movedown_counter#46 (byte) current_movedown_counter#5 (byte) current_movedown_counter#6 (byte) current_movedown_counter#7 @@ -2641,7 +2486,6 @@ SYMBOL TABLE SSA (byte) current_orientation#70 (byte) current_orientation#71 (byte) current_orientation#72 -(byte) current_orientation#73 (byte) current_orientation#8 (byte) current_orientation#9 (byte*) current_piece @@ -2711,7 +2555,6 @@ SYMBOL TABLE SSA (byte*) current_piece#66 (byte*) current_piece#67 (byte*) current_piece#68 -(byte*) current_piece#69 (byte*) current_piece#7 (byte*) current_piece#8 (byte*) current_piece#9 @@ -3372,59 +3215,6 @@ SYMBOL TABLE SSA (byte) keyboard_modifiers#9 (byte[8]) keyboard_scan_values (byte[8]) keyboard_scan_values#0 -(void()) lock_current() -(byte~) lock_current::$0 -(bool~) lock_current::$1 -(bool~) lock_current::$2 -(bool~) lock_current::$3 -(bool~) lock_current::$4 -(label) lock_current::@1 -(label) lock_current::@2 -(label) lock_current::@3 -(label) lock_current::@4 -(label) lock_current::@5 -(label) lock_current::@return -(byte) lock_current::c -(byte) lock_current::c#0 -(byte) lock_current::c#1 -(byte) lock_current::c#2 -(byte) lock_current::c#3 -(byte) lock_current::c#4 -(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 -(byte) lock_current::i#2 -(byte) lock_current::i#3 -(byte) lock_current::i#4 -(byte) lock_current::i#5 -(byte) lock_current::i#6 -(byte) lock_current::l -(byte) lock_current::l#0 -(byte) lock_current::l#1 -(byte) lock_current::l#2 -(byte) lock_current::l#3 -(byte) lock_current::l#4 -(byte) lock_current::l#5 -(byte) lock_current::l#6 -(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 (byte~) main::$11 @@ -3469,6 +3259,230 @@ SYMBOL TABLE SSA (byte) main::render#4 (byte) main::render#5 (byte) main::render#6 +(byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) +(byte*~) play_collision::$0 +(byte~) play_collision::$1 +(bool~) play_collision::$10 +(bool~) play_collision::$11 +(bool~) play_collision::$12 +(bool~) play_collision::$13 +(bool~) play_collision::$14 +(bool~) play_collision::$15 +(bool~) play_collision::$2 +(bool~) play_collision::$3 +(byte/signed word/word/dword/signed dword~) play_collision::$4 +(bool~) play_collision::$5 +(bool~) play_collision::$6 +(byte~) play_collision::$7 +(bool~) play_collision::$8 +(bool~) play_collision::$9 +(label) play_collision::@1 +(label) play_collision::@11 +(label) play_collision::@13 +(label) play_collision::@15 +(label) play_collision::@17 +(label) play_collision::@18 +(label) play_collision::@2 +(label) play_collision::@3 +(label) play_collision::@4 +(label) play_collision::@5 +(label) play_collision::@6 +(label) play_collision::@7 +(label) play_collision::@8 +(label) play_collision::@9 +(label) play_collision::@return +(byte) play_collision::c +(byte) play_collision::c#0 +(byte) play_collision::c#1 +(byte) play_collision::c#2 +(byte) play_collision::c#3 +(byte) play_collision::c#4 +(byte) play_collision::c#5 +(byte) play_collision::c#6 +(byte) play_collision::c#7 +(byte) play_collision::c#8 +(byte) play_collision::col +(byte) play_collision::col#0 +(byte) play_collision::col#1 +(byte) play_collision::col#2 +(byte) play_collision::col#3 +(byte) play_collision::col#4 +(byte) play_collision::col#5 +(byte) play_collision::col#6 +(byte) play_collision::col#7 +(byte) play_collision::col#8 +(byte) play_collision::i +(byte) play_collision::i#0 +(byte) play_collision::i#1 +(byte) play_collision::i#10 +(byte) play_collision::i#2 +(byte) play_collision::i#3 +(byte) play_collision::i#4 +(byte) play_collision::i#5 +(byte) play_collision::i#6 +(byte) play_collision::i#7 +(byte) play_collision::i#8 +(byte) play_collision::i#9 +(byte) play_collision::l +(byte) play_collision::l#0 +(byte) play_collision::l#1 +(byte) play_collision::l#10 +(byte) play_collision::l#2 +(byte) play_collision::l#3 +(byte) play_collision::l#4 +(byte) play_collision::l#5 +(byte) play_collision::l#6 +(byte) play_collision::l#7 +(byte) play_collision::l#8 +(byte) play_collision::l#9 +(byte) play_collision::orientation +(byte) play_collision::orientation#0 +(byte) play_collision::orientation#1 +(byte) play_collision::orientation#2 +(byte) play_collision::orientation#3 +(byte) play_collision::orientation#4 +(byte*) play_collision::piece_gfx +(byte*) play_collision::piece_gfx#0 +(byte*) play_collision::piece_gfx#1 +(byte*) play_collision::piece_gfx#2 +(byte*) play_collision::piece_gfx#3 +(byte*) play_collision::piece_gfx#4 +(byte*) play_collision::piece_gfx#5 +(byte*) play_collision::piece_gfx#6 +(byte*) play_collision::piece_gfx#7 +(byte*) play_collision::piece_gfx#8 +(byte*) play_collision::piece_gfx#9 +(byte*) play_collision::playfield_line +(byte*) play_collision::playfield_line#0 +(byte*) play_collision::playfield_line#1 +(byte*) play_collision::playfield_line#2 +(byte*) play_collision::playfield_line#3 +(byte*) play_collision::playfield_line#4 +(byte*) play_collision::playfield_line#5 +(byte*) play_collision::playfield_line#6 +(byte*) play_collision::playfield_line#7 +(byte) play_collision::return +(byte) play_collision::return#0 +(byte) play_collision::return#1 +(byte) play_collision::return#10 +(byte) play_collision::return#11 +(byte) play_collision::return#12 +(byte) play_collision::return#13 +(byte) play_collision::return#14 +(byte) play_collision::return#2 +(byte) play_collision::return#3 +(byte) play_collision::return#4 +(byte) play_collision::return#5 +(byte) play_collision::return#6 +(byte) play_collision::return#7 +(byte) play_collision::return#8 +(byte) play_collision::return#9 +(byte) play_collision::xpos +(byte) play_collision::xpos#0 +(byte) play_collision::xpos#1 +(byte) play_collision::xpos#10 +(byte) play_collision::xpos#11 +(byte) play_collision::xpos#12 +(byte) play_collision::xpos#13 +(byte) play_collision::xpos#2 +(byte) play_collision::xpos#3 +(byte) play_collision::xpos#4 +(byte) play_collision::xpos#5 +(byte) play_collision::xpos#6 +(byte) play_collision::xpos#7 +(byte) play_collision::xpos#8 +(byte) play_collision::xpos#9 +(byte) play_collision::ypos +(byte) play_collision::ypos#0 +(byte) play_collision::ypos#1 +(byte) play_collision::ypos#2 +(byte) play_collision::ypos#3 +(byte) play_collision::ypos#4 +(byte) play_collision::ypos2 +(byte) play_collision::ypos2#0 +(byte) play_collision::ypos2#1 +(byte) play_collision::ypos2#10 +(byte) play_collision::ypos2#2 +(byte) play_collision::ypos2#3 +(byte) play_collision::ypos2#4 +(byte) play_collision::ypos2#5 +(byte) play_collision::ypos2#6 +(byte) play_collision::ypos2#7 +(byte) play_collision::ypos2#8 +(byte) play_collision::ypos2#9 +(void()) play_init() +(byte/signed word/word/dword/signed dword~) play_init::$0 +(byte~) play_init::$1 +(bool~) play_init::$2 +(byte~) play_init::$3 +(label) play_init::@1 +(label) play_init::@2 +(label) play_init::@return +(byte) play_init::idx +(byte) play_init::idx#0 +(byte) play_init::idx#1 +(byte) play_init::idx#2 +(byte) play_init::j +(byte) play_init::j#0 +(byte) play_init::j#1 +(byte) play_init::j#2 +(byte*) play_init::pli +(byte*) play_init::pli#0 +(byte*) play_init::pli#1 +(byte*) play_init::pli#2 +(void()) play_lock_current() +(byte~) play_lock_current::$0 +(bool~) play_lock_current::$1 +(bool~) play_lock_current::$2 +(bool~) play_lock_current::$3 +(bool~) play_lock_current::$4 +(label) play_lock_current::@1 +(label) play_lock_current::@2 +(label) play_lock_current::@3 +(label) play_lock_current::@4 +(label) play_lock_current::@5 +(label) play_lock_current::@return +(byte) play_lock_current::c +(byte) play_lock_current::c#0 +(byte) play_lock_current::c#1 +(byte) play_lock_current::c#2 +(byte) play_lock_current::c#3 +(byte) play_lock_current::c#4 +(byte) play_lock_current::col +(byte) play_lock_current::col#0 +(byte) play_lock_current::col#1 +(byte) play_lock_current::col#2 +(byte) play_lock_current::col#3 +(byte) play_lock_current::col#4 +(byte) play_lock_current::i +(byte) play_lock_current::i#0 +(byte) play_lock_current::i#1 +(byte) play_lock_current::i#2 +(byte) play_lock_current::i#3 +(byte) play_lock_current::i#4 +(byte) play_lock_current::i#5 +(byte) play_lock_current::i#6 +(byte) play_lock_current::l +(byte) play_lock_current::l#0 +(byte) play_lock_current::l#1 +(byte) play_lock_current::l#2 +(byte) play_lock_current::l#3 +(byte) play_lock_current::l#4 +(byte) play_lock_current::l#5 +(byte) play_lock_current::l#6 +(byte*) play_lock_current::playfield_line +(byte*) play_lock_current::playfield_line#0 +(byte*) play_lock_current::playfield_line#1 +(byte*) play_lock_current::playfield_line#2 +(byte*) play_lock_current::playfield_line#3 +(byte) play_lock_current::ypos2 +(byte) play_lock_current::ypos2#0 +(byte) play_lock_current::ypos2#1 +(byte) play_lock_current::ypos2#2 +(byte) play_lock_current::ypos2#3 +(byte) play_lock_current::ypos2#4 +(byte) play_lock_current::ypos2#5 +(byte) play_lock_current::ypos2#6 (byte()) play_move_down((byte) play_move_down::key_event) (bool~) play_move_down::$0 (bool~) play_move_down::$1 @@ -3602,87 +3616,103 @@ SYMBOL TABLE SSA (byte) play_move_rotate::return#4 (byte) play_move_rotate::return#5 (byte) play_move_rotate::return#6 -(byte[$22]) playfield -(byte[$22]) playfield#0 +(void()) play_remove_lines() +(byte~) play_remove_lines::$0 +(byte/signed word/word/dword/signed dword~) play_remove_lines::$1 +(bool~) play_remove_lines::$10 +(byte~) play_remove_lines::$11 +(bool~) play_remove_lines::$12 +(bool~) play_remove_lines::$13 +(byte~) play_remove_lines::$2 +(byte/signed word/word/dword/signed dword~) play_remove_lines::$3 +(byte/signed word/word/dword/signed dword~) play_remove_lines::$4 +(byte/signed word/word/dword/signed dword~) play_remove_lines::$5 +(bool~) play_remove_lines::$6 +(bool~) play_remove_lines::$7 +(bool~) play_remove_lines::$8 +(bool~) play_remove_lines::$9 +(label) play_remove_lines::@1 +(label) play_remove_lines::@10 +(label) play_remove_lines::@2 +(label) play_remove_lines::@3 +(label) play_remove_lines::@4 +(label) play_remove_lines::@5 +(label) play_remove_lines::@6 +(label) play_remove_lines::@8 +(label) play_remove_lines::@9 +(label) play_remove_lines::@return +(byte) play_remove_lines::c +(byte) play_remove_lines::c#0 +(byte) play_remove_lines::c#1 +(byte) play_remove_lines::c#2 +(byte) play_remove_lines::full +(byte) play_remove_lines::full#0 +(byte) play_remove_lines::full#1 +(byte) play_remove_lines::full#2 +(byte) play_remove_lines::full#3 +(byte) play_remove_lines::full#4 +(byte) play_remove_lines::r +(byte) play_remove_lines::r#0 +(byte) play_remove_lines::r#1 +(byte) play_remove_lines::r#2 +(byte) play_remove_lines::r#3 +(byte) play_remove_lines::r#4 +(byte) play_remove_lines::r#5 +(byte) play_remove_lines::r#6 +(byte) play_remove_lines::r#7 +(byte) play_remove_lines::r#8 +(byte) play_remove_lines::w +(byte) play_remove_lines::w#0 +(byte) play_remove_lines::w#1 +(byte) play_remove_lines::w#10 +(byte) play_remove_lines::w#11 +(byte) play_remove_lines::w#12 +(byte) play_remove_lines::w#2 +(byte) play_remove_lines::w#3 +(byte) play_remove_lines::w#4 +(byte) play_remove_lines::w#5 +(byte) play_remove_lines::w#6 +(byte) play_remove_lines::w#7 +(byte) play_remove_lines::w#8 +(byte) play_remove_lines::w#9 +(byte) play_remove_lines::x +(byte) play_remove_lines::x#0 +(byte) play_remove_lines::x#1 +(byte) play_remove_lines::x#2 +(byte) play_remove_lines::x#3 +(byte) play_remove_lines::x#4 +(byte) play_remove_lines::y +(byte) play_remove_lines::y#0 +(byte) play_remove_lines::y#1 +(byte) play_remove_lines::y#2 +(byte) play_remove_lines::y#3 +(byte) play_remove_lines::y#4 +(byte) play_remove_lines::y#5 +(byte) play_remove_lines::y#6 +(byte) play_remove_lines::y#7 +(byte) play_remove_lines::y#8 +(void()) play_spawn_current() +(bool~) play_spawn_current::$0 +(byte~) play_spawn_current::$1 +(byte~) play_spawn_current::$2 +(byte~) play_spawn_current::$3 +(byte*~) play_spawn_current::$4 +(label) play_spawn_current::@1 +(label) play_spawn_current::@2 +(label) play_spawn_current::@3 +(label) play_spawn_current::@7 +(label) play_spawn_current::@return +(byte) play_spawn_current::piece_idx +(byte) play_spawn_current::piece_idx#0 +(byte) play_spawn_current::piece_idx#1 +(byte) play_spawn_current::piece_idx#2 +(byte) play_spawn_current::piece_idx#3 +(byte[$2]) playfield +(byte[$2]) playfield#0 (byte*[PLAYFIELD_LINES#0]) playfield_lines (byte*[PLAYFIELD_LINES#0]) playfield_lines#0 -(byte[$23]) playfield_lines_idx -(byte[$23]) playfield_lines_idx#0 -(void()) remove_lines() -(byte~) remove_lines::$0 -(byte/signed word/word/dword/signed dword~) remove_lines::$1 -(bool~) remove_lines::$10 -(byte~) remove_lines::$11 -(bool~) remove_lines::$12 -(bool~) remove_lines::$13 -(byte~) remove_lines::$2 -(byte/signed word/word/dword/signed dword~) remove_lines::$3 -(byte/signed word/word/dword/signed dword~) remove_lines::$4 -(byte/signed word/word/dword/signed dword~) remove_lines::$5 -(bool~) remove_lines::$6 -(bool~) remove_lines::$7 -(bool~) remove_lines::$8 -(bool~) remove_lines::$9 -(label) remove_lines::@1 -(label) remove_lines::@10 -(label) remove_lines::@2 -(label) remove_lines::@3 -(label) remove_lines::@4 -(label) remove_lines::@5 -(label) remove_lines::@6 -(label) remove_lines::@8 -(label) remove_lines::@9 -(label) remove_lines::@return -(byte) remove_lines::c -(byte) remove_lines::c#0 -(byte) remove_lines::c#1 -(byte) remove_lines::c#2 -(byte) remove_lines::full -(byte) remove_lines::full#0 -(byte) remove_lines::full#1 -(byte) remove_lines::full#2 -(byte) remove_lines::full#3 -(byte) remove_lines::full#4 -(byte) remove_lines::r -(byte) remove_lines::r#0 -(byte) remove_lines::r#1 -(byte) remove_lines::r#2 -(byte) remove_lines::r#3 -(byte) remove_lines::r#4 -(byte) remove_lines::r#5 -(byte) remove_lines::r#6 -(byte) remove_lines::r#7 -(byte) remove_lines::r#8 -(byte) remove_lines::w -(byte) remove_lines::w#0 -(byte) remove_lines::w#1 -(byte) remove_lines::w#10 -(byte) remove_lines::w#11 -(byte) remove_lines::w#12 -(byte) remove_lines::w#2 -(byte) remove_lines::w#3 -(byte) remove_lines::w#4 -(byte) remove_lines::w#5 -(byte) remove_lines::w#6 -(byte) remove_lines::w#7 -(byte) remove_lines::w#8 -(byte) remove_lines::w#9 -(byte) remove_lines::x -(byte) remove_lines::x#0 -(byte) remove_lines::x#1 -(byte) remove_lines::x#2 -(byte) remove_lines::x#3 -(byte) remove_lines::x#4 -(byte) remove_lines::y -(byte) remove_lines::y#0 -(byte) remove_lines::y#1 -(byte) remove_lines::y#2 -(byte) remove_lines::y#3 -(byte) remove_lines::y#4 -(byte) remove_lines::y#5 -(byte) remove_lines::y#6 -(byte) remove_lines::y#7 -(byte) remove_lines::y#8 +(byte[$25]) playfield_lines_idx +(byte[$25]) playfield_lines_idx#0 (void()) render_current() (byte~) render_current::$0 (byte/signed word/word/dword/signed dword~) render_current::$1 @@ -3835,8 +3865,8 @@ SYMBOL TABLE SSA (byte*) render_playfield::line#0 (byte*) render_playfield::line#1 (byte*) render_playfield::line#2 -(byte*[$24]) screen_lines -(byte*[$24]) screen_lines#0 +(byte*[$3]) screen_lines +(byte*[$3]) screen_lines#0 (byte()) sid_rnd() (label) sid_rnd::@return (byte) sid_rnd::return @@ -3847,42 +3877,6 @@ SYMBOL TABLE SSA (byte) sid_rnd::return#4 (void()) sid_rnd_init() (label) sid_rnd_init::@return -(void()) spawn_current() -(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 -(void()) tables_init() -(byte/signed word/word/dword/signed dword~) tables_init::$0 -(byte~) tables_init::$1 -(bool~) tables_init::$2 -(byte~) tables_init::$3 -(label) tables_init::@1 -(label) tables_init::@2 -(label) tables_init::@return -(byte) tables_init::idx -(byte) tables_init::idx#0 -(byte) tables_init::idx#1 -(byte) tables_init::idx#2 -(byte) tables_init::j -(byte) tables_init::j#0 -(byte) tables_init::j#1 -(byte) tables_init::j#2 -(byte*) tables_init::pli -(byte*) tables_init::pli#0 -(byte*) tables_init::pli#1 -(byte*) tables_init::pli#2 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 @@ -3890,27 +3884,27 @@ 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::$14 ← (byte) main::render#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$13 ← (byte) main::render#3 != (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 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_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::$8 ← (byte) current_movedown_counter#8 < (byte) current_movedown_slow#0 from (bool~) play_move_down::$7 ← (byte) current_movedown_counter#8 >= (byte) current_movedown_slow#0 +Inversing boolean not (bool~) play_move_down::$6 ← (byte) current_movedown_counter#9 < (byte) current_movedown_fast#0 from (bool~) play_move_down::$5 ← (byte) current_movedown_counter#9 >= (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::$8 ← (byte~) play_move_rotate::$6 != (byte) COLLISION_NONE#0 from (bool~) play_move_rotate::$7 ← (byte~) play_move_rotate::$6 == (byte) COLLISION_NONE#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::$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~) remove_lines::$7 ← (byte) remove_lines::c#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) remove_lines::$6 ← (byte) remove_lines::c#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) remove_lines::$10 ← (byte) remove_lines::full#2 != (byte/signed byte/word/signed word/dword/signed dword) 1 from (bool~) remove_lines::$9 ← (byte) remove_lines::full#2 == (byte/signed byte/word/signed word/dword/signed dword) 1 -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 +Inversing boolean not (bool~) play_collision::$3 ← *((byte*) play_collision::piece_gfx#1 + (byte) play_collision::i#2) == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_collision::$2 ← *((byte*) play_collision::piece_gfx#1 + (byte) play_collision::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) play_collision::$6 ← (byte) play_collision::ypos2#3 < (byte/signed word/word/dword/signed dword~) play_collision::$4 from (bool~) play_collision::$5 ← (byte) play_collision::ypos2#3 >= (byte/signed word/word/dword/signed dword~) play_collision::$4 +Inversing boolean not (bool~) play_collision::$9 ← (byte~) play_collision::$7 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_collision::$8 ← (byte~) play_collision::$7 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) play_collision::$11 ← (byte) play_collision::col#4 < (byte) PLAYFIELD_COLS#0 from (bool~) play_collision::$10 ← (byte) play_collision::col#4 >= (byte) PLAYFIELD_COLS#0 +Inversing boolean not (bool~) play_collision::$13 ← *((byte*) play_collision::playfield_line#1 + (byte) play_collision::col#5) == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_collision::$12 ← *((byte*) play_collision::playfield_line#1 + (byte) play_collision::col#5) != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) play_lock_current::$2 ← *((byte*) current_piece_gfx#16 + (byte) play_lock_current::i#2) == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_lock_current::$1 ← *((byte*) current_piece_gfx#16 + (byte) play_lock_current::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) play_remove_lines::$7 ← (byte) play_remove_lines::c#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_remove_lines::$6 ← (byte) play_remove_lines::c#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) play_remove_lines::$10 ← (byte) play_remove_lines::full#2 != (byte/signed byte/word/signed word/dword/signed dword) 1 from (bool~) play_remove_lines::$9 ← (byte) play_remove_lines::full#2 == (byte/signed byte/word/signed word/dword/signed dword) 1 +Inversing boolean not (bool~) main::$14 ← (byte) main::render#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$13 ← (byte) main::render#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) fill::end#0 = (byte*~) fill::$0 Alias (byte*) fill::addr#0 = (byte*) fill::start#2 @@ -3954,211 +3948,10 @@ 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#57 (byte) keyboard_events_size#53 (byte) keyboard_events_size#44 (byte) keyboard_events_size#35 (byte) keyboard_events_size#28 -Alias (byte) keyboard_modifiers#0 = (byte) keyboard_modifiers#45 (byte) keyboard_modifiers#44 (byte) keyboard_modifiers#38 (byte) keyboard_modifiers#32 (byte) keyboard_modifiers#25 +Alias (byte) keyboard_events_size#0 = (byte) keyboard_events_size#57 (byte) keyboard_events_size#48 (byte) keyboard_events_size#39 (byte) keyboard_events_size#35 (byte) keyboard_events_size#28 +Alias (byte) keyboard_modifiers#0 = (byte) keyboard_modifiers#45 (byte) keyboard_modifiers#39 (byte) keyboard_modifiers#33 (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#42 (byte*) current_piece#54 (byte*) current_piece#30 -Alias (byte) current_orientation#26 = (byte) current_orientation#51 (byte) current_orientation#62 (byte) current_orientation#41 -Alias (byte*) current_piece_gfx#23 = (byte*) current_piece_gfx#53 (byte*) current_piece_gfx#67 (byte*) current_piece_gfx#37 -Alias (byte) current_xpos#30 = (byte) current_xpos#66 (byte) current_xpos#80 (byte) current_xpos#48 -Alias (byte) current_ypos#24 = (byte) current_ypos#51 (byte) current_ypos#60 (byte) current_ypos#40 -Alias (byte) current_piece_color#18 = (byte) current_piece_color#38 (byte) current_piece_color#52 (byte) current_piece_color#27 -Alias (byte) keyboard_events_size#33 = (byte) keyboard_events_size#67 (byte) keyboard_events_size#70 (byte) keyboard_events_size#65 (byte) keyboard_events_size#58 (byte) keyboard_events_size#48 (byte) keyboard_events_size#39 -Alias (byte) keyboard_modifiers#30 = (byte) keyboard_modifiers#51 (byte) keyboard_modifiers#52 (byte) keyboard_modifiers#49 (byte) keyboard_modifiers#46 (byte) keyboard_modifiers#39 (byte) keyboard_modifiers#33 -Alias (byte) current_movedown_counter#22 = (byte) current_movedown_counter#45 (byte) current_movedown_counter#46 (byte) current_movedown_counter#42 (byte) current_movedown_counter#38 (byte) current_movedown_counter#34 (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#67 (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#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) current_movedown_counter#15 = (byte) current_movedown_counter#43 (byte) current_movedown_counter#8 (byte) current_movedown_counter#2 -Alias (byte) current_ypos#12 = (byte) current_ypos#68 (byte) current_ypos#26 (byte) current_ypos#3 -Alias (byte*) current_piece#11 = (byte*) current_piece#66 (byte*) current_piece#20 (byte*) current_piece#3 -Alias (byte) current_orientation#15 = (byte) current_orientation#72 (byte) current_orientation#29 (byte) current_orientation#4 -Alias (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#81 (byte*) current_piece_gfx#26 (byte*) current_piece_gfx#4 -Alias (byte) current_xpos#16 = (byte) current_xpos#93 (byte) current_xpos#32 (byte) current_xpos#4 -Alias (byte) current_piece_color#11 = (byte) current_piece_color#69 (byte) current_piece_color#20 (byte) current_piece_color#3 -Alias (byte) keyboard_events_size#40 = (byte) keyboard_events_size#50 -Alias (byte) keyboard_modifiers#34 = (byte) keyboard_modifiers#41 -Alias (byte) current_movedown_counter#39 = (byte) current_movedown_counter#44 -Alias (byte) current_ypos#64 = (byte) current_ypos#69 -Alias (byte*) current_piece#61 = (byte*) current_piece#67 -Alias (byte) current_orientation#67 = (byte) current_orientation#73 -Alias (byte*) current_piece_gfx#76 = (byte*) current_piece_gfx#82 -Alias (byte) current_xpos#88 = (byte) current_xpos#94 -Alias (byte) current_piece_color#62 = (byte) current_piece_color#70 -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#40 (byte) current_movedown_counter#35 (byte) current_movedown_counter#28 (byte) current_movedown_counter#23 -Alias (byte) current_ypos#25 = (byte) current_ypos#65 (byte) current_ypos#61 (byte) current_ypos#52 (byte) current_ypos#43 -Alias (byte*) current_piece#19 = (byte*) current_piece#62 (byte*) current_piece#55 (byte*) current_piece#44 (byte*) current_piece#33 -Alias (byte) current_orientation#27 = (byte) current_orientation#68 (byte) current_orientation#63 (byte) current_orientation#53 (byte) current_orientation#44 -Alias (byte*) current_piece_gfx#24 = (byte*) current_piece_gfx#77 (byte*) current_piece_gfx#68 (byte*) current_piece_gfx#55 (byte*) current_piece_gfx#40 -Alias (byte) current_xpos#31 = (byte) current_xpos#89 (byte) current_xpos#81 (byte) current_xpos#68 (byte) current_xpos#51 -Alias (byte) current_piece_color#19 = (byte) current_piece_color#63 (byte) current_piece_color#53 (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#50 (byte) keyboard_modifiers#47 (byte) keyboard_modifiers#42 (byte) keyboard_modifiers#36 (byte) keyboard_modifiers#48 (byte) keyboard_modifiers#43 (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#59 (byte) keyboard_events_size#51 (byte) keyboard_events_size#42 (byte) keyboard_events_size#60 (byte) keyboard_events_size#52 (byte) keyboard_events_size#43 -Alias (byte) main::key_event#0 = (byte~) main::$9 (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#36 (byte) current_movedown_counter#29 (byte) current_movedown_counter#41 (byte) current_movedown_counter#37 (byte) current_movedown_counter#30 -Alias (byte) current_ypos#11 = (byte) current_ypos#2 (byte) current_ypos#58 (byte) current_ypos#53 (byte) current_ypos#44 (byte) current_ypos#38 (byte) current_ypos#54 -Alias (byte*) current_piece#10 = (byte*) current_piece#2 (byte*) current_piece#56 (byte*) current_piece#45 (byte*) current_piece#63 (byte*) current_piece#57 (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_xpos#14 = (byte) current_xpos#2 -Alias (byte) current_piece_color#10 = (byte) current_piece_color#2 (byte) current_piece_color#54 (byte) current_piece_color#41 (byte) current_piece_color#64 (byte) current_piece_color#55 (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#69 (byte) current_xpos#82 (byte) current_xpos#78 (byte) current_xpos#70 -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_orientation#14 = (byte) current_orientation#3 (byte) current_orientation#69 (byte) current_orientation#64 (byte) current_orientation#54 -Alias (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#3 (byte*) current_piece_gfx#78 (byte*) current_piece_gfx#69 (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#55 = (byte) current_ypos#56 (byte) current_ypos#62 (byte) current_ypos#63 (byte) current_ypos#57 -Alias (byte) current_xpos#71 = (byte) current_xpos#72 (byte) current_xpos#83 (byte) current_xpos#84 (byte) current_xpos#73 -Alias (byte) current_orientation#55 = (byte) current_orientation#56 (byte) current_orientation#65 (byte) current_orientation#66 (byte) current_orientation#57 -Alias (byte*) current_piece#58 = (byte*) current_piece#59 (byte*) current_piece#64 (byte*) current_piece#65 (byte*) current_piece#60 -Alias (byte*) current_piece_gfx#70 = (byte*) current_piece_gfx#71 (byte*) current_piece_gfx#79 (byte*) current_piece_gfx#80 (byte*) current_piece_gfx#72 -Alias (byte) current_piece_color#56 = (byte) current_piece_color#57 (byte) current_piece_color#65 (byte) current_piece_color#66 (byte) current_piece_color#58 -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#66 = (byte) current_ypos#67 -Alias (byte) current_xpos#90 = (byte) current_xpos#91 -Alias (byte) current_orientation#70 = (byte) current_orientation#71 -Alias (byte*) current_piece#68 = (byte*) current_piece#69 -Alias (byte*) current_piece_gfx#83 = (byte*) current_piece_gfx#84 -Alias (byte) current_piece_color#71 = (byte) current_piece_color#72 -Alias (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#9 -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#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#36 (byte) current_ypos#47 (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#50 (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#59 (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#73 (byte*) current_piece_gfx#59 (byte*) current_piece_gfx#43 (byte*) current_piece_gfx#60 (byte*) current_piece_gfx#42 -Alias (byte) current_xpos#17 = (byte) current_xpos#35 (byte) current_xpos#33 (byte) current_xpos#74 (byte) current_xpos#55 (byte) current_xpos#61 (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#59 (byte) current_piece_color#45 (byte) current_piece_color#33 (byte) current_piece_color#46 (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_orientation#17 = (byte) current_orientation#5 -Alias (byte*) current_piece_gfx#16 = (byte*) current_piece_gfx#5 -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_orientation#18 = (byte) current_orientation#6 -Alias (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#6 -Alias (byte) current_xpos#19 = (byte) current_xpos#6 -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_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 -Alias (byte) play_move_leftright::key_event#1 = (byte) play_move_leftright::key_event#2 -Alias (byte) collision::xpos#2 = (byte/signed word/word/dword/signed dword~) play_move_leftright::$3 -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_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#48 (byte) current_ypos#49 (byte) current_ypos#35 -Alias (byte*) current_piece#39 = (byte*) current_piece#51 (byte*) current_piece#52 (byte*) current_piece#40 -Alias (byte*) current_piece_gfx#31 = (byte*) current_piece_gfx#74 (byte*) current_piece_gfx#61 (byte*) current_piece_gfx#44 (byte*) current_piece_gfx#75 -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_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_orientation#38 = (byte) current_orientation#49 (byte) current_orientation#60 -Alias (byte*) current_piece_gfx#30 = (byte*) current_piece_gfx#45 (byte*) current_piece_gfx#62 -Alias (byte*) current_piece_gfx#8 = (byte*~) play_move_rotate::$9 -Alias (byte*) current_piece#0 = (byte*) current_piece#53 (byte*) current_piece#41 (byte*) current_piece#29 -Alias (byte) current_orientation#0 = (byte) current_orientation#61 (byte) current_orientation#50 (byte) current_orientation#40 -Alias (byte*) current_piece_gfx#0 = (byte*) current_piece_gfx#63 (byte*) current_piece_gfx#52 (byte*) current_piece_gfx#36 -Alias (byte) current_xpos#0 = (byte) current_xpos#77 (byte) current_xpos#65 (byte) current_xpos#47 -Alias (byte) current_ypos#0 = (byte) current_ypos#59 (byte) current_ypos#50 (byte) current_ypos#39 -Alias (byte) current_piece_color#0 = (byte) current_piece_color#49 (byte) current_piece_color#37 (byte) current_piece_color#26 -Alias (byte) current_movedown_counter#0 = (byte) current_movedown_counter#33 (byte) current_movedown_counter#26 (byte) current_movedown_counter#20 -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 -Alias (byte) collision::ypos2#10 = (byte) collision::ypos2#3 (byte) collision::ypos2#5 (byte) collision::ypos2#9 (byte) collision::ypos2#8 (byte) collision::ypos2#7 -Alias (byte) collision::col#3 = (byte) collision::col#8 (byte) collision::col#6 (byte) collision::col#4 (byte) collision::col#5 (byte) collision::col#7 -Alias (byte*) collision::playfield_line#1 = (byte*) collision::playfield_line#4 (byte*) collision::playfield_line#5 (byte*) collision::playfield_line#3 (byte*) collision::playfield_line#2 (byte*) collision::playfield_line#7 -Alias (byte) collision::c#3 = (byte) collision::c#8 (byte) collision::c#7 (byte) collision::c#6 (byte) collision::c#5 (byte) collision::c#4 -Alias (byte*) collision::piece_gfx#1 = (byte*) collision::piece_gfx#9 (byte*) collision::piece_gfx#8 (byte*) collision::piece_gfx#7 (byte*) collision::piece_gfx#6 (byte*) collision::piece_gfx#5 -Alias (byte) collision::i#1 = (byte) collision::i#10 (byte) collision::i#9 (byte) collision::i#8 (byte) collision::i#7 (byte) collision::i#6 -Alias (byte) collision::l#10 = (byte) collision::l#4 (byte) collision::l#9 (byte) collision::l#8 (byte) collision::l#7 (byte) collision::l#5 -Alias (byte) collision::xpos#10 = (byte) collision::xpos#13 (byte) collision::xpos#8 (byte) collision::xpos#12 (byte) collision::xpos#11 (byte) collision::xpos#9 -Alias (byte) collision::return#14 = (byte) collision::return#5 -Alias (byte) collision::ypos2#4 = (byte) collision::ypos2#6 -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::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::ypos2#5 = (byte) lock_current::ypos2#6 -Alias (byte) lock_current::l#4 = (byte) lock_current::l#5 -Alias (byte) current_xpos#75 = (byte) current_xpos#76 -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#62 -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_piece_color#35 = (byte) current_piece_color#48 -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_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) remove_lines::r#0 = (byte/signed word/word/dword/signed dword~) remove_lines::$1 -Alias (byte) remove_lines::w#0 = (byte/signed word/word/dword/signed dword~) remove_lines::$3 -Alias (byte) remove_lines::c#0 = (byte) remove_lines::c#2 -Alias (byte) remove_lines::w#8 = (byte) remove_lines::w#9 -Alias (byte) remove_lines::x#3 = (byte) remove_lines::x#4 -Alias (byte) remove_lines::r#1 = (byte) remove_lines::r#6 -Alias (byte) remove_lines::y#6 = (byte) remove_lines::y#7 -Alias (byte) remove_lines::full#2 = (byte) remove_lines::full#3 -Alias (byte) remove_lines::y#3 = (byte) remove_lines::y#4 (byte) remove_lines::y#5 -Alias (byte) remove_lines::w#1 = (byte) remove_lines::w#10 (byte) remove_lines::w#5 -Alias (byte) remove_lines::r#4 = (byte) remove_lines::r#8 (byte) remove_lines::r#7 -Alias (byte) remove_lines::w#2 = (byte~) remove_lines::$11 -Alias (byte) remove_lines::w#6 = (byte) remove_lines::w#7 +Alias (byte*) PLAYFIELD_SPRITE_PTRS#0 = (byte*~) $1 Alias (byte*) render_init::li#0 = (byte*~) render_init::$3 Alias (byte*) render_init::line#0 = (byte*~) render_init::$7 Alias (byte*) render_init::line#2 = (byte*) render_init::line#3 @@ -4167,21 +3960,221 @@ 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#46 -Alias (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#49 +Alias (byte) current_xpos#13 = (byte) current_xpos#30 +Alias (byte*) current_piece_gfx#24 = (byte*) current_piece_gfx#37 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#51 = (byte) current_piece_color#60 +Alias (byte) current_piece_color#39 = (byte) current_piece_color#52 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#61 +Alias (byte) current_piece_color#18 = (byte) current_piece_color#27 (byte) current_piece_color#53 (byte) current_piece_color#9 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#66 (byte*) current_piece_gfx#50 (byte*) current_piece_gfx#51 +Alias (byte*) current_piece_gfx#12 = (byte*) current_piece_gfx#55 (byte*) current_piece_gfx#38 (byte*) current_piece_gfx#39 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#85 = (byte) current_xpos#92 (byte) current_xpos#86 (byte) current_xpos#87 -Alias (byte*) SCREEN#0 = (byte*) SCREEN#4 +Alias (byte) current_xpos#80 = (byte) current_xpos#88 (byte) current_xpos#81 (byte) current_xpos#82 +Alias (byte*) current_piece_gfx#0 = (byte*) current_piece_gfx#62 (byte*) current_piece_gfx#52 (byte*) current_piece_gfx#36 +Alias (byte) current_xpos#0 = (byte) current_xpos#73 (byte) current_xpos#65 (byte) current_xpos#47 +Alias (byte) current_ypos#0 = (byte) current_ypos#55 (byte) current_ypos#50 (byte) current_ypos#39 +Alias (byte) current_piece_color#0 = (byte) current_piece_color#44 (byte) current_piece_color#37 (byte) current_piece_color#26 +Alias (byte) keyboard_event_pressed::return#12 = (byte) keyboard_event_pressed::return#6 +Alias (byte) current_movedown_counter#15 = (byte) current_movedown_counter#16 (byte) current_movedown_counter#21 (byte) current_movedown_counter#9 (byte) current_movedown_counter#17 +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#51 = (byte) current_ypos#52 (byte) current_ypos#60 (byte) current_ypos#61 (byte) current_ypos#53 +Alias (byte) current_xpos#69 = (byte) current_xpos#70 (byte) current_xpos#83 (byte) current_xpos#84 (byte) current_xpos#71 +Alias (byte) current_orientation#51 = (byte) current_orientation#52 (byte) current_orientation#61 (byte) current_orientation#62 (byte) current_orientation#53 +Alias (byte*) current_piece#53 = (byte*) current_piece#54 (byte*) current_piece#60 (byte*) current_piece#61 (byte*) current_piece#55 +Alias (byte*) current_piece_gfx#68 = (byte*) current_piece_gfx#69 (byte*) current_piece_gfx#76 (byte*) current_piece_gfx#77 (byte*) current_piece_gfx#70 +Alias (byte) current_piece_color#54 = (byte) current_piece_color#55 (byte) current_piece_color#64 (byte) current_piece_color#65 (byte) current_piece_color#56 +Alias (byte) play_move_down::movedown#0 = (byte) play_move_down::movedown#4 +Alias (byte) current_movedown_counter#1 = (byte) current_movedown_counter#27 +Alias (byte) current_ypos#64 = (byte) current_ypos#65 +Alias (byte) current_xpos#89 = (byte) current_xpos#90 +Alias (byte) current_orientation#66 = (byte) current_orientation#67 +Alias (byte*) current_piece#65 = (byte*) current_piece#66 +Alias (byte*) current_piece_gfx#81 = (byte*) current_piece_gfx#82 +Alias (byte) current_piece_color#69 = (byte) current_piece_color#70 +Alias (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#9 +Alias (byte) current_ypos#40 = (byte) current_ypos#41 +Alias (byte) current_xpos#50 = (byte) current_xpos#51 +Alias (byte) current_orientation#41 = (byte) current_orientation#42 +Alias (byte) current_movedown_counter#28 = (byte) current_movedown_counter#8 +Alias (byte*) current_piece#42 = (byte*) current_piece#43 +Alias (byte*) current_piece_gfx#56 = (byte*) current_piece_gfx#57 +Alias (byte) current_piece_color#40 = (byte) current_piece_color#41 +Alias (byte) current_movedown_counter#18 = (byte) current_movedown_counter#22 +Alias (byte) current_ypos#11 = (byte) current_ypos#29 (byte) current_ypos#26 (byte) current_ypos#27 (byte) current_ypos#12 (byte) current_ypos#35 (byte) current_ypos#42 (byte) current_ypos#28 +Alias (byte*) current_piece#18 = (byte*) current_piece#19 (byte*) current_piece#30 (byte*) current_piece#22 (byte*) current_piece#44 (byte*) current_piece#32 (byte*) current_piece#45 (byte*) current_piece#31 +Alias (byte) current_orientation#12 = (byte) current_orientation#28 (byte) current_orientation#26 (byte) current_orientation#54 (byte) current_orientation#44 (byte) current_orientation#55 (byte) current_orientation#43 (byte) current_orientation#27 +Alias (byte*) current_piece_gfx#25 = (byte*) current_piece_gfx#26 (byte*) current_piece_gfx#40 (byte*) current_piece_gfx#71 (byte*) current_piece_gfx#58 (byte*) current_piece_gfx#42 (byte*) current_piece_gfx#59 (byte*) current_piece_gfx#41 +Alias (byte) current_xpos#14 = (byte) current_xpos#33 (byte) current_xpos#31 (byte) current_xpos#72 (byte) current_xpos#53 (byte) current_xpos#59 (byte) current_xpos#52 (byte) current_xpos#32 +Alias (byte) current_piece_color#19 = (byte) current_piece_color#20 (byte) current_piece_color#28 (byte) current_piece_color#57 (byte) current_piece_color#42 (byte) current_piece_color#30 (byte) current_piece_color#43 (byte) current_piece_color#29 +Alias (byte) play_collision::ypos#0 = (byte/signed word/word/dword/signed dword~) play_move_down::$11 +Alias (byte) play_collision::return#0 = (byte) play_collision::return#10 +Alias (byte*) current_piece#1 = (byte*) current_piece#9 +Alias (byte) current_orientation#1 = (byte) current_orientation#13 +Alias (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#13 +Alias (byte) current_xpos#1 = (byte) current_xpos#15 +Alias (byte) current_ypos#13 = (byte) current_ypos#2 +Alias (byte) current_piece_color#1 = (byte) current_piece_color#10 +Alias (byte) play_move_down::return#2 = (byte) play_move_down::return#4 +Alias (byte) current_movedown_counter#10 = (byte) current_movedown_counter#3 +Alias (byte) current_ypos#14 = (byte) current_ypos#3 +Alias (byte*) current_piece#10 = (byte*) current_piece#2 +Alias (byte) current_orientation#14 = (byte) current_orientation#2 +Alias (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#2 +Alias (byte) current_xpos#16 = (byte) current_xpos#2 +Alias (byte) current_piece_color#11 = (byte) current_piece_color#2 +Alias (byte) current_xpos#17 = (byte) current_xpos#35 (byte) current_xpos#39 (byte) current_xpos#36 (byte) current_xpos#54 (byte) current_xpos#18 (byte) current_xpos#37 (byte) current_xpos#55 (byte) current_xpos#19 (byte) current_xpos#56 (byte) current_xpos#21 +Alias (byte) current_ypos#15 = (byte) current_ypos#31 (byte) current_ypos#32 (byte) current_ypos#16 +Alias (byte) current_orientation#15 = (byte) current_orientation#30 (byte) current_orientation#31 (byte) current_orientation#16 +Alias (byte*) current_piece#23 = (byte*) current_piece#33 (byte*) current_piece#34 (byte*) current_piece#24 +Alias (byte) play_collision::xpos#1 = (byte/signed word/word/dword/signed dword~) play_move_leftright::$7 +Alias (byte) play_collision::return#1 = (byte) play_collision::return#11 +Alias (byte) play_move_leftright::key_event#1 = (byte) play_move_leftright::key_event#2 +Alias (byte) play_collision::xpos#2 = (byte/signed word/word/dword/signed dword~) play_move_leftright::$3 +Alias (byte) play_collision::return#12 = (byte) play_collision::return#2 +Alias (byte) play_move_leftright::return#1 = (byte) play_move_leftright::return#5 +Alias (byte) current_xpos#20 = (byte) current_xpos#4 +Alias (byte) current_orientation#17 = (byte) current_orientation#32 (byte) current_orientation#33 (byte) current_orientation#18 (byte) current_orientation#35 +Alias (byte) current_xpos#40 = (byte) current_xpos#57 (byte) current_xpos#58 (byte) current_xpos#41 +Alias (byte) current_ypos#33 = (byte) current_ypos#43 (byte) current_ypos#44 (byte) current_ypos#34 +Alias (byte*) current_piece#35 = (byte*) current_piece#46 (byte*) current_piece#47 (byte*) current_piece#36 +Alias (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#72 (byte*) current_piece_gfx#60 (byte*) current_piece_gfx#43 (byte*) current_piece_gfx#73 +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#1 = (byte) play_move_rotate::return#5 +Alias (byte) current_orientation#19 = (byte) current_orientation#3 +Alias (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#3 +Alias (byte) play_collision::return#13 = (byte) play_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#11 = (byte*) current_piece#21 (byte*) current_piece#25 +Alias (byte) current_orientation#34 = (byte) current_orientation#45 (byte) current_orientation#56 +Alias (byte*) current_piece_gfx#28 = (byte*) current_piece_gfx#44 (byte*) current_piece_gfx#61 +Alias (byte*) current_piece_gfx#4 = (byte*~) play_move_rotate::$9 +Alias (byte*) current_piece#0 = (byte*) current_piece#41 (byte*) current_piece#29 +Alias (byte) current_orientation#0 = (byte) current_orientation#50 (byte) current_orientation#40 +Alias (byte) current_movedown_counter#0 = (byte) current_movedown_counter#26 (byte) current_movedown_counter#20 +Alias (byte*) play_collision::piece_gfx#0 = (byte*~) play_collision::$0 +Alias (byte) play_collision::ypos2#0 = (byte~) play_collision::$1 +Alias (byte) play_collision::col#0 = (byte) play_collision::xpos#4 +Alias (byte) play_collision::ypos2#10 = (byte) play_collision::ypos2#3 (byte) play_collision::ypos2#5 (byte) play_collision::ypos2#9 (byte) play_collision::ypos2#8 (byte) play_collision::ypos2#7 +Alias (byte) play_collision::col#3 = (byte) play_collision::col#8 (byte) play_collision::col#6 (byte) play_collision::col#4 (byte) play_collision::col#5 (byte) play_collision::col#7 +Alias (byte*) play_collision::playfield_line#1 = (byte*) play_collision::playfield_line#4 (byte*) play_collision::playfield_line#5 (byte*) play_collision::playfield_line#3 (byte*) play_collision::playfield_line#2 (byte*) play_collision::playfield_line#7 +Alias (byte) play_collision::c#3 = (byte) play_collision::c#8 (byte) play_collision::c#7 (byte) play_collision::c#6 (byte) play_collision::c#5 (byte) play_collision::c#4 +Alias (byte*) play_collision::piece_gfx#1 = (byte*) play_collision::piece_gfx#9 (byte*) play_collision::piece_gfx#8 (byte*) play_collision::piece_gfx#7 (byte*) play_collision::piece_gfx#6 (byte*) play_collision::piece_gfx#5 +Alias (byte) play_collision::i#1 = (byte) play_collision::i#10 (byte) play_collision::i#9 (byte) play_collision::i#8 (byte) play_collision::i#7 (byte) play_collision::i#6 +Alias (byte) play_collision::l#10 = (byte) play_collision::l#4 (byte) play_collision::l#9 (byte) play_collision::l#8 (byte) play_collision::l#7 (byte) play_collision::l#5 +Alias (byte) play_collision::xpos#10 = (byte) play_collision::xpos#13 (byte) play_collision::xpos#8 (byte) play_collision::xpos#12 (byte) play_collision::xpos#11 (byte) play_collision::xpos#9 +Alias (byte) play_collision::return#14 = (byte) play_collision::return#5 +Alias (byte) play_collision::ypos2#4 = (byte) play_collision::ypos2#6 +Alias (byte) play_collision::l#2 = (byte) play_collision::l#3 +Alias (byte) play_collision::xpos#6 = (byte) play_collision::xpos#7 +Alias (byte*) play_collision::piece_gfx#3 = (byte*) play_collision::piece_gfx#4 +Alias (byte) play_collision::i#4 = (byte) play_collision::i#5 +Alias (byte) play_lock_current::ypos2#0 = (byte~) play_lock_current::$0 +Alias (byte) current_piece_color#12 = (byte) current_piece_color#22 +Alias (byte*) play_lock_current::playfield_line#1 = (byte*) play_lock_current::playfield_line#2 +Alias (byte) play_lock_current::col#3 = (byte) play_lock_current::col#4 +Alias (byte) play_lock_current::c#3 = (byte) play_lock_current::c#4 +Alias (byte*) current_piece_gfx#16 = (byte*) current_piece_gfx#47 +Alias (byte) play_lock_current::i#1 = (byte) play_lock_current::i#6 +Alias (byte) play_lock_current::ypos2#5 = (byte) play_lock_current::ypos2#6 +Alias (byte) play_lock_current::l#4 = (byte) play_lock_current::l#5 +Alias (byte) current_xpos#74 = (byte) current_xpos#75 +Alias (byte) play_lock_current::ypos2#3 = (byte) play_lock_current::ypos2#4 +Alias (byte) play_lock_current::l#2 = (byte) play_lock_current::l#3 +Alias (byte) current_xpos#43 = (byte) current_xpos#60 +Alias (byte*) current_piece_gfx#31 = (byte*) current_piece_gfx#46 +Alias (byte) play_lock_current::i#4 = (byte) play_lock_current::i#5 +Alias (byte) current_piece_color#32 = (byte) current_piece_color#46 +Alias (byte) sid_rnd::return#2 = (byte) sid_rnd::return#4 +Alias (byte) play_spawn_current::piece_idx#1 = (byte~) play_spawn_current::$2 +Alias (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#3 +Alias (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#5 (byte*~) play_spawn_current::$4 (byte*) current_piece_gfx#6 +Alias (byte*) current_piece#13 = (byte*) current_piece#3 (byte*) current_piece#4 +Alias (byte) current_orientation#20 = (byte) current_orientation#5 (byte) current_orientation#6 +Alias (byte) current_xpos#24 = (byte) current_xpos#6 (byte) current_xpos#7 +Alias (byte) current_ypos#19 = (byte) current_ypos#4 (byte) current_ypos#5 +Alias (byte) current_piece_color#13 = (byte) current_piece_color#3 (byte) current_piece_color#4 +Alias (byte) play_remove_lines::r#0 = (byte/signed word/word/dword/signed dword~) play_remove_lines::$1 +Alias (byte) play_remove_lines::w#0 = (byte/signed word/word/dword/signed dword~) play_remove_lines::$3 +Alias (byte) play_remove_lines::c#0 = (byte) play_remove_lines::c#2 +Alias (byte) play_remove_lines::w#8 = (byte) play_remove_lines::w#9 +Alias (byte) play_remove_lines::x#3 = (byte) play_remove_lines::x#4 +Alias (byte) play_remove_lines::r#1 = (byte) play_remove_lines::r#6 +Alias (byte) play_remove_lines::y#6 = (byte) play_remove_lines::y#7 +Alias (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#3 +Alias (byte) play_remove_lines::y#3 = (byte) play_remove_lines::y#4 (byte) play_remove_lines::y#5 +Alias (byte) play_remove_lines::w#1 = (byte) play_remove_lines::w#10 (byte) play_remove_lines::w#5 +Alias (byte) play_remove_lines::r#4 = (byte) play_remove_lines::r#8 (byte) play_remove_lines::r#7 +Alias (byte) play_remove_lines::w#2 = (byte~) play_remove_lines::$11 +Alias (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#7 +Alias (byte*) current_piece#26 = (byte*) current_piece#48 (byte*) current_piece#57 (byte*) current_piece#37 +Alias (byte) current_orientation#36 = (byte) current_orientation#57 (byte) current_orientation#63 (byte) current_orientation#46 +Alias (byte*) current_piece_gfx#32 = (byte*) current_piece_gfx#63 (byte*) current_piece_gfx#74 (byte*) current_piece_gfx#48 +Alias (byte) current_xpos#44 = (byte) current_xpos#76 (byte) current_xpos#85 (byte) current_xpos#61 +Alias (byte) current_ypos#36 = (byte) current_ypos#56 (byte) current_ypos#62 (byte) current_ypos#45 +Alias (byte) current_piece_color#23 = (byte) current_piece_color#47 (byte) current_piece_color#58 (byte) current_piece_color#33 +Alias (byte) keyboard_events_size#33 = (byte) keyboard_events_size#67 (byte) keyboard_events_size#70 (byte) keyboard_events_size#65 (byte) keyboard_events_size#58 (byte) keyboard_events_size#49 (byte) keyboard_events_size#40 +Alias (byte) keyboard_modifiers#30 = (byte) keyboard_modifiers#51 (byte) keyboard_modifiers#52 (byte) keyboard_modifiers#49 (byte) keyboard_modifiers#46 (byte) keyboard_modifiers#40 (byte) keyboard_modifiers#34 +Alias (byte) current_movedown_counter#24 = (byte) current_movedown_counter#44 (byte) current_movedown_counter#45 (byte) current_movedown_counter#41 (byte) current_movedown_counter#37 (byte) current_movedown_counter#33 (byte) current_movedown_counter#29 +Alias (byte*) current_piece#14 = (byte*) current_piece#5 (byte*) current_piece#49 (byte*) current_piece#39 +Alias (byte) current_orientation#21 = (byte) current_orientation#7 (byte) current_orientation#58 (byte) current_orientation#48 +Alias (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#7 (byte*) current_piece_gfx#64 (byte*) current_piece_gfx#50 +Alias (byte) current_xpos#25 = (byte) current_xpos#8 (byte) current_xpos#66 (byte) current_xpos#63 +Alias (byte) current_ypos#20 = (byte) current_ypos#6 (byte) current_ypos#24 (byte) current_ypos#47 +Alias (byte) current_piece_color#14 = (byte) current_piece_color#5 (byte) current_piece_color#48 (byte) current_piece_color#35 +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#12 = (byte) current_movedown_counter#42 (byte) current_movedown_counter#19 (byte) current_movedown_counter#5 +Alias (byte) current_ypos#22 = (byte) current_ypos#68 (byte) current_ypos#38 (byte) current_ypos#8 +Alias (byte*) current_piece#16 = (byte*) current_piece#67 (byte*) current_piece#28 (byte*) current_piece#7 +Alias (byte) current_orientation#10 = (byte) current_orientation#71 (byte) current_orientation#39 (byte) current_orientation#24 +Alias (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#83 (byte*) current_piece_gfx#35 (byte*) current_piece_gfx#21 +Alias (byte) current_xpos#11 = (byte) current_xpos#93 (byte) current_xpos#46 (byte) current_xpos#28 +Alias (byte) current_piece_color#16 = (byte) current_piece_color#71 (byte) current_piece_color#25 (byte) current_piece_color#7 +Alias (byte) keyboard_events_size#41 = (byte) keyboard_events_size#51 +Alias (byte) keyboard_modifiers#35 = (byte) keyboard_modifiers#42 +Alias (byte) current_movedown_counter#38 = (byte) current_movedown_counter#43 +Alias (byte) current_ypos#66 = (byte) current_ypos#69 +Alias (byte*) current_piece#62 = (byte*) current_piece#68 +Alias (byte) current_orientation#68 = (byte) current_orientation#72 +Alias (byte*) current_piece_gfx#78 = (byte*) current_piece_gfx#84 +Alias (byte) current_xpos#91 = (byte) current_xpos#94 +Alias (byte) current_piece_color#66 = (byte) current_piece_color#72 +Alias (byte) keyboard_events_size#26 = (byte) keyboard_events_size#42 (byte) keyboard_events_size#34 +Alias (byte) keyboard_modifiers#23 = (byte) keyboard_modifiers#36 (byte) keyboard_modifiers#31 +Alias (byte) current_movedown_counter#14 = (byte) current_movedown_counter#39 (byte) current_movedown_counter#34 (byte) current_movedown_counter#30 (byte) current_movedown_counter#25 +Alias (byte) current_ypos#37 = (byte) current_ypos#67 (byte) current_ypos#63 (byte) current_ypos#57 (byte) current_ypos#48 +Alias (byte*) current_piece#27 = (byte*) current_piece#63 (byte*) current_piece#58 (byte*) current_piece#50 (byte*) current_piece#40 +Alias (byte) current_orientation#37 = (byte) current_orientation#69 (byte) current_orientation#64 (byte) current_orientation#59 (byte) current_orientation#49 +Alias (byte*) current_piece_gfx#33 = (byte*) current_piece_gfx#79 (byte*) current_piece_gfx#75 (byte*) current_piece_gfx#65 (byte*) current_piece_gfx#51 +Alias (byte) current_xpos#45 = (byte) current_xpos#92 (byte) current_xpos#86 (byte) current_xpos#77 (byte) current_xpos#64 +Alias (byte) current_piece_color#24 = (byte) current_piece_color#67 (byte) current_piece_color#59 (byte) current_piece_color#49 (byte) current_piece_color#36 +Alias (byte) keyboard_events_size#17 = (byte) keyboard_events_size#6 +Alias (byte) keyboard_modifiers#15 = (byte) keyboard_modifiers#7 (byte) keyboard_modifiers#50 (byte) keyboard_modifiers#47 (byte) keyboard_modifiers#43 (byte) keyboard_modifiers#37 (byte) keyboard_modifiers#48 (byte) keyboard_modifiers#44 (byte) keyboard_modifiers#38 +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#59 (byte) keyboard_events_size#52 (byte) keyboard_events_size#43 (byte) keyboard_events_size#60 (byte) keyboard_events_size#53 (byte) keyboard_events_size#44 +Alias (byte) main::key_event#0 = (byte~) main::$9 (byte) main::key_event#1 (byte) main::key_event#2 +Alias (byte) play_move_down::return#3 = (byte) play_move_down::return#5 +Alias (byte) main::render#0 = (byte) main::render#4 +Alias (byte) current_movedown_counter#11 = (byte) current_movedown_counter#4 (byte) current_movedown_counter#35 (byte) current_movedown_counter#31 (byte) current_movedown_counter#40 (byte) current_movedown_counter#36 (byte) current_movedown_counter#32 +Alias (byte) current_ypos#21 = (byte) current_ypos#7 (byte) current_ypos#54 (byte) current_ypos#58 (byte) current_ypos#49 (byte) current_ypos#25 (byte) current_ypos#59 +Alias (byte*) current_piece#15 = (byte*) current_piece#6 (byte*) current_piece#56 (byte*) current_piece#51 (byte*) current_piece#64 (byte*) current_piece#59 (byte*) current_piece#52 +Alias (byte) current_orientation#22 = (byte) current_orientation#8 (byte) current_orientation#38 +Alias (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#8 (byte*) current_piece_gfx#34 +Alias (byte) current_xpos#26 = (byte) current_xpos#9 +Alias (byte) current_piece_color#15 = (byte) current_piece_color#6 (byte) current_piece_color#60 (byte) current_piece_color#50 (byte) current_piece_color#68 (byte) current_piece_color#61 (byte) current_piece_color#51 +Alias (byte) play_move_leftright::return#4 = (byte) play_move_leftright::return#6 +Alias (byte) main::render#1 = (byte) main::render#5 +Alias (byte) current_xpos#10 = (byte) current_xpos#27 (byte) current_xpos#78 (byte) current_xpos#87 (byte) current_xpos#67 (byte) current_xpos#79 +Alias (byte) play_move_rotate::return#4 = (byte) play_move_rotate::return#6 +Alias (byte) main::render#2 = (byte) main::render#6 +Alias (byte) current_orientation#23 = (byte) current_orientation#9 (byte) current_orientation#70 (byte) current_orientation#65 (byte) current_orientation#60 +Alias (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#9 (byte*) current_piece_gfx#80 (byte*) current_piece_gfx#67 (byte*) current_piece_gfx#66 Alias (byte*) current_piece#17 = (byte*) current_piece#8 Alias (byte) current_orientation#11 = (byte) current_orientation#25 Alias (byte*) current_piece_gfx#11 = (byte*) current_piece_gfx#22 @@ -4197,103 +4190,103 @@ 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#63 (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_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) 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#55 (byte) current_ypos#66 (byte) current_ypos#45 -Alias (byte) current_xpos#17 = (byte) current_xpos#71 (byte) current_xpos#90 (byte) current_xpos#52 -Alias (byte) current_orientation#16 = (byte) current_orientation#55 (byte) current_orientation#70 (byte) current_orientation#45 -Alias (byte*) current_piece#21 = (byte*) current_piece#58 (byte*) current_piece#68 (byte*) current_piece#47 -Alias (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#70 (byte*) current_piece_gfx#83 (byte*) current_piece_gfx#57 -Alias (byte) current_piece_color#21 = (byte) current_piece_color#56 (byte) current_piece_color#71 (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_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 -Alias (byte*) collision::piece_gfx#1 = (byte*) collision::piece_gfx#3 -Alias (byte) collision::i#1 = (byte) collision::i#4 -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::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_xpos#45 = (byte) current_xpos#75 -Alias (byte) remove_lines::c#0 = (byte) remove_lines::c#1 -Alias (byte) remove_lines::w#4 = (byte) remove_lines::w#8 -Alias (byte) remove_lines::x#2 = (byte) remove_lines::x#3 -Alias (byte) remove_lines::r#1 = (byte) remove_lines::r#4 (byte) remove_lines::r#5 -Alias (byte) remove_lines::y#2 = (byte) remove_lines::y#3 (byte) remove_lines::y#6 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*) current_piece_gfx#12 = (byte*) current_piece_gfx#23 Alias (byte) render_current::i#1 = (byte) render_current::i#3 -Alias (byte) current_xpos#79 = (byte) current_xpos#85 -Alias (byte) current_piece_color#16 = (byte) current_piece_color#50 +Alias (byte) current_xpos#68 = (byte) current_xpos#80 +Alias (byte) current_piece_color#18 = (byte) current_piece_color#38 Alias (byte*) render_current::screen_line#1 = (byte*) render_current::screen_line#4 +Alias (byte) current_movedown_counter#1 = (byte) current_movedown_counter#15 (byte) current_movedown_counter#28 (byte) current_movedown_counter#18 +Alias (byte) current_ypos#11 = (byte) current_ypos#51 (byte) current_ypos#64 (byte) current_ypos#40 +Alias (byte) current_xpos#14 = (byte) current_xpos#69 (byte) current_xpos#89 (byte) current_xpos#50 +Alias (byte) current_orientation#12 = (byte) current_orientation#51 (byte) current_orientation#66 (byte) current_orientation#41 +Alias (byte*) current_piece#18 = (byte*) current_piece#53 (byte*) current_piece#65 (byte*) current_piece#42 +Alias (byte*) current_piece_gfx#25 = (byte*) current_piece_gfx#68 (byte*) current_piece_gfx#81 (byte*) current_piece_gfx#56 +Alias (byte) current_piece_color#19 = (byte) current_piece_color#54 (byte) current_piece_color#69 (byte) current_piece_color#40 +Alias (byte) current_xpos#17 = (byte) current_xpos#38 +Alias (byte) current_xpos#22 = (byte) current_xpos#40 +Alias (byte) current_ypos#17 = (byte) current_ypos#33 +Alias (byte*) current_piece#11 = (byte*) current_piece#35 +Alias (byte) current_orientation#17 = (byte) current_orientation#34 +Alias (byte*) current_piece_gfx#28 = (byte*) current_piece_gfx#29 +Alias (byte) play_collision::col#2 = (byte) play_collision::col#3 +Alias (byte) play_collision::c#2 = (byte) play_collision::c#3 +Alias (byte*) play_collision::piece_gfx#1 = (byte*) play_collision::piece_gfx#3 +Alias (byte) play_collision::i#1 = (byte) play_collision::i#4 +Alias (byte) play_collision::ypos2#10 = (byte) play_collision::ypos2#4 +Alias (byte) play_collision::l#10 = (byte) play_collision::l#2 +Alias (byte) play_collision::xpos#10 = (byte) play_collision::xpos#6 +Alias (byte*) play_collision::playfield_line#1 = (byte*) play_collision::playfield_line#6 +Alias (byte) play_lock_current::col#2 = (byte) play_lock_current::col#3 +Alias (byte) play_lock_current::c#2 = (byte) play_lock_current::c#3 +Alias (byte*) current_piece_gfx#16 = (byte*) current_piece_gfx#31 +Alias (byte) play_lock_current::i#1 = (byte) play_lock_current::i#4 +Alias (byte) play_lock_current::ypos2#3 = (byte) play_lock_current::ypos2#5 +Alias (byte) play_lock_current::l#2 = (byte) play_lock_current::l#4 +Alias (byte) current_piece_color#12 = (byte) current_piece_color#32 +Alias (byte*) play_lock_current::playfield_line#1 = (byte*) play_lock_current::playfield_line#3 +Alias (byte) current_xpos#43 = (byte) current_xpos#74 +Alias (byte) play_remove_lines::c#0 = (byte) play_remove_lines::c#1 +Alias (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#8 +Alias (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#3 +Alias (byte) play_remove_lines::r#1 = (byte) play_remove_lines::r#4 (byte) play_remove_lines::r#5 +Alias (byte) play_remove_lines::y#2 = (byte) play_remove_lines::y#3 (byte) play_remove_lines::y#6 +Alias (byte*) current_piece#15 = (byte*) current_piece#38 +Alias (byte) current_orientation#23 = (byte) current_orientation#47 +Alias (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#49 +Alias (byte) current_xpos#10 = (byte) current_xpos#62 +Alias (byte) current_ypos#21 = (byte) current_ypos#46 +Alias (byte) current_piece_color#15 = (byte) current_piece_color#34 +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#11 = (byte) current_movedown_counter#23 Successful SSA optimization Pass2AliasElimination Self Phi Eliminated (byte) fill::val#2 Self Phi Eliminated (byte*) fill::end#1 Self Phi Eliminated (byte) keyboard_event_scan::row_scan#1 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#39 -Self Phi Eliminated (byte) current_ypos#64 -Self Phi Eliminated (byte*) current_piece#61 -Self Phi Eliminated (byte) current_orientation#67 -Self Phi Eliminated (byte*) current_piece_gfx#76 -Self Phi Eliminated (byte) current_xpos#88 -Self Phi Eliminated (byte) current_piece_color#62 -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_orientation#27 -Self Phi Eliminated (byte*) current_piece_gfx#24 -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_piece_color#14 -Self Phi Eliminated (byte*) lock_current::playfield_line#1 -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) remove_lines::y#2 Self Phi Eliminated (byte*) render_init::line#2 Self Phi Eliminated (byte) render_init::l#2 Self Phi Eliminated (byte) render_playfield::l#3 -Self Phi Eliminated (byte*) current_piece_gfx#21 +Self Phi Eliminated (byte*) current_piece_gfx#12 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) current_piece_color#18 Self Phi Eliminated (byte*) render_current::screen_line#1 -Self Phi Eliminated (byte) current_xpos#79 +Self Phi Eliminated (byte) current_xpos#68 +Self Phi Eliminated (byte*) play_collision::piece_gfx#1 +Self Phi Eliminated (byte) play_collision::ypos2#10 +Self Phi Eliminated (byte) play_collision::l#10 +Self Phi Eliminated (byte) play_collision::xpos#10 +Self Phi Eliminated (byte*) play_collision::playfield_line#1 +Self Phi Eliminated (byte*) current_piece_gfx#16 +Self Phi Eliminated (byte) current_piece_color#12 +Self Phi Eliminated (byte*) play_lock_current::playfield_line#1 +Self Phi Eliminated (byte) play_lock_current::ypos2#3 +Self Phi Eliminated (byte) play_lock_current::l#2 +Self Phi Eliminated (byte) current_xpos#43 +Self Phi Eliminated (byte) play_remove_lines::y#2 +Self Phi Eliminated (byte) keyboard_events_size#41 +Self Phi Eliminated (byte) keyboard_modifiers#35 +Self Phi Eliminated (byte) current_movedown_counter#38 +Self Phi Eliminated (byte) current_ypos#66 +Self Phi Eliminated (byte*) current_piece#62 +Self Phi Eliminated (byte) current_orientation#68 +Self Phi Eliminated (byte*) current_piece_gfx#78 +Self Phi Eliminated (byte) current_xpos#91 +Self Phi Eliminated (byte) current_piece_color#66 +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#37 +Self Phi Eliminated (byte*) current_piece#27 +Self Phi Eliminated (byte) current_orientation#37 +Self Phi Eliminated (byte*) current_piece_gfx#33 +Self Phi Eliminated (byte) current_xpos#45 +Self Phi Eliminated (byte) current_piece_color#24 Successful SSA optimization Pass2SelfPhiElimination Redundant Phi (byte) fill::val#2 (byte) fill::val#3 Redundant Phi (byte*) fill::end#1 (byte*) fill::end#0 @@ -4302,120 +4295,118 @@ 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_orientation#26 (byte) current_orientation#0 -Redundant Phi (byte*) current_piece_gfx#23 (byte*) current_piece_gfx#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_orientation#1 (byte) current_orientation#10 -Redundant Phi (byte*) current_piece_gfx#1 (byte*) current_piece_gfx#10 -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#39 (byte) current_movedown_counter#15 -Redundant Phi (byte) current_ypos#64 (byte) current_ypos#12 -Redundant Phi (byte*) current_piece#61 (byte*) current_piece#11 -Redundant Phi (byte) current_orientation#67 (byte) current_orientation#15 -Redundant Phi (byte*) current_piece_gfx#76 (byte*) current_piece_gfx#15 -Redundant Phi (byte) current_xpos#88 (byte) current_xpos#16 -Redundant Phi (byte) current_piece_color#62 (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#39 -Redundant Phi (byte) current_ypos#25 (byte) current_ypos#64 -Redundant Phi (byte*) current_piece#19 (byte*) current_piece#61 -Redundant Phi (byte) current_orientation#27 (byte) current_orientation#67 -Redundant Phi (byte*) current_piece_gfx#24 (byte*) current_piece_gfx#76 -Redundant Phi (byte) current_xpos#31 (byte) current_xpos#88 -Redundant Phi (byte) current_piece_color#19 (byte) current_piece_color#62 -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_orientation#13 (byte) current_orientation#18 -Redundant Phi (byte*) current_piece_gfx#13 (byte*) current_piece_gfx#17 -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_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_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_orientation#17 (byte) current_orientation#10 -Redundant Phi (byte*) current_piece_gfx#16 (byte*) current_piece_gfx#10 -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_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_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 -Redundant Phi (byte*) current_piece_gfx#30 (byte*) current_piece_gfx#13 -Redundant Phi (byte*) collision::piece_gfx#1 (byte*) collision::piece_gfx#2 -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#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_piece_color#47 (byte) current_piece_color#21 -Redundant Phi (byte*) current_piece_gfx#19 (byte*) current_piece_gfx#32 -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::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) remove_lines::y#2 (byte) remove_lines::y#8 -Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2 Redundant Phi (byte*) render_init::line#2 (byte*) render_init::line#4 Redundant Phi (byte) render_init::l#2 (byte) render_init::l#4 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*) current_piece_gfx#12 (byte*) current_piece_gfx#24 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#51 +Redundant Phi (byte) current_piece_color#18 (byte) current_piece_color#39 Redundant Phi (byte*) render_current::screen_line#1 (byte*) render_current::screen_line#0 -Redundant Phi (byte) current_xpos#79 (byte) current_xpos#28 -Redundant Phi (byte*) current_piece#17 (byte*) current_piece#11 -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_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) current_xpos#68 (byte) current_xpos#13 +Redundant Phi (byte) current_movedown_counter#7 (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#11 (byte) current_ypos#37 +Redundant Phi (byte) current_xpos#14 (byte) current_xpos#45 +Redundant Phi (byte) current_orientation#12 (byte) current_orientation#37 +Redundant Phi (byte*) current_piece#18 (byte*) current_piece#27 +Redundant Phi (byte*) current_piece_gfx#25 (byte*) current_piece_gfx#33 +Redundant Phi (byte) current_piece_color#19 (byte) current_piece_color#24 +Redundant Phi (byte*) current_piece#1 (byte*) current_piece#13 +Redundant Phi (byte) current_orientation#1 (byte) current_orientation#20 +Redundant Phi (byte*) current_piece_gfx#1 (byte*) current_piece_gfx#17 +Redundant Phi (byte) current_xpos#1 (byte) current_xpos#24 +Redundant Phi (byte) current_ypos#13 (byte) current_ypos#19 +Redundant Phi (byte) current_piece_color#1 (byte) current_piece_color#13 +Redundant Phi (byte) play_move_leftright::key_event#1 (byte) play_move_leftright::key_event#0 +Redundant Phi (byte) current_xpos#17 (byte) current_xpos#26 +Redundant Phi (byte) current_ypos#15 (byte) current_ypos#21 +Redundant Phi (byte) current_orientation#15 (byte) current_orientation#22 +Redundant Phi (byte*) current_piece#23 (byte*) current_piece#15 +Redundant Phi (byte) play_move_rotate::key_event#1 (byte) play_move_rotate::key_event#0 +Redundant Phi (byte) current_orientation#17 (byte) current_orientation#22 +Redundant Phi (byte) current_xpos#22 (byte) current_xpos#10 +Redundant Phi (byte) current_ypos#17 (byte) current_ypos#21 +Redundant Phi (byte*) current_piece#11 (byte*) current_piece#15 +Redundant Phi (byte*) current_piece_gfx#28 (byte*) current_piece_gfx#19 +Redundant Phi (byte*) play_collision::piece_gfx#1 (byte*) play_collision::piece_gfx#2 +Redundant Phi (byte) play_collision::ypos2#10 (byte) play_collision::ypos2#2 +Redundant Phi (byte) play_collision::l#10 (byte) play_collision::l#6 +Redundant Phi (byte) play_collision::xpos#10 (byte) play_collision::col#0 +Redundant Phi (byte*) play_collision::playfield_line#1 (byte*) play_collision::playfield_line#0 +Redundant Phi (byte) current_ypos#18 (byte) current_ypos#11 +Redundant Phi (byte) current_xpos#42 (byte) current_xpos#14 +Redundant Phi (byte*) current_piece_gfx#45 (byte*) current_piece_gfx#25 +Redundant Phi (byte) current_piece_color#45 (byte) current_piece_color#19 +Redundant Phi (byte*) current_piece_gfx#16 (byte*) current_piece_gfx#30 +Redundant Phi (byte) current_piece_color#12 (byte) current_piece_color#31 +Redundant Phi (byte*) play_lock_current::playfield_line#1 (byte*) play_lock_current::playfield_line#0 +Redundant Phi (byte) play_lock_current::ypos2#3 (byte) play_lock_current::ypos2#2 +Redundant Phi (byte) play_lock_current::l#2 (byte) play_lock_current::l#6 +Redundant Phi (byte) current_xpos#43 (byte) current_xpos#23 +Redundant Phi (byte) play_remove_lines::y#2 (byte) play_remove_lines::y#8 +Redundant Phi (byte*) current_piece#26 (byte*) current_piece#0 +Redundant Phi (byte) current_orientation#36 (byte) current_orientation#0 +Redundant Phi (byte*) current_piece_gfx#32 (byte*) current_piece_gfx#0 +Redundant Phi (byte) current_xpos#44 (byte) current_xpos#0 +Redundant Phi (byte) current_ypos#36 (byte) current_ypos#0 +Redundant Phi (byte) current_piece_color#23 (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#24 (byte) current_movedown_counter#0 +Redundant Phi (byte*) current_piece#14 (byte*) current_piece#13 +Redundant Phi (byte) current_orientation#21 (byte) current_orientation#20 +Redundant Phi (byte*) current_piece_gfx#18 (byte*) current_piece_gfx#17 +Redundant Phi (byte) current_xpos#25 (byte) current_xpos#24 +Redundant Phi (byte) current_ypos#20 (byte) current_ypos#19 +Redundant Phi (byte) current_piece_color#14 (byte) current_piece_color#13 +Redundant Phi (byte) keyboard_events_size#41 (byte) keyboard_events_size#19 +Redundant Phi (byte) keyboard_modifiers#35 (byte) keyboard_modifiers#16 +Redundant Phi (byte) current_movedown_counter#38 (byte) current_movedown_counter#12 +Redundant Phi (byte) current_ypos#66 (byte) current_ypos#22 +Redundant Phi (byte*) current_piece#62 (byte*) current_piece#16 +Redundant Phi (byte) current_orientation#68 (byte) current_orientation#10 +Redundant Phi (byte*) current_piece_gfx#78 (byte*) current_piece_gfx#10 +Redundant Phi (byte) current_xpos#91 (byte) current_xpos#11 +Redundant Phi (byte) current_piece_color#66 (byte) current_piece_color#16 +Redundant Phi (byte) keyboard_events_size#26 (byte) keyboard_events_size#41 +Redundant Phi (byte) keyboard_modifiers#23 (byte) keyboard_modifiers#35 +Redundant Phi (byte) current_movedown_counter#14 (byte) current_movedown_counter#38 +Redundant Phi (byte) current_ypos#37 (byte) current_ypos#66 +Redundant Phi (byte*) current_piece#27 (byte*) current_piece#62 +Redundant Phi (byte) current_orientation#37 (byte) current_orientation#68 +Redundant Phi (byte*) current_piece_gfx#33 (byte*) current_piece_gfx#78 +Redundant Phi (byte) current_xpos#45 (byte) current_xpos#91 +Redundant Phi (byte) current_piece_color#24 (byte) current_piece_color#66 +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#11 (byte) current_movedown_counter#10 +Redundant Phi (byte) current_ypos#21 (byte) current_ypos#14 +Redundant Phi (byte*) current_piece#15 (byte*) current_piece#10 +Redundant Phi (byte) current_orientation#22 (byte) current_orientation#14 +Redundant Phi (byte*) current_piece_gfx#19 (byte*) current_piece_gfx#14 +Redundant Phi (byte) current_xpos#26 (byte) current_xpos#16 +Redundant Phi (byte) current_piece_color#15 (byte) current_piece_color#11 +Redundant Phi (byte) current_xpos#10 (byte) current_xpos#20 +Redundant Phi (byte) current_orientation#23 (byte) current_orientation#19 +Redundant Phi (byte*) current_piece_gfx#20 (byte*) current_piece_gfx#15 +Redundant Phi (byte*) current_piece#17 (byte*) current_piece#16 +Redundant Phi (byte) current_orientation#11 (byte) current_orientation#10 +Redundant Phi (byte*) current_piece_gfx#11 (byte*) current_piece_gfx#10 +Redundant Phi (byte) current_xpos#12 (byte) current_xpos#11 +Redundant Phi (byte) current_ypos#23 (byte) current_ypos#22 +Redundant Phi (byte) current_piece_color#17 (byte) current_piece_color#16 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 +Redundant Phi (byte) current_movedown_counter#13 (byte) current_movedown_counter#12 Successful SSA optimization Pass2RedundantPhiElimination Redundant Phi (byte) keyboard_event_scan::row#4 (byte) keyboard_event_scan::row#2 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#64 (byte) current_xpos#28 -Redundant Phi (byte*) current_piece_gfx#65 (byte*) current_piece_gfx#35 -Redundant Phi (byte) current_piece_color#68 (byte) current_piece_color#51 +Redundant Phi (byte) current_xpos#49 (byte) current_xpos#13 +Redundant Phi (byte*) current_piece_gfx#54 (byte*) current_piece_gfx#24 +Redundant Phi (byte) current_piece_color#63 (byte) current_piece_color#39 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 @@ -4429,39 +4420,6 @@ 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::$6 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -Simple Condition (bool~) main::$7 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@8 -Simple Condition (bool~) main::$14 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_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 -Simple Condition (bool~) play_move_leftright::$10 if((byte~) play_move_leftright::$8!=(byte) COLLISION_NONE#0) goto play_move_leftright::@5 -Simple Condition (bool~) play_move_leftright::$2 if((byte) play_move_leftright::key_event#0!=(byte) KEY_DOT#0) goto play_move_leftright::@2 -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::$8 if((byte~) play_move_rotate::$6!=(byte) COLLISION_NONE#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 -Simple Condition (bool~) collision::$9 if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -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::$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~) remove_lines::$7 if((byte) remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@3 -Simple Condition (bool~) remove_lines::$8 if((byte) remove_lines::x#1!=rangelast(0,remove_lines::$5)) goto remove_lines::@2 -Simple Condition (bool~) remove_lines::$10 if((byte) remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@4 -Simple Condition (bool~) remove_lines::$12 if((byte) remove_lines::y#1!=rangelast(0,remove_lines::$4)) goto remove_lines::@1 -Simple Condition (bool~) remove_lines::$13 if((byte) remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@6 -Simple Condition (bool~) tables_init::$2 if((byte) tables_init::j#1!=rangelast(0,tables_init::$0)) goto tables_init::@1 Simple Condition (bool~) render_init::$6 if((byte) render_init::i#1!=rangelast(0,render_init::$4)) goto render_init::@1 Simple Condition (bool~) render_init::$11 if((byte) render_init::c#1!=rangelast(0,render_init::$9)) goto render_init::@3 Simple Condition (bool~) render_init::$12 if((byte) render_init::l#1!=rangelast(0,render_init::$8)) goto render_init::@2 @@ -4472,6 +4430,39 @@ Simple Condition (bool~) render_current::$9 if((byte) render_current::l#1!=range Simple Condition (bool~) render_current::$5 if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 Simple Condition (bool~) render_current::$8 if((byte) render_current::c#1!=rangelast(0,3)) goto render_current::@3 Simple Condition (bool~) render_current::$7 if((byte) render_current::xpos#2>=(byte) PLAYFIELD_COLS#0) goto render_current::@5 +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#1<(byte) current_movedown_slow#0) goto play_move_down::@4 +Simple Condition (bool~) play_move_down::$6 if((byte) current_movedown_counter#1<(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 +Simple Condition (bool~) play_move_leftright::$10 if((byte~) play_move_leftright::$8!=(byte) COLLISION_NONE#0) goto play_move_leftright::@5 +Simple Condition (bool~) play_move_leftright::$2 if((byte) play_move_leftright::key_event#0!=(byte) KEY_DOT#0) goto play_move_leftright::@2 +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::$8 if((byte~) play_move_rotate::$6!=(byte) COLLISION_NONE#0) goto play_move_rotate::@5 +Simple Condition (bool~) play_collision::$3 if(*((byte*) play_collision::piece_gfx#2 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 +Simple Condition (bool~) play_collision::$14 if((byte) play_collision::c#1!=rangelast(0,3)) goto play_collision::@2 +Simple Condition (bool~) play_collision::$6 if((byte) play_collision::ypos2#2<(byte/signed word/word/dword/signed dword~) play_collision::$4) goto play_collision::@4 +Simple Condition (bool~) play_collision::$9 if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 +Simple Condition (bool~) play_collision::$11 if((byte) play_collision::col#2<(byte) PLAYFIELD_COLS#0) goto play_collision::@6 +Simple Condition (bool~) play_collision::$13 if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@7 +Simple Condition (bool~) play_collision::$15 if((byte) play_collision::l#1!=rangelast(0,3)) goto play_collision::@1 +Simple Condition (bool~) play_lock_current::$2 if(*((byte*) current_piece_gfx#30 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 +Simple Condition (bool~) play_lock_current::$3 if((byte) play_lock_current::c#1!=rangelast(0,3)) goto play_lock_current::@2 +Simple Condition (bool~) play_lock_current::$4 if((byte) play_lock_current::l#1!=rangelast(0,3)) goto play_lock_current::@1 +Simple Condition (bool~) play_spawn_current::$0 if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 +Simple Condition (bool~) play_remove_lines::$7 if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@3 +Simple Condition (bool~) play_remove_lines::$8 if((byte) play_remove_lines::x#1!=rangelast(0,play_remove_lines::$5)) goto play_remove_lines::@2 +Simple Condition (bool~) play_remove_lines::$10 if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 +Simple Condition (bool~) play_remove_lines::$12 if((byte) play_remove_lines::y#1!=rangelast(0,play_remove_lines::$4)) goto play_remove_lines::@1 +Simple Condition (bool~) play_remove_lines::$13 if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 +Simple Condition (bool~) play_init::$2 if((byte) play_init::j#1!=rangelast(0,play_init::$0)) goto play_init::@1 +Simple Condition (bool~) main::$6 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 +Simple Condition (bool~) main::$7 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@8 +Simple Condition (bool~) main::$14 if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 @@ -4644,66 +4635,15 @@ Constant (const byte) SID_CONTROL_RING#0 = 4 Constant (const byte) SID_CONTROL_SYNC#0 = 2 Constant (const byte) SID_CONTROL_GATE#0 = 1 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_SCREEN#0 = ((byte*))1024 +Constant (const byte*) PLAYFIELD_SPRITES#0 = ((byte*))8192 +Constant (const byte*) PLAYFIELD_CHARSET#0 = ((byte*))10240 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_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_slow#0 = 50 -Constant (const byte) current_movedown_fast#0 = 5 -Constant (const byte) current_movedown_counter#0 = 0 -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 -Constant (const byte) current_movedown_counter#4 = 0 -Constant (const byte) play_move_down::return#2 = 1 -Constant (const byte) play_move_leftright::return#1 = 1 -Constant (const byte) play_move_leftright::return#3 = 0 -Constant (const byte) play_move_leftright::return#4 = 1 -Constant (const byte) play_move_rotate::orientation#0 = 128 -Constant (const byte) play_move_rotate::return#1 = 0 -Constant (const byte) play_move_rotate::return#3 = 0 -Constant (const byte) play_move_rotate::return#4 = 1 -Constant (const byte) COLLISION_NONE#0 = 0 -Constant (const byte) COLLISION_PLAYFIELD#0 = 1 -Constant (const byte) COLLISION_BOTTOM#0 = 2 -Constant (const byte) COLLISION_LEFT#0 = 4 -Constant (const byte) COLLISION_RIGHT#0 = 8 -Constant (const byte) collision::i#0 = 0 -Constant (const byte) collision::l#0 = 0 -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) 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 byte) remove_lines::y#0 = 0 -Constant (const byte) remove_lines::full#0 = 1 -Constant (const byte) remove_lines::x#0 = 0 -Constant (const byte) remove_lines::full#1 = 0 -Constant (const byte) tables_init::idx#0 = 0 -Constant (const byte) tables_init::j#0 = 0 -Constant (const byte*) SCREEN#0 = ((byte*))1024 -Constant (const byte*) CHARSET#0 = ((byte*))10240 Constant (const word) fill::size#0 = 1000 Constant (const byte) fill::val#0 = 208 Constant (const word) fill::size#1 = 1000 @@ -4716,6 +4656,58 @@ 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) $4 = 4*4 +Constant (const byte[$5]) 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) $6 = 4*4 +Constant (const byte[$7]) 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) $8 = 4*4 +Constant (const byte[$9]) 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) $10 = 4*4 +Constant (const byte[$11]) 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) $12 = 4*4 +Constant (const byte[$13]) 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) $14 = 4*4 +Constant (const byte[$15]) 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) $16 = 4*4 +Constant (const byte[$17]) 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*) current_piece#0 = ((byte*))0 +Constant (const byte) current_orientation#0 = 0 +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) play_move_down::movedown#0 = 0 +Constant (const byte) play_move_down::return#0 = 0 +Constant (const byte) current_movedown_counter#2 = 0 +Constant (const byte) play_move_down::return#1 = 1 +Constant (const byte) play_move_leftright::return#0 = 1 +Constant (const byte) play_move_leftright::return#2 = 0 +Constant (const byte) play_move_leftright::return#3 = 1 +Constant (const byte) play_move_rotate::orientation#0 = 128 +Constant (const byte) play_move_rotate::return#0 = 0 +Constant (const byte) play_move_rotate::return#2 = 0 +Constant (const byte) play_move_rotate::return#3 = 1 +Constant (const byte) COLLISION_NONE#0 = 0 +Constant (const byte) COLLISION_PLAYFIELD#0 = 1 +Constant (const byte) COLLISION_BOTTOM#0 = 2 +Constant (const byte) COLLISION_LEFT#0 = 4 +Constant (const byte) COLLISION_RIGHT#0 = 8 +Constant (const byte) play_collision::i#0 = 0 +Constant (const byte) play_collision::l#0 = 0 +Constant (const byte) play_collision::c#0 = 0 +Constant (const byte) play_lock_current::i#0 = 0 +Constant (const byte) play_lock_current::l#0 = 0 +Constant (const byte) play_lock_current::c#0 = 0 +Constant (const byte) play_spawn_current::piece_idx#0 = 7 +Constant (const byte) current_orientation#20 = 0 +Constant (const byte) current_xpos#24 = 3 +Constant (const byte) current_ypos#19 = 0 +Constant (const byte) play_remove_lines::y#0 = 0 +Constant (const byte) play_remove_lines::full#0 = 1 +Constant (const byte) play_remove_lines::x#0 = 0 +Constant (const byte) play_remove_lines::full#1 = 0 +Constant (const byte) play_init::idx#0 = 0 +Constant (const byte) play_init::j#0 = 0 +Constant (const byte) main::render#0 = 0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte[]) keyboard_char_keycodes#0 = { KEY_AT#0, KEY_A#0, KEY_B#0, KEY_C#0, KEY_D#0, KEY_E#0, KEY_F#0, KEY_G#0, KEY_H#0, KEY_I#0, KEY_J#0, KEY_K#0, KEY_L#0, KEY_M#0, KEY_N#0, KEY_O#0, KEY_P#0, KEY_Q#0, KEY_R#0, KEY_S#0, KEY_T#0, KEY_U#0, KEY_V#0, KEY_W#0, KEY_X#0, KEY_Y#0, KEY_Z#0, 63, KEY_POUND#0, 63, KEY_ARROW_UP#0, KEY_ARROW_LEFT#0, KEY_SPACE#0, 63, 63, 63, 63, 63, 63, 63, 63, 63, KEY_ASTERISK#0, KEY_PLUS#0, KEY_COMMA#0, KEY_MINUS#0, KEY_DOT#0, KEY_SLASH#0, KEY_0#0, KEY_1#0, KEY_2#0, KEY_3#0, KEY_4#0, KEY_5#0, KEY_6#0, KEY_7#0, KEY_8#0, KEY_9#0, KEY_COLON#0, KEY_SEMICOLON#0, 63, KEY_EQUALS#0, 63, 63 } Constant (const byte) KEY_MODIFIER_SHIFT#0 = KEY_MODIFIER_LSHIFT#0|KEY_MODIFIER_RSHIFT#0 @@ -4724,40 +4716,10 @@ 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/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+1 -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/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) remove_lines::$0 = PLAYFIELD_LINES#0*PLAYFIELD_COLS#0 -Constant (const byte) remove_lines::$2 = PLAYFIELD_LINES#0*PLAYFIELD_COLS#0 -Constant (const byte/signed word/word/dword/signed dword) remove_lines::$4 = PLAYFIELD_LINES#0-1 -Constant (const byte/signed word/word/dword/signed dword) remove_lines::$5 = PLAYFIELD_COLS#0-1 -Constant (const byte/signed word/word/dword/signed dword) tables_init::$0 = PLAYFIELD_LINES#0-1 -Constant (const byte) tables_init::$3 = PLAYFIELD_COLS#0*PLAYFIELD_LINES#0 -Constant (const byte/signed word/word/dword/signed dword) $24 = PLAYFIELD_LINES#0+3 -Constant (const byte*) fill::start#0 = SCREEN#0 +Constant (const byte*) PLAYFIELD_SPRITE_PTRS#0 = PLAYFIELD_SCREEN#0+SPRITE_PTRS#0 +Constant (const byte) $2 = PLAYFIELD_LINES#0*PLAYFIELD_COLS#0 +Constant (const byte/signed word/word/dword/signed dword) $3 = PLAYFIELD_LINES#0+3 +Constant (const byte*) fill::start#0 = PLAYFIELD_SCREEN#0 Constant (const byte*) fill::start#1 = COLS#0 Constant (const byte) fill::val#1 = BLACK#0 Constant (const byte*) render_init::$2 = COLS#0+40 @@ -4768,16 +4730,47 @@ Constant (const byte/signed word/word/dword/signed dword) render_init::$9 = PLAY 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) $5 = $4*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $7 = $6*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $9 = $8*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $11 = $10*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $13 = $12*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $15 = $14*4 +Constant (const byte/signed word/word/dword/signed dword/signed byte) $17 = $16*4 +Constant (const word) $18 = ((word))PIECE_T#0 +Constant (const word) $19 = ((word))PIECE_S#0 +Constant (const word) $20 = ((word))PIECE_Z#0 +Constant (const word) $21 = ((word))PIECE_J#0 +Constant (const word) $22 = ((word))PIECE_O#0 +Constant (const word) $23 = ((word))PIECE_I#0 +Constant (const word) $24 = ((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*[PLAYFIELD_LINES#0]) playfield_lines#0 = { fill( PLAYFIELD_LINES#0, 0) } +Constant (const byte/signed word/word/dword/signed dword) $25 = PLAYFIELD_LINES#0+1 +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/signed word/word/dword/signed dword) play_collision::$4 = 2*PLAYFIELD_LINES#0 +Constant (const byte) play_collision::return#4 = COLLISION_BOTTOM#0 +Constant (const byte) play_collision::return#6 = COLLISION_LEFT#0 +Constant (const byte) play_collision::return#7 = COLLISION_RIGHT#0 +Constant (const byte) play_collision::return#8 = COLLISION_PLAYFIELD#0 +Constant (const byte) play_collision::return#9 = COLLISION_NONE#0 +Constant (const byte) play_remove_lines::$0 = PLAYFIELD_LINES#0*PLAYFIELD_COLS#0 +Constant (const byte) play_remove_lines::$2 = PLAYFIELD_LINES#0*PLAYFIELD_COLS#0 +Constant (const byte/signed word/word/dword/signed dword) play_remove_lines::$4 = PLAYFIELD_LINES#0-1 +Constant (const byte/signed word/word/dword/signed dword) play_remove_lines::$5 = PLAYFIELD_COLS#0-1 +Constant (const byte/signed word/word/dword/signed dword) play_init::$0 = PLAYFIELD_LINES#0-1 +Constant (const byte) play_init::$3 = PLAYFIELD_COLS#0*PLAYFIELD_LINES#0 Successful SSA optimization Pass2ConstantIdentification -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]) playfield_lines_idx#0 = { fill( $23, 0) } -Constant (const byte) remove_lines::r#0 = remove_lines::$0-1 -Constant (const byte) remove_lines::w#0 = remove_lines::$2-1 -Constant (const byte*[$24]) screen_lines#0 = { fill( $24, 0) } +Constant (const byte[$2]) playfield#0 = { fill( $2, 0) } +Constant (const byte*[$3]) screen_lines#0 = { fill( $3, 0) } Constant (const byte*) render_init::li#0 = render_init::$2+15 +Constant (const word[]) PIECES#0 = { $18, $19, $20, $21, $22, $23, $24 } +Constant (const byte[$25]) playfield_lines_idx#0 = { fill( $25, 0) } +Constant (const byte) play_remove_lines::r#0 = play_remove_lines::$0-1 +Constant (const byte) play_remove_lines::w#0 = play_remove_lines::$2-1 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) tables_init::pli#0 = playfield#0 +Constant (const byte*) play_init::pli#0 = playfield#0 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(playfield_lines_idx#0+PLAYFIELD_LINES#0) Successful SSA optimization Pass2ConstantAdditionElimination @@ -4785,7 +4778,7 @@ if() condition always true - replacing block destination if(true) goto main::@2 Successful SSA optimization Pass2ConstantIfs Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars -Eliminating Noop Cast (byte*) current_piece#16 ← ((byte*)) *((const word[]) PIECES#0 + (byte~) spawn_current::$3) +Eliminating Noop Cast (byte*) current_piece#13 ← ((byte*)) *((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) Successful SSA optimization Pass2NopCastElimination Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks @@ -4793,20 +4786,6 @@ Resolved ranged next value keyboard_event_scan::row#1 ← ++ keyboard_event_scan Resolved ranged comparison value if(keyboard_event_scan::row#1!=rangelast(0,7)) goto keyboard_event_scan::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8 Resolved ranged next value keyboard_event_scan::col#1 ← ++ keyboard_event_scan::col#2 to ++ Resolved ranged comparison value if(keyboard_event_scan::col#1!=rangelast(0,7)) goto keyboard_event_scan::@4 to (byte/signed byte/word/signed word/dword/signed dword) 8 -Resolved ranged next value collision::c#1 ← ++ collision::c#2 to ++ -Resolved ranged comparison value if(collision::c#1!=rangelast(0,3)) goto collision::@2 to (byte/signed byte/word/signed word/dword/signed dword) 4 -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#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 remove_lines::x#1 ← ++ remove_lines::x#2 to ++ -Resolved ranged comparison value if(remove_lines::x#1!=rangelast(0,remove_lines::$5)) goto remove_lines::@2 to (const byte/signed word/word/dword/signed dword) remove_lines::$5+(byte/signed byte/word/signed word/dword/signed dword) 1 -Resolved ranged next value remove_lines::y#1 ← ++ remove_lines::y#8 to ++ -Resolved ranged comparison value if(remove_lines::y#1!=rangelast(0,remove_lines::$4)) goto remove_lines::@1 to (const byte/signed word/word/dword/signed dword) remove_lines::$4+(byte/signed byte/word/signed word/dword/signed dword) 1 -Resolved ranged next value tables_init::j#1 ← ++ tables_init::j#2 to ++ -Resolved ranged comparison value if(tables_init::j#1!=rangelast(0,tables_init::$0)) goto tables_init::@1 to (const byte/signed word/word/dword/signed dword) tables_init::$0+(byte/signed byte/word/signed word/dword/signed dword) 1 Resolved ranged next value render_init::i#1 ← ++ render_init::i#2 to ++ Resolved ranged comparison value if(render_init::i#1!=rangelast(0,render_init::$4)) goto render_init::@1 to (const byte/signed word/word/dword/signed dword) render_init::$4+(byte/signed byte/word/signed word/dword/signed dword) 1 Resolved ranged next value render_init::c#1 ← ++ render_init::c#2 to ++ @@ -4821,6 +4800,20 @@ Resolved ranged next value render_current::l#1 ← ++ render_current::l#3 to ++ Resolved ranged comparison value if(render_current::l#1!=rangelast(0,3)) goto render_current::@1 to (byte/signed byte/word/signed word/dword/signed dword) 4 Resolved ranged next value render_current::c#1 ← ++ render_current::c#2 to ++ Resolved ranged comparison value if(render_current::c#1!=rangelast(0,3)) goto render_current::@3 to (byte/signed byte/word/signed word/dword/signed dword) 4 +Resolved ranged next value play_collision::c#1 ← ++ play_collision::c#2 to ++ +Resolved ranged comparison value if(play_collision::c#1!=rangelast(0,3)) goto play_collision::@2 to (byte/signed byte/word/signed word/dword/signed dword) 4 +Resolved ranged next value play_collision::l#1 ← ++ play_collision::l#6 to ++ +Resolved ranged comparison value if(play_collision::l#1!=rangelast(0,3)) goto play_collision::@1 to (byte/signed byte/word/signed word/dword/signed dword) 4 +Resolved ranged next value play_lock_current::c#1 ← ++ play_lock_current::c#2 to ++ +Resolved ranged comparison value if(play_lock_current::c#1!=rangelast(0,3)) goto play_lock_current::@2 to (byte/signed byte/word/signed word/dword/signed dword) 4 +Resolved ranged next value play_lock_current::l#1 ← ++ play_lock_current::l#6 to ++ +Resolved ranged comparison value if(play_lock_current::l#1!=rangelast(0,3)) goto play_lock_current::@1 to (byte/signed byte/word/signed word/dword/signed dword) 4 +Resolved ranged next value play_remove_lines::x#1 ← ++ play_remove_lines::x#2 to ++ +Resolved ranged comparison value if(play_remove_lines::x#1!=rangelast(0,play_remove_lines::$5)) goto play_remove_lines::@2 to (const byte/signed word/word/dword/signed dword) play_remove_lines::$5+(byte/signed byte/word/signed word/dword/signed dword) 1 +Resolved ranged next value play_remove_lines::y#1 ← ++ play_remove_lines::y#8 to ++ +Resolved ranged comparison value if(play_remove_lines::y#1!=rangelast(0,play_remove_lines::$4)) goto play_remove_lines::@1 to (const byte/signed word/word/dword/signed dword) play_remove_lines::$4+(byte/signed byte/word/signed word/dword/signed dword) 1 +Resolved ranged next value play_init::j#1 ← ++ play_init::j#2 to ++ +Resolved ranged comparison value if(play_init::j#1!=rangelast(0,play_init::$0)) goto play_init::@1 to (const byte/signed word/word/dword/signed dword) play_init::$0+(byte/signed byte/word/signed word/dword/signed dword) 1 Culled Empty Block (label) @5 Culled Empty Block (label) @9 Culled Empty Block (label) keyboard_event_scan::@2 @@ -4828,12 +4821,10 @@ 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) @12 -Culled Empty Block (label) @14 -Culled Empty Block (label) main::@26 -Culled Empty Block (label) main::@2 -Culled Empty Block (label) main::@5 -Culled Empty Block (label) main::@8 -Culled Empty Block (label) main::@33 +Culled Empty Block (label) render_init::@8 +Culled Empty Block (label) render_init::@4 +Culled Empty Block (label) render_current::@5 +Culled Empty Block (label) @17 Culled Empty Block (label) play_move_down::@3 Culled Empty Block (label) play_move_down::@5 Culled Empty Block (label) play_move_down::@21 @@ -4843,35 +4834,37 @@ 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) @18 -Culled Empty Block (label) collision::@9 -Culled Empty Block (label) collision::@11 -Culled Empty Block (label) collision::@13 -Culled Empty Block (label) collision::@7 -Culled Empty Block (label) collision::@15 -Culled Empty Block (label) collision::@18 -Culled Empty Block (label) render_init::@8 -Culled Empty Block (label) render_init::@4 -Culled Empty Block (label) render_current::@5 +Culled Empty Block (label) @20 +Culled Empty Block (label) play_collision::@9 +Culled Empty Block (label) play_collision::@11 +Culled Empty Block (label) play_collision::@13 +Culled Empty Block (label) play_collision::@7 +Culled Empty Block (label) play_collision::@15 +Culled Empty Block (label) play_collision::@18 +Culled Empty Block (label) main::@26 +Culled Empty Block (label) main::@2 +Culled Empty Block (label) main::@5 +Culled Empty Block (label) main::@8 +Culled Empty Block (label) main::@33 Culled Empty Block (label) @27 Successful SSA optimization Pass2CullEmptyBlocks -Self Phi Eliminated (byte) collision::col#0 -Self Phi Eliminated (byte*) collision::piece_gfx#2 -Self Phi Eliminated (byte) current_xpos#26 -Self Phi Eliminated (byte*) current_piece_gfx#32 -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#51 +Self Phi Eliminated (byte) current_xpos#13 +Self Phi Eliminated (byte*) current_piece_gfx#24 +Self Phi Eliminated (byte) current_piece_color#39 +Self Phi Eliminated (byte) play_collision::col#0 +Self Phi Eliminated (byte*) play_collision::piece_gfx#2 +Self Phi Eliminated (byte) current_xpos#23 +Self Phi Eliminated (byte*) current_piece_gfx#30 +Self Phi Eliminated (byte) current_piece_color#31 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_xpos#26 (byte) current_xpos#16 -Redundant Phi (byte*) current_piece_gfx#32 (byte*) current_piece_gfx#15 -Redundant Phi (byte) current_piece_color#34 (byte) current_piece_color#11 -Redundant Phi (byte) current_xpos#28 (byte) current_xpos#63 -Redundant Phi (byte*) current_piece_gfx#35 (byte*) current_piece_gfx#64 -Redundant Phi (byte) current_piece_color#51 (byte) current_piece_color#67 +Redundant Phi (byte) current_xpos#13 (byte) current_xpos#48 +Redundant Phi (byte*) current_piece_gfx#24 (byte*) current_piece_gfx#53 +Redundant Phi (byte) current_piece_color#39 (byte) current_piece_color#62 +Redundant Phi (byte) play_collision::col#0 (byte) play_collision::xpos#5 +Redundant Phi (byte*) play_collision::piece_gfx#2 (byte*) play_collision::piece_gfx#0 +Redundant Phi (byte) current_xpos#23 (byte) current_xpos#11 +Redundant Phi (byte*) current_piece_gfx#30 (byte*) current_piece_gfx#10 +Redundant Phi (byte) current_piece_color#31 (byte) current_piece_color#16 Successful SSA optimization Pass2RedundantPhiElimination Inlining constant with var siblings (const word) fill::size#0 Inlining constant with var siblings (const byte) fill::val#0 @@ -4886,38 +4879,6 @@ Inlining constant with var siblings (const byte) keyboard_event_pressed::keycode Inlining constant with var siblings (const byte) keyboard_event_pressed::keycode#3 Inlining constant with var siblings (const byte) keyboard_event_pressed::keycode#4 Inlining constant with var siblings (const byte) keyboard_event_get::return#0 -Inlining constant with var siblings (const byte) main::render#0 -Inlining constant with var siblings (const byte) play_move_down::movedown#0 -Inlining constant with var siblings (const byte) play_move_down::return#1 -Inlining constant with var siblings (const byte) play_move_down::return#2 -Inlining constant with var siblings (const byte) play_move_down::movedown#1 -Inlining constant with var siblings (const byte) play_move_leftright::return#1 -Inlining constant with var siblings (const byte) play_move_leftright::return#3 -Inlining constant with var siblings (const byte) play_move_leftright::return#4 -Inlining constant with var siblings (const byte) play_move_rotate::return#1 -Inlining constant with var siblings (const byte) play_move_rotate::return#3 -Inlining constant with var siblings (const byte) play_move_rotate::return#4 -Inlining constant with var siblings (const byte) collision::i#0 -Inlining constant with var siblings (const byte) collision::l#0 -Inlining constant with var siblings (const byte) collision::c#0 -Inlining constant with var siblings (const byte) collision::return#4 -Inlining constant with var siblings (const byte) collision::return#6 -Inlining constant with var siblings (const byte) collision::return#7 -Inlining constant with var siblings (const byte) collision::return#8 -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) remove_lines::y#0 -Inlining constant with var siblings (const byte) remove_lines::full#0 -Inlining constant with var siblings (const byte) remove_lines::x#0 -Inlining constant with var siblings (const byte) remove_lines::full#1 -Inlining constant with var siblings (const byte) remove_lines::r#0 -Inlining constant with var siblings (const byte) remove_lines::w#0 -Inlining constant with var siblings (const byte) tables_init::idx#0 -Inlining constant with var siblings (const byte) tables_init::j#0 -Inlining constant with var siblings (const byte*) tables_init::pli#0 Inlining constant with var siblings (const byte) render_init::i#0 Inlining constant with var siblings (const byte) render_init::l#0 Inlining constant with var siblings (const byte) render_init::c#0 @@ -4929,117 +4890,149 @@ Inlining constant with var siblings (const byte) render_playfield::c#0 Inlining constant with var siblings (const byte) render_current::i#0 Inlining constant with var siblings (const byte) render_current::l#0 Inlining constant with var siblings (const byte) render_current::c#0 +Inlining constant with var siblings (const byte) play_move_down::movedown#0 +Inlining constant with var siblings (const byte) play_move_down::return#0 +Inlining constant with var siblings (const byte) play_move_down::return#1 +Inlining constant with var siblings (const byte) play_move_down::movedown#1 +Inlining constant with var siblings (const byte) play_move_leftright::return#0 +Inlining constant with var siblings (const byte) play_move_leftright::return#2 +Inlining constant with var siblings (const byte) play_move_leftright::return#3 +Inlining constant with var siblings (const byte) play_move_rotate::return#0 +Inlining constant with var siblings (const byte) play_move_rotate::return#2 +Inlining constant with var siblings (const byte) play_move_rotate::return#3 +Inlining constant with var siblings (const byte) play_collision::i#0 +Inlining constant with var siblings (const byte) play_collision::l#0 +Inlining constant with var siblings (const byte) play_collision::c#0 +Inlining constant with var siblings (const byte) play_collision::return#4 +Inlining constant with var siblings (const byte) play_collision::return#6 +Inlining constant with var siblings (const byte) play_collision::return#7 +Inlining constant with var siblings (const byte) play_collision::return#8 +Inlining constant with var siblings (const byte) play_collision::return#9 +Inlining constant with var siblings (const byte) play_lock_current::i#0 +Inlining constant with var siblings (const byte) play_lock_current::l#0 +Inlining constant with var siblings (const byte) play_lock_current::c#0 +Inlining constant with var siblings (const byte) play_spawn_current::piece_idx#0 +Inlining constant with var siblings (const byte) play_remove_lines::y#0 +Inlining constant with var siblings (const byte) play_remove_lines::full#0 +Inlining constant with var siblings (const byte) play_remove_lines::x#0 +Inlining constant with var siblings (const byte) play_remove_lines::full#1 +Inlining constant with var siblings (const byte) play_remove_lines::r#0 +Inlining constant with var siblings (const byte) play_remove_lines::w#0 +Inlining constant with var siblings (const byte) play_init::idx#0 +Inlining constant with var siblings (const byte) play_init::j#0 +Inlining constant with var siblings (const byte*) play_init::pli#0 +Inlining constant with var siblings (const byte) main::render#0 Inlining constant with var siblings (const byte) keyboard_events_size#0 Inlining constant with var siblings (const byte) keyboard_modifiers#1 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_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_movedown_counter#2 +Inlining constant with var siblings (const byte) current_orientation#20 +Inlining constant with var siblings (const byte) current_xpos#24 +Inlining constant with var siblings (const byte) current_ypos#19 Inlining constant with var siblings (const byte) keyboard_modifiers#2 -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 -Constant inlined play_move_rotate::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_remove_lines::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_move_rotate::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_init::pli#0 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 +Constant inlined play_move_rotate::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 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 current_movedown_counter#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined current_movedown_counter#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined fill::start#1 = (const byte*) COLS#0 -Constant inlined fill::start#0 = (const byte*) SCREEN#0 +Constant inlined fill::start#0 = (const byte*) PLAYFIELD_SCREEN#0 Constant inlined render_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 render_playfield::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined remove_lines::full#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined play_collision::$4 = (byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0 Constant inlined fill::size#1 = (word/signed word/dword/signed dword) 1000 -Constant inlined remove_lines::full#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_remove_lines::$0 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0 Constant inlined fill::size#0 = (word/signed word/dword/signed dword) 1000 -Constant inlined lock_current::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined remove_lines::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_remove_lines::$2 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0 +Constant inlined play_collision::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_remove_lines::$4 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined render_init::$9 = (const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined remove_lines::$2 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0 -Constant inlined collision::return#9 = (const byte) COLLISION_NONE#0 -Constant inlined remove_lines::$0 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0 +Constant inlined play_lock_current::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_remove_lines::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_init::$8 = (const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1 -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 $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 $10 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $11 = (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 $12 = (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 remove_lines::$5 = (const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 -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 remove_lines::$4 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined $13 = (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_init::$4 = (const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2 -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 $15 = ((word))(const byte[4*4*4]) PIECE_T#0 +Constant inlined $14 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $15 = (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_init::$2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40 -Constant inlined $16 = ((word))(const byte[4*4*4]) PIECE_S#0 -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 remove_lines::r#0 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 -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::return#7 = (const byte) COLLISION_RIGHT#0 -Constant inlined tables_init::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined tables_init::$0 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined $16 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $17 = (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 $18 = ((word))(const byte[4*4*4]) PIECE_T#0 +Constant inlined $19 = ((word))(const byte[4*4*4]) PIECE_S#0 Constant inlined render_playfield::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined tables_init::$3 = (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#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 $20 = ((word))(const byte[4*4*4]) PIECE_Z#0 +Constant inlined $21 = ((word))(const byte[4*4*4]) PIECE_J#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) 1 -Constant inlined $24 = (const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 3 +Constant inlined $22 = ((word))(const byte[4*4*4]) PIECE_O#0 +Constant inlined $23 = ((word))(const byte[4*4*4]) PIECE_I#0 +Constant inlined $24 = ((word))(const byte[4*4*4]) PIECE_L#0 +Constant inlined $25 = (const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined keyboard_event_pressed::keycode#3 = (const byte) KEY_COMMODORE#0 Constant inlined keyboard_event_pressed::keycode#2 = (const byte) KEY_CTRL#0 Constant inlined render_init::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined keyboard_event_pressed::keycode#1 = (const byte) KEY_RSHIFT#0 -Constant inlined lock_current::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined keyboard_event_pressed::keycode#0 = (const byte) KEY_LSHIFT#0 Constant inlined render_current::$1 = (byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0 -Constant inlined play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined play_move_down::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined collision::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined tables_init::idx#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_collision::return#7 = (const byte) COLLISION_RIGHT#0 +Constant inlined play_init::$3 = (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 +Constant inlined play_collision::return#6 = (const byte) COLLISION_LEFT#0 +Constant inlined play_collision::return#4 = (const byte) COLLISION_BOTTOM#0 +Constant inlined play_move_down::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined play_move_down::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_collision::return#9 = (const byte) COLLISION_NONE#0 +Constant inlined play_collision::return#8 = (const byte) COLLISION_PLAYFIELD#0 +Constant inlined play_init::$0 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined keyboard_events_size#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_remove_lines::r#0 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined keyboard_modifiers#2 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 Constant inlined keyboard_modifiers#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined current_ypos#21 = (byte/signed byte/word/signed word/dword/signed dword) 0 -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 $3 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 -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 $2 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0 +Constant inlined $3 = (const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 3 +Constant inlined play_lock_current::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined $4 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined render_init::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -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 $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 $9 = (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*(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 +Constant inlined $7 = (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 $8 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 +Constant inlined $9 = (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_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 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 play_spawn_current::piece_idx#0 = (byte/signed byte/word/signed word/dword/signed dword) 7 +Constant inlined play_remove_lines::full#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_remove_lines::full#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_move_leftright::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined keyboard_event_scan::keycode#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_init::line#0 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 -Constant inlined remove_lines::w#0 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined collision::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_collision::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_move_leftright::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined current_orientation#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined fill::val#0 = (byte/word/signed word/dword/signed dword) 208 Constant inlined play_move_down::movedown#1 = ++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_move_down::movedown#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_current::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_remove_lines::w#0 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined play_init::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_lock_current::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 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 render_playfield::$0 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined collision::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined main::render#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_remove_lines::$5 = (const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined play_init::idx#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined current_xpos#24 = (byte/signed byte/word/signed word/dword/signed dword) 3 +Constant inlined current_ypos#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_init::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined tables_init::pli#0 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 -Constant inlined remove_lines::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined lock_current::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined main::render#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_collision::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined keyboard_event_get::return#0 = (byte/word/signed word/dword/signed dword) 255 Successful SSA optimization Pass2ConstantInlining Identical Phi Values (word) fill::size#2 (word/signed word/dword/signed dword) 1000 @@ -5054,28 +5047,28 @@ Added new block during phi lifting render_playfield::@5(between render_playfield Added new block during phi lifting render_playfield::@6(between render_playfield::@2 and render_playfield::@2) Added new block during phi lifting play_move_rotate::@15(between play_move_rotate::@14 and play_move_rotate::@return) Added new block during phi lifting play_move_rotate::@16(between play_move_rotate::@6 and play_move_rotate::@return) -Fixing phi predecessor for play_move_rotate::return#2 to new block ( play_move_rotate::@14 -> play_move_rotate::@15 ) during phi lifting. -Fixing phi predecessor for play_move_rotate::return#2 to new block ( play_move_rotate::@6 -> play_move_rotate::@16 ) during phi lifting. -Added new block during phi lifting collision::@20(between collision::@17 and collision::@1) -Added new block during phi lifting collision::@21(between collision::@3 and collision::@2) +Fixing phi predecessor for play_move_rotate::return#1 to new block ( play_move_rotate::@14 -> play_move_rotate::@15 ) during phi lifting. +Fixing phi predecessor for play_move_rotate::return#1 to new block ( play_move_rotate::@6 -> play_move_rotate::@16 ) during phi lifting. +Added new block during phi lifting play_collision::@20(between play_collision::@17 and play_collision::@1) +Added new block during phi lifting play_collision::@21(between play_collision::@3 and play_collision::@2) Added new block during phi lifting play_move_leftright::@16(between play_move_leftright::@15 and play_move_leftright::@return) Added new block during phi lifting play_move_leftright::@17(between play_move_leftright::@14 and play_move_leftright::@return) Added new block during phi lifting play_move_leftright::@18(between play_move_leftright::@6 and play_move_leftright::@return) -Fixing phi predecessor for play_move_leftright::return#2 to new block ( play_move_leftright::@15 -> play_move_leftright::@16 ) during phi lifting. -Fixing phi predecessor for play_move_leftright::return#2 to new block ( play_move_leftright::@14 -> play_move_leftright::@17 ) during phi lifting. -Fixing phi predecessor for play_move_leftright::return#2 to new block ( play_move_leftright::@6 -> play_move_leftright::@18 ) during phi lifting. +Fixing phi predecessor for play_move_leftright::return#1 to new block ( play_move_leftright::@15 -> play_move_leftright::@16 ) during phi lifting. +Fixing phi predecessor for play_move_leftright::return#1 to new block ( play_move_leftright::@14 -> play_move_leftright::@17 ) during phi lifting. +Fixing phi predecessor for play_move_leftright::return#1 to new block ( play_move_leftright::@6 -> play_move_leftright::@18 ) during phi lifting. Added new block during phi lifting play_move_down::@22(between play_move_down::@17 and play_move_down::@2) Added new block during phi lifting play_move_down::@23(between play_move_down::@9 and play_move_down::@2) Added new block during phi lifting play_move_down::@24(between play_move_down::@2 and play_move_down::@4) Added new block during phi lifting play_move_down::@25(between play_move_down::@4 and play_move_down::@return) -Fixing phi predecessor for play_move_down::return#3 to new block ( play_move_down::@4 -> play_move_down::@25 ) during phi lifting. -Added new block during phi lifting remove_lines::@15(between remove_lines::@4 and remove_lines::@1) -Added new block during phi lifting remove_lines::@16(between remove_lines::@3 and remove_lines::@2) -Added new block during phi lifting remove_lines::@17(between remove_lines::@2 and remove_lines::@3) -Added new block during phi lifting remove_lines::@18(between remove_lines::@9 and remove_lines::@4) -Added new block during phi lifting remove_lines::@19(between remove_lines::@4 and remove_lines::@5) -Added new block during phi lifting lock_current::@7(between lock_current::@5 and lock_current::@1) -Added new block during phi lifting lock_current::@8(between lock_current::@3 and lock_current::@2) +Fixing phi predecessor for play_move_down::return#2 to new block ( play_move_down::@4 -> play_move_down::@25 ) during phi lifting. +Added new block during phi lifting play_remove_lines::@15(between play_remove_lines::@4 and play_remove_lines::@1) +Added new block during phi lifting play_remove_lines::@16(between play_remove_lines::@3 and play_remove_lines::@2) +Added new block during phi lifting play_remove_lines::@17(between play_remove_lines::@2 and play_remove_lines::@3) +Added new block during phi lifting play_remove_lines::@18(between play_remove_lines::@9 and play_remove_lines::@4) +Added new block during phi lifting play_remove_lines::@19(between play_remove_lines::@4 and play_remove_lines::@5) +Added new block during phi lifting play_lock_current::@7(between play_lock_current::@5 and play_lock_current::@1) +Added new block during phi lifting play_lock_current::@8(between play_lock_current::@3 and play_lock_current::@2) Added new block during phi lifting keyboard_event_get::@7(between keyboard_event_get and keyboard_event_get::@return) Fixing phi predecessor for keyboard_event_get::return#2 to new block ( keyboard_event_get -> keyboard_event_get::@7 ) during phi lifting. Added new block during phi lifting keyboard_event_scan::@30(between keyboard_event_scan::@3 and keyboard_event_scan::@1) @@ -5086,7 +5079,7 @@ Added new block during phi lifting keyboard_event_scan::@34(between keyboard_eve Fixing phi predecessor for keyboard_event_scan::col#2 to new block ( keyboard_event_scan::@25 -> keyboard_event_scan::@34 ) during phi lifting. Added new block during phi lifting keyboard_event_scan::@35(between keyboard_event_scan::@4 and keyboard_event_scan::@5) Added new block during phi lifting keyboard_event_scan::@36(between keyboard_event_scan::@15 and keyboard_event_scan::@5) -Added new block during phi lifting tables_init::@3(between tables_init::@1 and tables_init::@1) +Added new block during phi lifting play_init::@3(between play_init::@1 and play_init::@1) Added new block during phi lifting render_init::@9(between render_init::@1 and render_init::@1) Added new block during phi lifting render_init::@10(between render_init::@5 and render_init::@2) Added new block during phi lifting render_init::@11(between render_init::@3 and render_init::@3) @@ -5105,41 +5098,41 @@ 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 play_move_down::@20 -Adding NOP phi() at start of spawn_current -Adding NOP phi() at start of spawn_current::@2 -Adding NOP phi() at start of remove_lines -Adding NOP phi() at start of remove_lines::@8 +Adding NOP phi() at start of play_spawn_current +Adding NOP phi() at start of play_spawn_current::@2 +Adding NOP phi() at start of play_remove_lines +Adding NOP phi() at start of play_remove_lines::@8 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 tables_init +Adding NOP phi() at start of play_init Adding NOP phi() at start of render_init::@7 CALL GRAPH Calls in [] to main:3 -Calls in [main] to sid_rnd_init:6 render_init:8 tables_init:10 spawn_current:12 render_playfield:14 render_current:17 keyboard_event_scan:25 keyboard_event_get:27 play_move_down:31 play_move_leftright:36 play_move_rotate:41 render_playfield:47 render_current:52 -Calls in [play_move_rotate] to collision:130 -Calls in [play_move_leftright] to collision:182 collision:199 -Calls in [play_move_down] to keyboard_event_pressed:210 collision:230 lock_current:235 remove_lines:237 spawn_current:239 -Calls in [spawn_current] to sid_rnd:277 +Calls in [main] to sid_rnd_init:6 render_init:8 play_init:10 play_spawn_current:12 render_playfield:14 render_current:17 keyboard_event_scan:25 keyboard_event_get:27 play_move_down:31 play_move_leftright:36 play_move_rotate:41 render_playfield:47 render_current:52 +Calls in [play_move_rotate] to play_collision:130 +Calls in [play_move_leftright] to play_collision:182 play_collision:199 +Calls in [play_move_down] to keyboard_event_pressed:210 play_collision:230 play_lock_current:235 play_remove_lines:237 play_spawn_current:239 +Calls in [play_spawn_current] to sid_rnd:277 Calls in [keyboard_event_scan] to keyboard_matrix_read:361 keyboard_event_pressed:372 keyboard_event_pressed:378 keyboard_event_pressed:385 keyboard_event_pressed:392 Calls in [render_init] to fill:449 fill:451 Created 101 initial phi equivalence classes -Not coalescing [15] current_piece_gfx#87 ← current_piece_gfx#10 -Not coalescing [16] current_piece_color#75 ← current_piece_color#15 -Coalesced [19] current_piece_gfx#86 ← current_piece_gfx#10 -Coalesced [20] current_piece_color#74 ← current_piece_color#15 -Not coalescing [48] current_ypos#71 ← current_ypos#16 -Not coalescing [49] current_xpos#96 ← current_xpos#23 -Not coalescing [50] current_piece_gfx#88 ← current_piece_gfx#18 -Not coalescing [51] current_piece_color#76 ← current_piece_color#13 -Coalesced [54] current_piece#70 ← current_piece#13 -Coalesced [55] current_orientation#74 ← current_orientation#23 -Coalesced [56] current_piece_gfx#85 ← current_piece_gfx#18 -Coalesced [57] current_xpos#95 ← current_xpos#23 -Coalesced [58] current_ypos#70 ← current_ypos#16 -Coalesced [59] current_piece_color#73 ← current_piece_color#13 +Not coalescing [15] current_piece_gfx#87 ← current_piece_gfx#17 +Not coalescing [16] current_piece_color#75 ← current_piece_color#13 +Coalesced [19] current_piece_gfx#86 ← current_piece_gfx#17 +Coalesced [20] current_piece_color#74 ← current_piece_color#13 +Not coalescing [48] current_ypos#71 ← current_ypos#14 +Not coalescing [49] current_xpos#96 ← current_xpos#20 +Not coalescing [50] current_piece_gfx#88 ← current_piece_gfx#15 +Not coalescing [51] current_piece_color#76 ← current_piece_color#11 +Coalesced [54] current_piece#69 ← current_piece#10 +Coalesced [55] current_orientation#73 ← current_orientation#19 +Coalesced [56] current_piece_gfx#85 ← current_piece_gfx#15 +Coalesced [57] current_xpos#95 ← current_xpos#20 +Coalesced [58] current_ypos#70 ← current_ypos#14 +Coalesced [59] current_piece_color#73 ← current_piece_color#11 Coalesced [60] keyboard_events_size#72 ← keyboard_events_size#16 -Coalesced [61] current_movedown_counter#47 ← current_movedown_counter#12 +Coalesced [61] current_movedown_counter#46 ← current_movedown_counter#10 Coalesced [64] render_current::ypos2#10 ← render_current::ypos2#0 Coalesced [69] render_current::i#12 ← render_current::i#4 Coalesced [70] render_current::xpos#8 ← render_current::xpos#0 @@ -5158,94 +5151,94 @@ Coalesced [109] render_playfield::i#5 ← render_playfield::i#1 Coalesced (already) [110] render_playfield::i#7 ← render_playfield::i#1 Coalesced [111] render_playfield::line#4 ← render_playfield::line#1 Coalesced [112] render_playfield::c#3 ← render_playfield::c#1 -Coalesced [115] current_orientation#77 ← current_orientation#18 -Coalesced [116] current_piece_gfx#91 ← current_piece_gfx#17 +Coalesced [115] current_orientation#76 ← current_orientation#14 +Coalesced [116] current_piece_gfx#91 ← current_piece_gfx#14 Coalesced [121] play_move_rotate::orientation#7 ← play_move_rotate::orientation#2 -Not coalescing [126] current_piece#75 ← current_piece#13 -Coalesced [127] collision::orientation#8 ← collision::orientation#3 -Coalesced [128] collision::ypos#8 ← collision::ypos#3 -Coalesced [129] collision::xpos#17 ← collision::xpos#3 -Coalesced [136] current_orientation#75 ← current_orientation#8 -Coalesced [137] current_piece_gfx#89 ← current_piece_gfx#8 -Coalesced (already) [138] current_orientation#76 ← current_orientation#18 -Coalesced (already) [139] current_piece_gfx#90 ← current_piece_gfx#17 +Not coalescing [126] current_piece#74 ← current_piece#10 +Coalesced [127] play_collision::orientation#8 ← play_collision::orientation#3 +Coalesced [128] play_collision::ypos#8 ← play_collision::ypos#3 +Coalesced [129] play_collision::xpos#17 ← play_collision::xpos#3 +Coalesced [136] current_orientation#74 ← current_orientation#4 +Coalesced [137] current_piece_gfx#89 ← current_piece_gfx#4 +Coalesced (already) [138] current_orientation#75 ← current_orientation#14 +Coalesced (already) [139] current_piece_gfx#90 ← current_piece_gfx#14 Coalesced [142] play_move_rotate::orientation#6 ← play_move_rotate::orientation#1 -Coalesced [146] collision::ypos2#11 ← collision::ypos2#0 -Coalesced [149] collision::i#12 ← collision::i#3 -Not coalescing [150] collision::col#9 ← collision::xpos#5 -Coalesced [167] collision::ypos2#12 ← collision::ypos2#1 -Not coalescing [168] collision::i#11 ← collision::i#1 -Coalesced [169] collision::l#11 ← collision::l#1 -Not coalescing [170] collision::i#13 ← collision::i#1 -Coalesced [171] collision::col#10 ← collision::col#1 -Coalesced [172] collision::c#9 ← collision::c#1 -Not coalescing [178] current_piece#74 ← current_piece#13 -Coalesced [179] collision::orientation#7 ← collision::orientation#2 -Coalesced [180] collision::ypos#7 ← collision::ypos#2 -Coalesced [181] collision::xpos#16 ← collision::xpos#2 -Coalesced [187] current_xpos#99 ← current_xpos#7 -Coalesced [190] current_xpos#98 ← current_xpos#19 -Coalesced (already) [191] current_xpos#101 ← current_xpos#19 -Not coalescing [195] current_piece#73 ← current_piece#13 -Coalesced [196] collision::orientation#6 ← collision::orientation#1 -Coalesced [197] collision::ypos#6 ← collision::ypos#1 -Coalesced [198] collision::xpos#15 ← collision::xpos#1 -Coalesced [204] current_xpos#97 ← current_xpos#9 -Coalesced (already) [205] current_xpos#100 ← current_xpos#19 +Coalesced [146] play_collision::ypos2#11 ← play_collision::ypos2#0 +Coalesced [149] play_collision::i#12 ← play_collision::i#3 +Not coalescing [150] play_collision::col#9 ← play_collision::xpos#5 +Coalesced [167] play_collision::ypos2#12 ← play_collision::ypos2#1 +Not coalescing [168] play_collision::i#11 ← play_collision::i#1 +Coalesced [169] play_collision::l#11 ← play_collision::l#1 +Not coalescing [170] play_collision::i#13 ← play_collision::i#1 +Coalesced [171] play_collision::col#10 ← play_collision::col#1 +Coalesced [172] play_collision::c#9 ← play_collision::c#1 +Not coalescing [178] current_piece#73 ← current_piece#10 +Coalesced [179] play_collision::orientation#7 ← play_collision::orientation#2 +Coalesced [180] play_collision::ypos#7 ← play_collision::ypos#2 +Coalesced [181] play_collision::xpos#16 ← play_collision::xpos#2 +Coalesced [187] current_xpos#99 ← current_xpos#3 +Coalesced [190] current_xpos#98 ← current_xpos#16 +Coalesced (already) [191] current_xpos#101 ← current_xpos#16 +Not coalescing [195] current_piece#72 ← current_piece#10 +Coalesced [196] play_collision::orientation#6 ← play_collision::orientation#1 +Coalesced [197] play_collision::ypos#6 ← play_collision::ypos#1 +Coalesced [198] play_collision::xpos#15 ← play_collision::xpos#1 +Coalesced [204] current_xpos#97 ← current_xpos#5 +Coalesced (already) [205] current_xpos#100 ← current_xpos#16 Coalesced [216] play_move_down::movedown#13 ← play_move_down::movedown#2 Coalesced [220] play_move_down::movedown#16 ← play_move_down::movedown#3 -Not coalescing [226] current_piece#72 ← current_piece#11 -Coalesced [227] collision::orientation#5 ← collision::orientation#0 -Coalesced [228] collision::ypos#5 ← collision::ypos#0 -Coalesced [229] collision::xpos#14 ← collision::xpos#0 -Coalesced [241] current_piece_gfx#92 ← current_piece_gfx#10 -Coalesced [242] current_piece_color#77 ← current_piece_color#15 -Coalesced [244] current_ypos#74 ← current_ypos#31 -Coalesced [245] current_piece#79 ← current_piece#23 -Coalesced [246] current_orientation#80 ← current_orientation#33 -Coalesced (already) [247] current_piece_gfx#95 ← current_piece_gfx#29 -Coalesced [248] current_xpos#104 ← current_xpos#36 -Coalesced (already) [249] current_piece_color#80 ← current_piece_color#23 -Coalesced [253] current_ypos#72 ← current_ypos#4 -Coalesced (already) [254] current_piece#77 ← current_piece#11 -Coalesced (already) [255] current_orientation#78 ← current_orientation#15 -Coalesced (already) [256] current_piece_gfx#93 ← current_piece_gfx#15 -Coalesced (already) [257] current_xpos#102 ← current_xpos#16 -Coalesced (already) [258] current_piece_color#78 ← current_piece_color#11 -Coalesced [259] current_movedown_counter#48 ← current_movedown_counter#10 -Coalesced (already) [260] current_ypos#73 ← current_ypos#12 -Coalesced (already) [261] current_piece#78 ← current_piece#11 -Coalesced (already) [262] current_orientation#79 ← current_orientation#15 -Coalesced (already) [263] current_piece_gfx#94 ← current_piece_gfx#15 -Coalesced (already) [264] current_xpos#103 ← current_xpos#16 -Coalesced (already) [265] current_piece_color#79 ← current_piece_color#11 +Not coalescing [226] current_piece#71 ← current_piece#16 +Coalesced [227] play_collision::orientation#5 ← play_collision::orientation#0 +Coalesced [228] play_collision::ypos#5 ← play_collision::ypos#0 +Coalesced [229] play_collision::xpos#14 ← play_collision::xpos#0 +Coalesced [241] current_piece_gfx#92 ← current_piece_gfx#17 +Coalesced [242] current_piece_color#77 ← current_piece_color#13 +Coalesced [244] current_ypos#74 ← current_ypos#30 +Coalesced [245] current_piece#78 ← current_piece#20 +Coalesced [246] current_orientation#79 ← current_orientation#29 +Coalesced (already) [247] current_piece_gfx#95 ← current_piece_gfx#27 +Coalesced [248] current_xpos#104 ← current_xpos#34 +Coalesced (already) [249] current_piece_color#80 ← current_piece_color#21 +Coalesced [253] current_ypos#72 ← current_ypos#1 +Coalesced (already) [254] current_piece#76 ← current_piece#16 +Coalesced (already) [255] current_orientation#77 ← current_orientation#10 +Coalesced (already) [256] current_piece_gfx#93 ← current_piece_gfx#10 +Coalesced (already) [257] current_xpos#102 ← current_xpos#11 +Coalesced (already) [258] current_piece_color#78 ← current_piece_color#16 +Coalesced [259] current_movedown_counter#47 ← current_movedown_counter#1 +Coalesced (already) [260] current_ypos#73 ← current_ypos#22 +Coalesced (already) [261] current_piece#77 ← current_piece#16 +Coalesced (already) [262] current_orientation#78 ← current_orientation#10 +Coalesced (already) [263] current_piece_gfx#94 ← current_piece_gfx#10 +Coalesced (already) [264] current_xpos#103 ← current_xpos#11 +Coalesced (already) [265] current_piece_color#79 ← current_piece_color#16 Coalesced [266] play_move_down::movedown#17 ← play_move_down::movedown#7 Coalesced [267] play_move_down::movedown#15 ← play_move_down::movedown#10 Coalesced (already) [268] play_move_down::movedown#14 ← play_move_down::movedown#10 -Coalesced [281] spawn_current::piece_idx#4 ← spawn_current::piece_idx#1 -Coalesced [286] remove_lines::r#10 ← remove_lines::r#3 -Coalesced [287] remove_lines::w#14 ← remove_lines::w#12 -Coalesced [300] remove_lines::w#16 ← remove_lines::w#2 -Coalesced [304] remove_lines::w#18 ← remove_lines::w#11 -Coalesced [310] remove_lines::w#19 ← remove_lines::w#3 -Coalesced [311] remove_lines::r#9 ← remove_lines::r#1 -Coalesced [312] remove_lines::w#13 ← remove_lines::w#11 -Coalesced [313] remove_lines::y#9 ← remove_lines::y#1 -Coalesced [314] remove_lines::w#17 ← remove_lines::w#1 -Coalesced (already) [315] remove_lines::r#11 ← remove_lines::r#1 -Coalesced (already) [316] remove_lines::w#15 ← remove_lines::w#1 -Coalesced [317] remove_lines::x#5 ← remove_lines::x#1 -Coalesced [318] remove_lines::full#5 ← remove_lines::full#2 -Coalesced (already) [319] remove_lines::full#6 ← remove_lines::full#4 -Coalesced [321] lock_current::ypos2#7 ← lock_current::ypos2#0 -Coalesced [325] lock_current::i#8 ← lock_current::i#3 -Coalesced [326] lock_current::col#5 ← lock_current::col#0 -Coalesced [338] lock_current::ypos2#8 ← lock_current::ypos2#1 -Not coalescing [339] lock_current::i#7 ← lock_current::i#1 -Coalesced [340] lock_current::l#7 ← lock_current::l#1 -Not coalescing [341] lock_current::i#9 ← lock_current::i#1 -Coalesced [342] lock_current::col#6 ← lock_current::col#1 -Coalesced [343] lock_current::c#5 ← lock_current::c#1 +Coalesced [281] play_spawn_current::piece_idx#4 ← play_spawn_current::piece_idx#1 +Coalesced [286] play_remove_lines::r#10 ← play_remove_lines::r#3 +Coalesced [287] play_remove_lines::w#14 ← play_remove_lines::w#12 +Coalesced [300] play_remove_lines::w#16 ← play_remove_lines::w#2 +Coalesced [304] play_remove_lines::w#18 ← play_remove_lines::w#11 +Coalesced [310] play_remove_lines::w#19 ← play_remove_lines::w#3 +Coalesced [311] play_remove_lines::r#9 ← play_remove_lines::r#1 +Coalesced [312] play_remove_lines::w#13 ← play_remove_lines::w#11 +Coalesced [313] play_remove_lines::y#9 ← play_remove_lines::y#1 +Coalesced [314] play_remove_lines::w#17 ← play_remove_lines::w#1 +Coalesced (already) [315] play_remove_lines::r#11 ← play_remove_lines::r#1 +Coalesced (already) [316] play_remove_lines::w#15 ← play_remove_lines::w#1 +Coalesced [317] play_remove_lines::x#5 ← play_remove_lines::x#1 +Coalesced [318] play_remove_lines::full#5 ← play_remove_lines::full#2 +Coalesced (already) [319] play_remove_lines::full#6 ← play_remove_lines::full#4 +Coalesced [321] play_lock_current::ypos2#7 ← play_lock_current::ypos2#0 +Coalesced [325] play_lock_current::i#8 ← play_lock_current::i#3 +Coalesced [326] play_lock_current::col#5 ← play_lock_current::col#0 +Coalesced [338] play_lock_current::ypos2#8 ← play_lock_current::ypos2#1 +Not coalescing [339] play_lock_current::i#7 ← play_lock_current::i#1 +Coalesced [340] play_lock_current::l#7 ← play_lock_current::l#1 +Not coalescing [341] play_lock_current::i#9 ← play_lock_current::i#1 +Coalesced [342] play_lock_current::col#6 ← play_lock_current::col#1 +Coalesced [343] play_lock_current::c#5 ← play_lock_current::c#1 Coalesced [353] keyboard_event_get::return#6 ← keyboard_event_get::return#1 Coalesced [354] keyboard_events_size#74 ← keyboard_events_size#4 Coalesced [357] keyboard_events_size#73 ← keyboard_events_size#13 @@ -5270,9 +5263,9 @@ Coalesced (already) [424] keyboard_events_size#80 ← keyboard_events_size#30 Coalesced [428] keyboard_events_size#84 ← keyboard_events_size#1 Coalesced (already) [429] keyboard_events_size#83 ← keyboard_events_size#10 Coalesced (already) [430] keyboard_events_size#82 ← keyboard_events_size#10 -Coalesced [445] tables_init::j#3 ← tables_init::j#1 -Coalesced [446] tables_init::pli#3 ← tables_init::pli#1 -Coalesced [447] tables_init::idx#3 ← tables_init::idx#1 +Coalesced [445] play_init::j#3 ← play_init::j#1 +Coalesced [446] play_init::pli#3 ← play_init::pli#1 +Coalesced [447] play_init::idx#3 ← play_init::idx#1 Coalesced [468] render_init::line#5 ← render_init::line#1 Coalesced [469] render_init::l#5 ← render_init::l#1 Coalesced [470] render_init::c#3 ← render_init::c#1 @@ -5296,11 +5289,11 @@ Culled Empty Block (label) play_move_down::@25 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) remove_lines::@8 -Culled Empty Block (label) remove_lines::@19 -Culled Empty Block (label) remove_lines::@15 -Culled Empty Block (label) remove_lines::@18 -Culled Empty Block (label) remove_lines::@16 +Culled Empty Block (label) play_remove_lines::@8 +Culled Empty Block (label) play_remove_lines::@19 +Culled Empty Block (label) play_remove_lines::@15 +Culled Empty Block (label) play_remove_lines::@18 +Culled Empty Block (label) play_remove_lines::@16 Culled Empty Block (label) keyboard_event_get::@7 Culled Empty Block (label) keyboard_event_scan::@32 Culled Empty Block (label) keyboard_event_scan::@31 @@ -5309,7 +5302,7 @@ Culled Empty Block (label) keyboard_event_scan::@34 Culled Empty Block (label) keyboard_event_scan::@33 Culled Empty Block (label) keyboard_event_scan::@36 Culled Empty Block (label) keyboard_event_scan::@35 -Culled Empty Block (label) tables_init::@3 +Culled Empty Block (label) play_init::@3 Culled Empty Block (label) render_init::@10 Culled Empty Block (label) render_init::@11 Culled Empty Block (label) render_init::@9 @@ -5328,28 +5321,28 @@ 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 play_move_down::@20 -Adding NOP phi() at start of spawn_current -Adding NOP phi() at start of spawn_current::@2 -Adding NOP phi() at start of remove_lines -Adding NOP phi() at start of remove_lines::@17 +Adding NOP phi() at start of play_spawn_current +Adding NOP phi() at start of play_spawn_current::@2 +Adding NOP phi() at start of play_remove_lines +Adding NOP phi() at start of play_remove_lines::@17 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 -Adding NOP phi() at start of tables_init +Adding NOP phi() at start of play_init Adding NOP phi() at start of render_init::@7 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@23 -@23: scope:[] from @begin - kickasm(location (const byte*) CHARSET#0) {{ .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9)) - .for (var c=0; c<16; c++) + to:@14 +@14: scope:[] from @begin + kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .var charset = LoadPicture("nes-charset.png", List().add($000000, $ffffff)) + .for (var c=0; c<32; c++) .for (var y=0;y<8; y++) - .byte charset.getMulticolorByte(c,y) + .byte charset.getSinglecolorByte(c,y) }} to:@26 -@26: scope:[] from @23 +@26: scope:[] from @14 [2] phi() [3] call main to:@end @@ -5365,31 +5358,31 @@ main::@21: scope:[main] from main to:main::@22 main::@22: scope:[main] from main::@21 [9] phi() - [10] call tables_init + [10] call play_init to:main::@23 main::@23: scope:[main] from main::@22 [11] phi() - [12] call spawn_current + [12] call play_spawn_current to:main::@24 main::@24: scope:[main] from main::@23 [13] phi() [14] call render_playfield to:main::@25 main::@25: scope:[main] from main::@24 - [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 - [16] (byte~) current_piece_color#75 ← (byte) current_piece_color#15 + [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#17 + [16] (byte~) current_piece_color#75 ← (byte) current_piece_color#13 [17] call render_current - [18] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + [18] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) to:main::@1 main::@1: scope:[main] from main::@10 main::@25 - [19] (byte) current_movedown_counter#15 ← phi( main::@10/(byte) current_movedown_counter#12 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [19] (byte) current_movedown_counter#12 ← phi( main::@10/(byte) current_movedown_counter#10 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [19] (byte) keyboard_events_size#19 ← phi( main::@10/(byte) keyboard_events_size#16 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [19] (byte) current_piece_color#11 ← phi( main::@10/(byte) current_piece_color#13 main::@25/(byte) current_piece_color#15 ) - [19] (byte) current_ypos#12 ← phi( main::@10/(byte) current_ypos#16 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [19] (byte) current_xpos#16 ← phi( main::@10/(byte) current_xpos#23 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 ) - [19] (byte*) current_piece_gfx#15 ← phi( main::@10/(byte*) current_piece_gfx#18 main::@25/(byte*) current_piece_gfx#10 ) - [19] (byte) current_orientation#15 ← phi( main::@10/(byte) current_orientation#23 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [19] (byte*) current_piece#11 ← phi( main::@10/(byte*) current_piece#13 main::@25/(byte*~) current_piece#71 ) + [19] (byte) current_piece_color#16 ← phi( main::@10/(byte) current_piece_color#11 main::@25/(byte) current_piece_color#13 ) + [19] (byte) current_ypos#22 ← phi( main::@10/(byte) current_ypos#14 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [19] (byte) current_xpos#11 ← phi( main::@10/(byte) current_xpos#20 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 ) + [19] (byte*) current_piece_gfx#10 ← phi( main::@10/(byte*) current_piece_gfx#15 main::@25/(byte*) current_piece_gfx#17 ) + [19] (byte) current_orientation#10 ← phi( main::@10/(byte) current_orientation#19 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [19] (byte*) current_piece#16 ← phi( main::@10/(byte*) current_piece#10 main::@25/(byte*~) current_piece#70 ) to:main::@4 main::@4: scope:[main] from main::@1 main::@4 [20] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 @@ -5410,24 +5403,24 @@ main::@28: scope:[main] from main::@27 [27] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 [28] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 [29] call play_move_down - [30] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 + [30] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 to:main::@29 main::@29: scope:[main] from main::@28 - [31] (byte~) main::$10 ← (byte) play_move_down::return#0 + [31] (byte~) main::$10 ← (byte) play_move_down::return#3 [32] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 [33] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 [34] call play_move_leftright - [35] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + [35] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 to:main::@30 main::@30: scope:[main] from main::@29 - [36] (byte~) main::$11 ← (byte) play_move_leftright::return#0 + [36] (byte~) main::$11 ← (byte) play_move_leftright::return#4 [37] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 [38] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 [39] call play_move_rotate - [40] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + [40] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 to:main::@31 main::@31: scope:[main] from main::@30 - [41] (byte~) main::$12 ← (byte) play_move_rotate::return#0 + [41] (byte~) main::$12 ← (byte) play_move_rotate::return#4 [42] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 [43] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 to:main::@19 @@ -5436,21 +5429,21 @@ main::@19: scope:[main] from main::@31 [45] call render_playfield to:main::@32 main::@32: scope:[main] from main::@19 - [46] (byte~) current_ypos#71 ← (byte) current_ypos#16 - [47] (byte~) current_xpos#96 ← (byte) current_xpos#23 - [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#18 - [49] (byte~) current_piece_color#76 ← (byte) current_piece_color#13 + [46] (byte~) current_ypos#71 ← (byte) current_ypos#14 + [47] (byte~) current_xpos#96 ← (byte) current_xpos#20 + [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#15 + [49] (byte~) current_piece_color#76 ← (byte) current_piece_color#11 [50] call render_current to:main::@10 main::@10: scope:[main] from main::@31 main::@32 [51] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) to:main::@1 render_current: scope:[render_current] from main::@25 main::@32 - [52] (byte) current_piece_color#67 ← phi( main::@25/(byte~) current_piece_color#75 main::@32/(byte~) current_piece_color#76 ) - [52] (byte*) current_piece_gfx#64 ← phi( main::@25/(byte*~) current_piece_gfx#87 main::@32/(byte*~) current_piece_gfx#88 ) - [52] (byte) current_xpos#63 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@32/(byte~) current_xpos#96 ) - [52] (byte) current_ypos#22 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@32/(byte~) current_ypos#71 ) - [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [52] (byte) current_piece_color#62 ← phi( main::@25/(byte~) current_piece_color#75 main::@32/(byte~) current_piece_color#76 ) + [52] (byte*) current_piece_gfx#53 ← phi( main::@25/(byte*~) current_piece_gfx#87 main::@32/(byte*~) current_piece_gfx#88 ) + [52] (byte) current_xpos#48 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@32/(byte~) current_xpos#96 ) + [52] (byte) current_ypos#10 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@32/(byte~) current_ypos#71 ) + [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (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 [54] (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 ) @@ -5460,13 +5453,13 @@ render_current::@1: scope:[render_current] from render_current render_current:: to:render_current::@6 render_current::@6: scope:[render_current] from render_current::@1 [56] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) - [57] (byte) render_current::xpos#0 ← (byte) current_xpos#63 + [57] (byte) render_current::xpos#0 ← (byte) current_xpos#48 to:render_current::@3 render_current::@3: scope:[render_current] from render_current::@4 render_current::@6 [58] (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 ) [58] (byte) render_current::xpos#2 ← phi( render_current::@4/(byte) render_current::xpos#1 render_current::@6/(byte) render_current::xpos#0 ) [58] (byte) render_current::i#2 ← phi( render_current::@4/(byte) render_current::i#1 render_current::@6/(byte) render_current::i#4 ) - [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) + [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#2) [60] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 [61] 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 @@ -5474,7 +5467,7 @@ render_current::@7: scope:[render_current] from render_current::@3 [62] 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 - [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#67 + [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#62 to:render_current::@4 render_current::@4: scope:[render_current] from render_current::@3 render_current::@7 render_current::@8 [64] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 @@ -5523,91 +5516,91 @@ play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate [86] 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 - [87] (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 ) - [87] (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 ) - [87] (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 ) + [87] (byte*) current_piece_gfx#15 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#4 play_move_rotate::@14/(byte*) current_piece_gfx#14 play_move_rotate::@6/(byte*) current_piece_gfx#14 ) + [87] (byte) current_orientation#19 ← phi( play_move_rotate::@11/(byte) current_orientation#4 play_move_rotate::@14/(byte) current_orientation#14 play_move_rotate::@6/(byte) current_orientation#14 ) + [87] (byte) play_move_rotate::return#1 ← 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 ) [88] return to:@return play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@6 - [89] (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 + [89] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 [90] (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 [91] (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 ) - [92] (byte) collision::xpos#3 ← (byte) current_xpos#23 - [93] (byte) collision::ypos#3 ← (byte) current_ypos#16 - [94] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 - [95] (byte*~) current_piece#75 ← (byte*) current_piece#13 - [96] call collision - [97] (byte) collision::return#13 ← (byte) collision::return#14 + [92] (byte) play_collision::xpos#3 ← (byte) current_xpos#20 + [93] (byte) play_collision::ypos#3 ← (byte) current_ypos#14 + [94] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + [95] (byte*~) current_piece#74 ← (byte*) current_piece#10 + [96] call play_collision + [97] (byte) play_collision::return#13 ← (byte) play_collision::return#14 to:play_move_rotate::@14 play_move_rotate::@14: scope:[play_move_rotate] from play_move_rotate::@4 - [98] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 + [98] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 [99] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return to:play_move_rotate::@11 play_move_rotate::@11: scope:[play_move_rotate] from play_move_rotate::@14 - [100] (byte) current_orientation#8 ← (byte) play_move_rotate::orientation#3 - [101] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 + [100] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 + [101] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 to:play_move_rotate::@return play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate - [102] (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 + [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 [103] (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 - [104] (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 ) - [104] (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 ) - [104] (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 ) - [104] (byte*) current_piece#15 ← phi( play_move_down::@12/(byte*~) current_piece#72 play_move_leftright::@1/(byte*~) current_piece#73 play_move_leftright::@7/(byte*~) current_piece#74 play_move_rotate::@4/(byte*~) current_piece#75 ) - [105] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 - [106] (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 - [107] (byte) collision::l#6 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte) collision::l#1 ) - [107] (byte) collision::i#3 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte~) collision::i#11 ) - [107] (byte) collision::ypos2#2 ← phi( collision/(byte) collision::ypos2#0 collision::@20/(byte) collision::ypos2#1 ) - [108] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) - [109] (byte~) collision::col#9 ← (byte) collision::xpos#5 - to:collision::@2 -collision::@2: scope:[collision] from collision::@1 collision::@21 - [110] (byte) collision::c#2 ← phi( collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@21/(byte) collision::c#1 ) - [110] (byte) collision::col#2 ← phi( collision::@1/(byte~) collision::col#9 collision::@21/(byte) collision::col#1 ) - [110] (byte) collision::i#2 ← phi( collision::@1/(byte) collision::i#3 collision::@21/(byte~) collision::i#13 ) - [111] (byte) collision::i#1 ← ++ (byte) collision::i#2 - [112] 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 - [113] 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 - [114] (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 ) +play_collision: scope:[play_collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 + [104] (byte) play_collision::xpos#5 ← phi( play_move_down::@12/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@7/(byte) play_collision::xpos#2 play_move_rotate::@4/(byte) play_collision::xpos#3 ) + [104] (byte) play_collision::ypos#4 ← phi( play_move_down::@12/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@7/(byte) play_collision::ypos#2 play_move_rotate::@4/(byte) play_collision::ypos#3 ) + [104] (byte) play_collision::orientation#4 ← phi( play_move_down::@12/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@7/(byte) play_collision::orientation#2 play_move_rotate::@4/(byte) play_collision::orientation#3 ) + [104] (byte*) current_piece#12 ← phi( play_move_down::@12/(byte*~) current_piece#71 play_move_leftright::@1/(byte*~) current_piece#72 play_move_leftright::@7/(byte*~) current_piece#73 play_move_rotate::@4/(byte*~) current_piece#74 ) + [105] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 + [106] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + to:play_collision::@1 +play_collision::@1: scope:[play_collision] from play_collision play_collision::@20 + [107] (byte) play_collision::l#6 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte) play_collision::l#1 ) + [107] (byte) play_collision::i#3 ← phi( play_collision/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@20/(byte~) play_collision::i#11 ) + [107] (byte) play_collision::ypos2#2 ← phi( play_collision/(byte) play_collision::ypos2#0 play_collision::@20/(byte) play_collision::ypos2#1 ) + [108] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) + [109] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 + to:play_collision::@2 +play_collision::@2: scope:[play_collision] from play_collision::@1 play_collision::@21 + [110] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_collision::@21/(byte) play_collision::c#1 ) + [110] (byte) play_collision::col#2 ← phi( play_collision::@1/(byte~) play_collision::col#9 play_collision::@21/(byte) play_collision::col#1 ) + [110] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@21/(byte~) play_collision::i#13 ) + [111] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 + [112] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 + to:play_collision::@8 +play_collision::@8: scope:[play_collision] from play_collision::@2 + [113] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 + to:play_collision::@return +play_collision::@return: scope:[play_collision] from play_collision::@17 play_collision::@4 play_collision::@5 play_collision::@6 play_collision::@8 + [114] (byte) play_collision::return#14 ← phi( play_collision::@4/(const byte) COLLISION_LEFT#0 play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@17/(const byte) COLLISION_NONE#0 play_collision::@8/(const byte) COLLISION_BOTTOM#0 ) [115] return to:@return -collision::@4: scope:[collision] from collision::@8 - [116] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 - [117] 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 - [118] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 - to:collision::@return -collision::@6: scope:[collision] from collision::@5 - [119] 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 - [120] (byte) collision::col#1 ← ++ (byte) collision::col#2 - [121] (byte) collision::c#1 ← ++ (byte) collision::c#2 - [122] 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 - [123] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [124] (byte) collision::l#1 ← ++ (byte) collision::l#6 - [125] 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 - [126] (byte~) collision::i#11 ← (byte) collision::i#1 - to:collision::@1 -collision::@21: scope:[collision] from collision::@3 - [127] (byte~) collision::i#13 ← (byte) collision::i#1 - to:collision::@2 +play_collision::@4: scope:[play_collision] from play_collision::@8 + [116] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 + [117] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 + to:play_collision::@return +play_collision::@5: scope:[play_collision] from play_collision::@4 + [118] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 + to:play_collision::@return +play_collision::@6: scope:[play_collision] from play_collision::@5 + [119] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 + to:play_collision::@return +play_collision::@3: scope:[play_collision] from play_collision::@2 play_collision::@6 + [120] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 + [121] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 + [122] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 + to:play_collision::@17 +play_collision::@17: scope:[play_collision] from play_collision::@3 + [123] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [124] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 + [125] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 + to:play_collision::@return +play_collision::@20: scope:[play_collision] from play_collision::@17 + [126] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 + to:play_collision::@1 +play_collision::@21: scope:[play_collision] from play_collision::@3 + [127] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 + to:play_collision::@2 play_move_leftright: scope:[play_move_leftright] from main::@29 [128] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 to:play_move_leftright::@6 @@ -5615,42 +5608,42 @@ play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright [129] 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 - [130] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [131] (byte) collision::ypos#2 ← (byte) current_ypos#16 - [132] (byte) collision::orientation#2 ← (byte) current_orientation#18 - [133] (byte*~) current_piece#74 ← (byte*) current_piece#13 - [134] call collision - [135] (byte) collision::return#12 ← (byte) collision::return#14 + [130] (byte) play_collision::xpos#2 ← (byte) current_xpos#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [131] (byte) play_collision::ypos#2 ← (byte) current_ypos#14 + [132] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 + [133] (byte*~) current_piece#73 ← (byte*) current_piece#10 + [134] call play_collision + [135] (byte) play_collision::return#12 ← (byte) play_collision::return#14 to:play_move_leftright::@15 play_move_leftright::@15: scope:[play_move_leftright] from play_move_leftright::@7 - [136] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 + [136] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 [137] 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 - [138] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 + [138] (byte) current_xpos#3 ← ++ (byte) current_xpos#16 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 - [139] (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 ) - [139] (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 ) + [139] (byte) current_xpos#20 ← phi( play_move_leftright::@11/(byte) current_xpos#5 play_move_leftright::@15/(byte) current_xpos#16 play_move_leftright::@8/(byte) current_xpos#3 play_move_leftright::@14/(byte) current_xpos#16 play_move_leftright::@6/(byte) current_xpos#16 ) + [139] (byte) play_move_leftright::return#1 ← 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 ) [140] return to:@return play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright - [141] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 - [142] (byte) collision::ypos#1 ← (byte) current_ypos#16 - [143] (byte) collision::orientation#1 ← (byte) current_orientation#18 - [144] (byte*~) current_piece#73 ← (byte*) current_piece#13 - [145] call collision - [146] (byte) collision::return#1 ← (byte) collision::return#14 + [141] (byte) play_collision::xpos#1 ← (byte) current_xpos#16 - (byte/signed byte/word/signed word/dword/signed dword) 1 + [142] (byte) play_collision::ypos#1 ← (byte) current_ypos#14 + [143] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 + [144] (byte*~) current_piece#72 ← (byte*) current_piece#10 + [145] call play_collision + [146] (byte) play_collision::return#1 ← (byte) play_collision::return#14 to:play_move_leftright::@14 play_move_leftright::@14: scope:[play_move_leftright] from play_move_leftright::@1 - [147] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 + [147] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 [148] 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 - [149] (byte) current_xpos#9 ← -- (byte) current_xpos#19 + [149] (byte) current_xpos#5 ← -- (byte) current_xpos#16 to:play_move_leftright::@return play_move_down: scope:[play_move_down] from main::@28 - [150] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 + [150] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 [151] 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 @@ -5666,14 +5659,14 @@ play_move_down::@17: scope:[play_move_down] from play_move_down::@1 [157] 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 - [158] if((byte) current_movedown_counter#10<(const byte) current_movedown_fast#0) goto play_move_down::@2 + [158] if((byte) current_movedown_counter#1<(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 [159] (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 [160] (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 ) - [161] if((byte) current_movedown_counter#10<(const byte) current_movedown_slow#0) goto play_move_down::@4 + [161] if((byte) current_movedown_counter#1<(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 [162] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 @@ -5683,170 +5676,170 @@ play_move_down::@4: scope:[play_move_down] from play_move_down::@11 play_move_d [164] 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 - [165] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [166] (byte) collision::xpos#0 ← (byte) current_xpos#16 - [167] (byte) collision::orientation#0 ← (byte) current_orientation#15 - [168] (byte*~) current_piece#72 ← (byte*) current_piece#11 - [169] call collision - [170] (byte) collision::return#0 ← (byte) collision::return#14 + [165] (byte) play_collision::ypos#0 ← (byte) current_ypos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [166] (byte) play_collision::xpos#0 ← (byte) current_xpos#11 + [167] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 + [168] (byte*~) current_piece#71 ← (byte*) current_piece#16 + [169] call play_collision + [170] (byte) play_collision::return#0 ← (byte) play_collision::return#14 to:play_move_down::@18 play_move_down::@18: scope:[play_move_down] from play_move_down::@12 - [171] (byte~) play_move_down::$12 ← (byte) collision::return#0 + [171] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 [172] 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 [173] phi() - [174] call lock_current + [174] call play_lock_current to:play_move_down::@19 play_move_down::@19: scope:[play_move_down] from play_move_down::@13 [175] phi() - [176] call remove_lines + [176] call play_remove_lines to:play_move_down::@20 play_move_down::@20: scope:[play_move_down] from play_move_down::@19 [177] phi() - [178] call spawn_current - [179] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + [178] call play_spawn_current + [179] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) to:play_move_down::@7 play_move_down::@7: scope:[play_move_down] from play_move_down::@20 play_move_down::@6 - [180] (byte) current_piece_color#23 ← phi( play_move_down::@20/(byte) current_piece_color#15 play_move_down::@6/(byte) current_piece_color#11 ) - [180] (byte) current_xpos#36 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 3 play_move_down::@6/(byte) current_xpos#16 ) - [180] (byte*) current_piece_gfx#29 ← phi( play_move_down::@20/(byte*) current_piece_gfx#10 play_move_down::@6/(byte*) current_piece_gfx#15 ) - [180] (byte) current_orientation#33 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_orientation#15 ) - [180] (byte*) current_piece#23 ← phi( play_move_down::@20/(byte*~) current_piece#76 play_move_down::@6/(byte*) current_piece#11 ) - [180] (byte) current_ypos#31 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_ypos#4 ) + [180] (byte) current_piece_color#21 ← phi( play_move_down::@20/(byte) current_piece_color#13 play_move_down::@6/(byte) current_piece_color#16 ) + [180] (byte) current_xpos#34 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 3 play_move_down::@6/(byte) current_xpos#11 ) + [180] (byte*) current_piece_gfx#27 ← phi( play_move_down::@20/(byte*) current_piece_gfx#17 play_move_down::@6/(byte*) current_piece_gfx#10 ) + [180] (byte) current_orientation#29 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_orientation#10 ) + [180] (byte*) current_piece#20 ← phi( play_move_down::@20/(byte*~) current_piece#75 play_move_down::@6/(byte*) current_piece#16 ) + [180] (byte) current_ypos#30 ← phi( play_move_down::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_ypos#1 ) to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@4 play_move_down::@7 - [181] (byte) current_piece_color#13 ← phi( play_move_down::@4/(byte) current_piece_color#11 play_move_down::@7/(byte) current_piece_color#23 ) - [181] (byte) current_xpos#19 ← phi( play_move_down::@4/(byte) current_xpos#16 play_move_down::@7/(byte) current_xpos#36 ) - [181] (byte*) current_piece_gfx#17 ← phi( play_move_down::@4/(byte*) current_piece_gfx#15 play_move_down::@7/(byte*) current_piece_gfx#29 ) - [181] (byte) current_orientation#18 ← phi( play_move_down::@4/(byte) current_orientation#15 play_move_down::@7/(byte) current_orientation#33 ) - [181] (byte*) current_piece#13 ← phi( play_move_down::@4/(byte*) current_piece#11 play_move_down::@7/(byte*) current_piece#23 ) - [181] (byte) current_ypos#16 ← phi( play_move_down::@4/(byte) current_ypos#12 play_move_down::@7/(byte) current_ypos#31 ) - [181] (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 ) - [181] (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 ) + [181] (byte) current_piece_color#11 ← phi( play_move_down::@4/(byte) current_piece_color#16 play_move_down::@7/(byte) current_piece_color#21 ) + [181] (byte) current_xpos#16 ← phi( play_move_down::@4/(byte) current_xpos#11 play_move_down::@7/(byte) current_xpos#34 ) + [181] (byte*) current_piece_gfx#14 ← phi( play_move_down::@4/(byte*) current_piece_gfx#10 play_move_down::@7/(byte*) current_piece_gfx#27 ) + [181] (byte) current_orientation#14 ← phi( play_move_down::@4/(byte) current_orientation#10 play_move_down::@7/(byte) current_orientation#29 ) + [181] (byte*) current_piece#10 ← phi( play_move_down::@4/(byte*) current_piece#16 play_move_down::@7/(byte*) current_piece#20 ) + [181] (byte) current_ypos#14 ← phi( play_move_down::@4/(byte) current_ypos#22 play_move_down::@7/(byte) current_ypos#30 ) + [181] (byte) current_movedown_counter#10 ← phi( play_move_down::@4/(byte) current_movedown_counter#1 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [181] (byte) play_move_down::return#2 ← 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 ) [182] return to:@return play_move_down::@6: scope:[play_move_down] from play_move_down::@18 - [183] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 + [183] (byte) current_ypos#1 ← ++ (byte) current_ypos#22 to:play_move_down::@7 -spawn_current: scope:[spawn_current] from main::@23 play_move_down::@20 +play_spawn_current: scope:[play_spawn_current] from main::@23 play_move_down::@20 [184] phi() - to:spawn_current::@1 -spawn_current::@1: scope:[spawn_current] from spawn_current spawn_current::@7 - [185] (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 ) - [186] 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 - [187] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [188] (byte*) current_piece_gfx#10 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 - [189] (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::@3 + to:play_spawn_current::@1 +play_spawn_current::@1: scope:[play_spawn_current] from play_spawn_current play_spawn_current::@7 + [185] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current/(byte/signed byte/word/signed word/dword/signed dword) 7 play_spawn_current::@7/(byte) play_spawn_current::piece_idx#1 ) + [186] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 + to:play_spawn_current::@3 +play_spawn_current::@3: scope:[play_spawn_current] from play_spawn_current::@1 + [187] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [188] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 + [189] (byte) current_piece_color#13 ← *((const byte[]) PIECES_COLORS#0 + (byte) play_spawn_current::piece_idx#2) + to:play_spawn_current::@return +play_spawn_current::@return: scope:[play_spawn_current] from play_spawn_current::@3 [190] return to:@return -spawn_current::@2: scope:[spawn_current] from spawn_current::@1 +play_spawn_current::@2: scope:[play_spawn_current] from play_spawn_current::@1 [191] phi() [192] call sid_rnd [193] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 - to:spawn_current::@7 -spawn_current::@7: scope:[spawn_current] from spawn_current::@2 - [194] (byte~) spawn_current::$1 ← (byte) sid_rnd::return#2 - [195] (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 + to:play_spawn_current::@7 +play_spawn_current::@7: scope:[play_spawn_current] from play_spawn_current::@2 + [194] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 + [195] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 + to:play_spawn_current::@1 +sid_rnd: scope:[sid_rnd] from play_spawn_current::@2 [196] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) to:sid_rnd::@return sid_rnd::@return: scope:[sid_rnd] from sid_rnd [197] return to:@return -remove_lines: scope:[remove_lines] from play_move_down::@19 +play_remove_lines: scope:[play_remove_lines] from play_move_down::@19 [198] phi() - to:remove_lines::@1 -remove_lines::@1: scope:[remove_lines] from remove_lines remove_lines::@4 - [199] (byte) remove_lines::y#8 ← phi( remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 remove_lines::@4/(byte) remove_lines::y#1 ) - [199] (byte) remove_lines::w#12 ← phi( remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 remove_lines::@4/(byte) remove_lines::w#11 ) - [199] (byte) remove_lines::r#3 ← phi( remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 remove_lines::@4/(byte) remove_lines::r#1 ) - to:remove_lines::@2 -remove_lines::@2: scope:[remove_lines] from remove_lines::@1 remove_lines::@3 - [200] (byte) remove_lines::full#4 ← phi( remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 remove_lines::@3/(byte) remove_lines::full#2 ) - [200] (byte) remove_lines::x#2 ← phi( remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 remove_lines::@3/(byte) remove_lines::x#1 ) - [200] (byte) remove_lines::w#4 ← phi( remove_lines::@1/(byte) remove_lines::w#12 remove_lines::@3/(byte) remove_lines::w#1 ) - [200] (byte) remove_lines::r#2 ← phi( remove_lines::@1/(byte) remove_lines::r#3 remove_lines::@3/(byte) remove_lines::r#1 ) - [201] (byte) remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::r#2) - [202] (byte) remove_lines::r#1 ← -- (byte) remove_lines::r#2 - [203] if((byte) remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@17 - to:remove_lines::@3 -remove_lines::@3: scope:[remove_lines] from remove_lines::@17 remove_lines::@2 - [204] (byte) remove_lines::full#2 ← phi( remove_lines::@17/(byte) remove_lines::full#4 remove_lines::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [205] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#4) ← (byte) remove_lines::c#0 - [206] (byte) remove_lines::w#1 ← -- (byte) remove_lines::w#4 - [207] (byte) remove_lines::x#1 ← ++ (byte) remove_lines::x#2 - [208] if((byte) remove_lines::x#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 remove_lines::@2 - to:remove_lines::@9 -remove_lines::@9: scope:[remove_lines] from remove_lines::@3 - [209] if((byte) remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@4 - to:remove_lines::@10 -remove_lines::@10: scope:[remove_lines] from remove_lines::@9 - [210] (byte) remove_lines::w#2 ← (byte) remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 - to:remove_lines::@4 -remove_lines::@4: scope:[remove_lines] from remove_lines::@10 remove_lines::@9 - [211] (byte) remove_lines::w#11 ← phi( remove_lines::@10/(byte) remove_lines::w#2 remove_lines::@9/(byte) remove_lines::w#1 ) - [212] (byte) remove_lines::y#1 ← ++ (byte) remove_lines::y#8 - [213] if((byte) remove_lines::y#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 remove_lines::@1 - to:remove_lines::@5 -remove_lines::@5: scope:[remove_lines] from remove_lines::@4 remove_lines::@6 - [214] (byte) remove_lines::w#6 ← phi( remove_lines::@4/(byte) remove_lines::w#11 remove_lines::@6/(byte) remove_lines::w#3 ) - [215] if((byte) remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@6 - to:remove_lines::@return -remove_lines::@return: scope:[remove_lines] from remove_lines::@5 + to:play_remove_lines::@1 +play_remove_lines::@1: scope:[play_remove_lines] from play_remove_lines play_remove_lines::@4 + [199] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@4/(byte) play_remove_lines::y#1 ) + [199] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::w#11 ) + [199] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@4/(byte) play_remove_lines::r#1 ) + to:play_remove_lines::@2 +play_remove_lines::@2: scope:[play_remove_lines] from play_remove_lines::@1 play_remove_lines::@3 + [200] (byte) play_remove_lines::full#4 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 play_remove_lines::@3/(byte) play_remove_lines::full#2 ) + [200] (byte) play_remove_lines::x#2 ← phi( play_remove_lines::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_remove_lines::@3/(byte) play_remove_lines::x#1 ) + [200] (byte) play_remove_lines::w#4 ← phi( play_remove_lines::@1/(byte) play_remove_lines::w#12 play_remove_lines::@3/(byte) play_remove_lines::w#1 ) + [200] (byte) play_remove_lines::r#2 ← phi( play_remove_lines::@1/(byte) play_remove_lines::r#3 play_remove_lines::@3/(byte) play_remove_lines::r#1 ) + [201] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) + [202] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 + [203] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@17 + to:play_remove_lines::@3 +play_remove_lines::@3: scope:[play_remove_lines] from play_remove_lines::@17 play_remove_lines::@2 + [204] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@17/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [205] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 + [206] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 + [207] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 + [208] if((byte) play_remove_lines::x#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 play_remove_lines::@2 + to:play_remove_lines::@9 +play_remove_lines::@9: scope:[play_remove_lines] from play_remove_lines::@3 + [209] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 + to:play_remove_lines::@10 +play_remove_lines::@10: scope:[play_remove_lines] from play_remove_lines::@9 + [210] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 + to:play_remove_lines::@4 +play_remove_lines::@4: scope:[play_remove_lines] from play_remove_lines::@10 play_remove_lines::@9 + [211] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@10/(byte) play_remove_lines::w#2 play_remove_lines::@9/(byte) play_remove_lines::w#1 ) + [212] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 + [213] if((byte) play_remove_lines::y#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 play_remove_lines::@1 + to:play_remove_lines::@5 +play_remove_lines::@5: scope:[play_remove_lines] from play_remove_lines::@4 play_remove_lines::@6 + [214] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#11 play_remove_lines::@6/(byte) play_remove_lines::w#3 ) + [215] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 + to:play_remove_lines::@return +play_remove_lines::@return: scope:[play_remove_lines] from play_remove_lines::@5 [216] return to:@return -remove_lines::@6: scope:[remove_lines] from remove_lines::@5 - [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [218] (byte) remove_lines::w#3 ← -- (byte) remove_lines::w#6 - to:remove_lines::@5 -remove_lines::@17: scope:[remove_lines] from remove_lines::@2 +play_remove_lines::@6: scope:[play_remove_lines] from play_remove_lines::@5 + [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [218] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 + to:play_remove_lines::@5 +play_remove_lines::@17: scope:[play_remove_lines] from play_remove_lines::@2 [219] phi() - to:remove_lines::@3 -lock_current: scope:[lock_current] from play_move_down::@13 - [220] (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::@7 - [221] (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 ) - [221] (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 ) - [221] (byte) lock_current::ypos2#2 ← phi( lock_current/(byte) lock_current::ypos2#0 lock_current::@7/(byte) lock_current::ypos2#1 ) - [222] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) - [223] (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::@8 - [224] (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 ) - [224] (byte) lock_current::col#2 ← phi( lock_current::@1/(byte) lock_current::col#0 lock_current::@8/(byte) lock_current::col#1 ) - [224] (byte) lock_current::i#2 ← phi( lock_current::@1/(byte) lock_current::i#3 lock_current::@8/(byte~) lock_current::i#9 ) - [225] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 - [226] 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 - [227] *((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 - [228] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 - [229] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 - [230] 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 - [231] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [232] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 - [233] 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 + to:play_remove_lines::@3 +play_lock_current: scope:[play_lock_current] from play_move_down::@13 + [220] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 + to:play_lock_current::@1 +play_lock_current::@1: scope:[play_lock_current] from play_lock_current play_lock_current::@7 + [221] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte) play_lock_current::l#1 ) + [221] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@7/(byte~) play_lock_current::i#7 ) + [221] (byte) play_lock_current::ypos2#2 ← phi( play_lock_current/(byte) play_lock_current::ypos2#0 play_lock_current::@7/(byte) play_lock_current::ypos2#1 ) + [222] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) + [223] (byte) play_lock_current::col#0 ← (byte) current_xpos#11 + to:play_lock_current::@2 +play_lock_current::@2: scope:[play_lock_current] from play_lock_current::@1 play_lock_current::@8 + [224] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 play_lock_current::@8/(byte) play_lock_current::c#1 ) + [224] (byte) play_lock_current::col#2 ← phi( play_lock_current::@1/(byte) play_lock_current::col#0 play_lock_current::@8/(byte) play_lock_current::col#1 ) + [224] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@8/(byte~) play_lock_current::i#9 ) + [225] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 + [226] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 + to:play_lock_current::@4 +play_lock_current::@4: scope:[play_lock_current] from play_lock_current::@2 + [227] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_color#16 + to:play_lock_current::@3 +play_lock_current::@3: scope:[play_lock_current] from play_lock_current::@2 play_lock_current::@4 + [228] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 + [229] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 + [230] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 + to:play_lock_current::@5 +play_lock_current::@5: scope:[play_lock_current] from play_lock_current::@3 + [231] (byte) play_lock_current::ypos2#1 ← (byte) play_lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [232] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 + [233] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 + to:play_lock_current::@return +play_lock_current::@return: scope:[play_lock_current] from play_lock_current::@5 [234] return to:@return -lock_current::@7: scope:[lock_current] from lock_current::@5 - [235] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 - to:lock_current::@1 -lock_current::@8: scope:[lock_current] from lock_current::@3 - [236] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 - to:lock_current::@2 +play_lock_current::@7: scope:[play_lock_current] from play_lock_current::@5 + [235] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 + to:play_lock_current::@1 +play_lock_current::@8: scope:[play_lock_current] from play_lock_current::@3 + [236] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 + to:play_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 [237] (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 ) [238] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 @@ -5984,25 +5977,25 @@ keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@1 keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read [303] return to:@return -tables_init: scope:[tables_init] from main::@22 +play_init: scope:[play_init] from main::@22 [304] phi() - to:tables_init::@1 -tables_init::@1: scope:[tables_init] from tables_init tables_init::@1 - [305] (byte) tables_init::idx#2 ← phi( tables_init/(byte/signed byte/word/signed word/dword/signed dword) 0 tables_init::@1/(byte) tables_init::idx#1 ) - [305] (byte*) tables_init::pli#2 ← phi( tables_init/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 tables_init::@1/(byte*) tables_init::pli#1 ) - [305] (byte) tables_init::j#2 ← phi( tables_init/(byte/signed byte/word/signed word/dword/signed dword) 0 tables_init::@1/(byte) tables_init::j#1 ) - [306] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 - [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 - [309] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 - [310] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 - [311] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 - [312] if((byte) tables_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 tables_init::@1 - to:tables_init::@2 -tables_init::@2: scope:[tables_init] from tables_init::@1 + to:play_init::@1 +play_init::@1: scope:[play_init] from play_init play_init::@1 + [305] (byte) play_init::idx#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::idx#1 ) + [305] (byte*) play_init::pli#2 ← phi( play_init/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 play_init::@1/(byte*) play_init::pli#1 ) + [305] (byte) play_init::j#2 ← phi( play_init/(byte/signed byte/word/signed word/dword/signed dword) 0 play_init::@1/(byte) play_init::j#1 ) + [306] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 + [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 + [309] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 + [310] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 + [311] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 + [312] if((byte) play_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 play_init::@1 + to:play_init::@2 +play_init::@2: scope:[play_init] from play_init::@1 [313] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 - to:tables_init::@return -tables_init::@return: scope:[tables_init] from tables_init::@2 + to:play_init::@return +play_init::@return: scope:[play_init] from play_init::@2 [314] return to:@return render_init: scope:[render_init] from main::@21 @@ -6043,7 +6036,7 @@ render_init::@return: scope:[render_init] from render_init::@5 to:@return fill: scope:[fill] from render_init render_init::@7 [335] (byte) fill::val#3 ← phi( render_init/(byte/word/signed word/dword/signed dword) 208 render_init::@7/(const byte) BLACK#0 ) - [335] (byte*) fill::addr#0 ← phi( render_init/(const byte*) SCREEN#0 render_init::@7/(const byte*) COLS#0 ) + [335] (byte*) fill::addr#0 ← phi( render_init/(const byte*) PLAYFIELD_SCREEN#0 render_init::@7/(const byte*) COLS#0 ) [336] (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 @@ -6075,7 +6068,6 @@ VARIABLE REGISTER WEIGHTS (byte*) BORDERCOL (byte) BROWN (byte*) CHARGEN -(byte*) CHARSET (byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (byte*) CIA1_PORT_A_DDR @@ -6193,8 +6185,12 @@ VARIABLE REGISTER WEIGHTS (byte[4*4*4]) PIECE_T (byte[4*4*4]) PIECE_Z (byte) PINK +(byte*) PLAYFIELD_CHARSET (byte) PLAYFIELD_COLS (byte) PLAYFIELD_LINES +(byte*) PLAYFIELD_SCREEN +(byte*) PLAYFIELD_SPRITES +(byte*) PLAYFIELD_SPRITE_PTRS (byte*) PROCPORT (byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR @@ -6206,7 +6202,6 @@ VARIABLE REGISTER WEIGHTS (byte) PURPLE (byte*) RASTER (byte) RED -(byte*) SCREEN (byte) SID_CONTROL_GATE (byte) SID_CONTROL_NOISE (byte) SID_CONTROL_PULSE @@ -6244,112 +6239,62 @@ VARIABLE REGISTER WEIGHTS (byte) VIC_RST8 (byte) WHITE (byte) YELLOW -(byte()) collision((byte) collision::xpos , (byte) collision::ypos , (byte) collision::orientation) -(byte~) collision::$7 2002.0 -(byte) collision::c -(byte) collision::c#1 1001.0 -(byte) collision::c#2 222.44444444444446 -(byte) collision::col -(byte) collision::col#1 500.5 -(byte) collision::col#2 638.25 -(byte~) collision::col#9 202.0 -(byte) collision::i -(byte) collision::i#1 161.76923076923077 -(byte~) collision::i#11 202.0 -(byte~) collision::i#13 2002.0 -(byte) collision::i#2 1552.0 -(byte) collision::i#3 67.33333333333333 -(byte) collision::l -(byte) collision::l#1 101.0 -(byte) collision::l#6 12.625 -(byte) collision::orientation -(byte) collision::orientation#0 2.0 -(byte) collision::orientation#1 2.0 -(byte) collision::orientation#2 2.0 -(byte) collision::orientation#3 2.0 -(byte) collision::orientation#4 10.0 -(byte*) collision::piece_gfx -(byte*) collision::piece_gfx#0 47.76190476190476 -(byte*) collision::playfield_line -(byte*) collision::playfield_line#0 78.71428571428571 -(byte) collision::return -(byte) collision::return#0 4.0 -(byte) collision::return#1 4.0 -(byte) collision::return#12 4.0 -(byte) collision::return#13 4.0 -(byte) collision::return#14 1.3333333333333333 -(byte) collision::xpos -(byte) collision::xpos#0 1.3333333333333333 -(byte) collision::xpos#1 1.0 -(byte) collision::xpos#2 1.0 -(byte) collision::xpos#3 1.0 -(byte) collision::xpos#5 4.954545454545454 -(byte) collision::ypos -(byte) collision::ypos#0 1.0 -(byte) collision::ypos#1 1.3333333333333333 -(byte) collision::ypos#2 1.3333333333333333 -(byte) collision::ypos#3 1.3333333333333333 -(byte) collision::ypos#4 5.0 -(byte) collision::ypos2 -(byte) collision::ypos2#0 4.0 -(byte) collision::ypos2#1 50.5 -(byte) collision::ypos2#2 87.06666666666668 (byte) current_movedown_counter -(byte) current_movedown_counter#10 0.5333333333333333 -(byte) current_movedown_counter#12 0.52 -(byte) current_movedown_counter#15 1.3 +(byte) current_movedown_counter#1 0.5333333333333333 +(byte) current_movedown_counter#10 0.52 +(byte) current_movedown_counter#12 1.3 (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.1333333333333333 -(byte) current_orientation#33 4.0 -(byte) current_orientation#8 3.0 +(byte) current_orientation#10 0.5 +(byte) current_orientation#14 0.32653061224489793 +(byte) current_orientation#19 1.1333333333333333 +(byte) current_orientation#29 4.0 +(byte) current_orientation#4 3.0 (byte*) current_piece -(byte*) current_piece#11 0.5588235294117647 -(byte*) current_piece#13 0.3484848484848484 -(byte*) current_piece#15 10.0 -(byte*) current_piece#23 6.0 +(byte*) current_piece#10 0.3484848484848484 +(byte*) current_piece#12 10.0 +(byte*) current_piece#16 0.5588235294117647 +(byte*) current_piece#20 6.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#74 4.0 (byte*~) current_piece#75 4.0 -(byte*~) current_piece#76 4.0 (byte) current_piece_color -(byte) current_piece_color#11 19.96078431372549 -(byte) current_piece_color#13 1.04 -(byte) current_piece_color#15 0.7272727272727273 -(byte) current_piece_color#23 6.0 -(byte) current_piece_color#67 53.368421052631575 +(byte) current_piece_color#11 1.04 +(byte) current_piece_color#13 0.7272727272727273 +(byte) current_piece_color#16 19.96078431372549 +(byte) current_piece_color#21 6.0 +(byte) current_piece_color#62 53.368421052631575 (byte~) current_piece_color#75 4.0 (byte~) current_piece_color#76 22.0 (byte*) current_piece_gfx -(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.8666666666666665 -(byte*) current_piece_gfx#29 6.0 -(byte*) current_piece_gfx#64 53.368421052631575 -(byte*) current_piece_gfx#8 4.0 +(byte*) current_piece_gfx#10 19.96078431372549 +(byte*) current_piece_gfx#14 0.2962962962962963 +(byte*) current_piece_gfx#15 1.8666666666666665 +(byte*) current_piece_gfx#17 0.6666666666666666 +(byte*) current_piece_gfx#27 6.0 +(byte*) current_piece_gfx#4 4.0 +(byte*) current_piece_gfx#53 53.368421052631575 (byte*~) current_piece_gfx#87 2.0 (byte*~) current_piece_gfx#88 11.0 (byte) current_xpos -(byte) current_xpos#16 2.313725490196078 -(byte) current_xpos#19 0.72 -(byte) current_xpos#23 0.871794871794872 -(byte) current_xpos#36 4.0 -(byte) current_xpos#63 5.894736842105264 -(byte) current_xpos#7 4.0 -(byte) current_xpos#9 4.0 +(byte) current_xpos#11 2.313725490196078 +(byte) current_xpos#16 0.72 +(byte) current_xpos#20 0.871794871794872 +(byte) current_xpos#3 4.0 +(byte) current_xpos#34 4.0 +(byte) current_xpos#48 5.894736842105264 +(byte) current_xpos#5 4.0 (byte~) current_xpos#96 7.333333333333333 (byte) current_ypos -(byte) current_ypos#12 0.5588235294117647 -(byte) current_ypos#16 0.48484848484848475 -(byte) current_ypos#22 13.0 -(byte) current_ypos#31 4.0 -(byte) current_ypos#4 4.0 +(byte) current_ypos#1 4.0 +(byte) current_ypos#10 13.0 +(byte) current_ypos#14 0.48484848484848475 +(byte) current_ypos#22 0.5588235294117647 +(byte) current_ypos#30 4.0 (byte~) current_ypos#71 5.5 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (byte*) fill::addr @@ -6434,29 +6379,6 @@ VARIABLE REGISTER WEIGHTS (byte) keyboard_modifiers#4 4.0 (byte) keyboard_modifiers#5 20.0 (byte[8]) keyboard_scan_values -(void()) lock_current() -(byte) lock_current::c -(byte) lock_current::c#1 1001.0 -(byte) lock_current::c#2 400.4 -(byte) lock_current::col -(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 233.66666666666669 -(byte) lock_current::i#2 1552.0 -(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 101.0 -(byte) lock_current::l#6 16.833333333333332 -(byte*) lock_current::playfield_line -(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::$11 22.0 @@ -6467,6 +6389,90 @@ VARIABLE REGISTER WEIGHTS (byte) main::render#1 4.4 (byte) main::render#2 4.4 (byte) main::render#3 22.0 +(byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) +(byte~) play_collision::$7 2002.0 +(byte) play_collision::c +(byte) play_collision::c#1 1001.0 +(byte) play_collision::c#2 222.44444444444446 +(byte) play_collision::col +(byte) play_collision::col#1 500.5 +(byte) play_collision::col#2 638.25 +(byte~) play_collision::col#9 202.0 +(byte) play_collision::i +(byte) play_collision::i#1 161.76923076923077 +(byte~) play_collision::i#11 202.0 +(byte~) play_collision::i#13 2002.0 +(byte) play_collision::i#2 1552.0 +(byte) play_collision::i#3 67.33333333333333 +(byte) play_collision::l +(byte) play_collision::l#1 101.0 +(byte) play_collision::l#6 12.625 +(byte) play_collision::orientation +(byte) play_collision::orientation#0 2.0 +(byte) play_collision::orientation#1 2.0 +(byte) play_collision::orientation#2 2.0 +(byte) play_collision::orientation#3 2.0 +(byte) play_collision::orientation#4 10.0 +(byte*) play_collision::piece_gfx +(byte*) play_collision::piece_gfx#0 47.76190476190476 +(byte*) play_collision::playfield_line +(byte*) play_collision::playfield_line#0 78.71428571428571 +(byte) play_collision::return +(byte) play_collision::return#0 4.0 +(byte) play_collision::return#1 4.0 +(byte) play_collision::return#12 4.0 +(byte) play_collision::return#13 4.0 +(byte) play_collision::return#14 1.3333333333333333 +(byte) play_collision::xpos +(byte) play_collision::xpos#0 1.3333333333333333 +(byte) play_collision::xpos#1 1.0 +(byte) play_collision::xpos#2 1.0 +(byte) play_collision::xpos#3 1.0 +(byte) play_collision::xpos#5 4.954545454545454 +(byte) play_collision::ypos +(byte) play_collision::ypos#0 1.0 +(byte) play_collision::ypos#1 1.3333333333333333 +(byte) play_collision::ypos#2 1.3333333333333333 +(byte) play_collision::ypos#3 1.3333333333333333 +(byte) play_collision::ypos#4 5.0 +(byte) play_collision::ypos2 +(byte) play_collision::ypos2#0 4.0 +(byte) play_collision::ypos2#1 50.5 +(byte) play_collision::ypos2#2 87.06666666666668 +(void()) play_init() +(byte~) play_init::$1 22.0 +(byte) play_init::idx +(byte) play_init::idx#1 7.333333333333333 +(byte) play_init::idx#2 6.6000000000000005 +(byte) play_init::j +(byte) play_init::j#1 16.5 +(byte) play_init::j#2 7.333333333333333 +(byte*) play_init::pli +(byte*) play_init::pli#1 5.5 +(byte*) play_init::pli#2 8.25 +(void()) play_lock_current() +(byte) play_lock_current::c +(byte) play_lock_current::c#1 1001.0 +(byte) play_lock_current::c#2 400.4 +(byte) play_lock_current::col +(byte) play_lock_current::col#0 202.0 +(byte) play_lock_current::col#1 500.5 +(byte) play_lock_current::col#2 776.0 +(byte) play_lock_current::i +(byte) play_lock_current::i#1 233.66666666666669 +(byte) play_lock_current::i#2 1552.0 +(byte) play_lock_current::i#3 67.33333333333333 +(byte~) play_lock_current::i#7 202.0 +(byte~) play_lock_current::i#9 2002.0 +(byte) play_lock_current::l +(byte) play_lock_current::l#1 101.0 +(byte) play_lock_current::l#6 16.833333333333332 +(byte*) play_lock_current::playfield_line +(byte*) play_lock_current::playfield_line#0 110.19999999999999 +(byte) play_lock_current::ypos2 +(byte) play_lock_current::ypos2#0 4.0 +(byte) play_lock_current::ypos2#1 50.5 +(byte) play_lock_current::ypos2#2 27.727272727272727 (byte()) play_move_down((byte) play_move_down::key_event) (byte~) play_move_down::$12 4.0 (byte~) play_move_down::$2 4.0 @@ -6479,16 +6485,16 @@ VARIABLE REGISTER WEIGHTS (byte) play_move_down::movedown#6 6.0 (byte) play_move_down::movedown#7 5.0 (byte) play_move_down::return -(byte) play_move_down::return#0 22.0 -(byte) play_move_down::return#3 3.6666666666666665 +(byte) play_move_down::return#2 3.6666666666666665 +(byte) play_move_down::return#3 22.0 (byte()) play_move_leftright((byte) play_move_leftright::key_event) (byte~) play_move_leftright::$4 4.0 (byte~) play_move_leftright::$8 4.0 (byte) play_move_leftright::key_event (byte) play_move_leftright::key_event#0 7.5 (byte) play_move_leftright::return -(byte) play_move_leftright::return#0 22.0 -(byte) play_move_leftright::return#2 3.6666666666666665 +(byte) play_move_leftright::return#1 3.6666666666666665 +(byte) play_move_leftright::return#4 22.0 (byte()) play_move_rotate((byte) play_move_rotate::key_event) (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 @@ -6500,35 +6506,41 @@ VARIABLE REGISTER WEIGHTS (byte) play_move_rotate::orientation#2 4.0 (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 +(byte) play_move_rotate::return#1 3.6666666666666665 +(byte) play_move_rotate::return#4 22.0 +(void()) play_remove_lines() +(byte) play_remove_lines::c +(byte) play_remove_lines::c#0 600.5999999999999 +(byte) play_remove_lines::full +(byte) play_remove_lines::full#2 420.59999999999997 +(byte) play_remove_lines::full#4 400.4 +(byte) play_remove_lines::r +(byte) play_remove_lines::r#1 161.76923076923077 +(byte) play_remove_lines::r#2 1552.0 +(byte) play_remove_lines::r#3 202.0 +(byte) play_remove_lines::w +(byte) play_remove_lines::w#1 551.0 +(byte) play_remove_lines::w#11 134.66666666666666 +(byte) play_remove_lines::w#12 202.0 +(byte) play_remove_lines::w#2 202.0 +(byte) play_remove_lines::w#3 202.0 +(byte) play_remove_lines::w#4 443.42857142857144 +(byte) play_remove_lines::w#6 168.33333333333331 +(byte) play_remove_lines::x +(byte) play_remove_lines::x#1 1501.5 +(byte) play_remove_lines::x#2 250.25 +(byte) play_remove_lines::y +(byte) play_remove_lines::y#1 151.5 +(byte) play_remove_lines::y#8 14.428571428571429 +(void()) play_spawn_current() +(byte~) play_spawn_current::$1 202.0 +(byte~) play_spawn_current::$3 0.18181818181818182 +(byte) play_spawn_current::piece_idx +(byte) play_spawn_current::piece_idx#1 202.0 +(byte) play_spawn_current::piece_idx#2 51.5 (byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield (byte*[PLAYFIELD_LINES#0]) playfield_lines (byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx -(void()) remove_lines() -(byte) remove_lines::c -(byte) remove_lines::c#0 600.5999999999999 -(byte) remove_lines::full -(byte) remove_lines::full#2 420.59999999999997 -(byte) remove_lines::full#4 400.4 -(byte) remove_lines::r -(byte) remove_lines::r#1 161.76923076923077 -(byte) remove_lines::r#2 1552.0 -(byte) remove_lines::r#3 202.0 -(byte) remove_lines::w -(byte) remove_lines::w#1 551.0 -(byte) remove_lines::w#11 134.66666666666666 -(byte) remove_lines::w#12 202.0 -(byte) remove_lines::w#2 202.0 -(byte) remove_lines::w#3 202.0 -(byte) remove_lines::w#4 443.42857142857144 -(byte) remove_lines::w#6 168.33333333333331 -(byte) remove_lines::x -(byte) remove_lines::x#1 1501.5 -(byte) remove_lines::x#2 250.25 -(byte) remove_lines::y -(byte) remove_lines::y#1 151.5 -(byte) remove_lines::y#8 14.428571428571429 (void()) render_current() (byte) render_current::c (byte) render_current::c#1 1501.5 @@ -6593,31 +6605,14 @@ VARIABLE REGISTER WEIGHTS (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 51.5 -(void()) tables_init() -(byte~) tables_init::$1 22.0 -(byte) tables_init::idx -(byte) tables_init::idx#1 7.333333333333333 -(byte) tables_init::idx#2 6.6000000000000005 -(byte) tables_init::j -(byte) tables_init::j#1 16.5 -(byte) tables_init::j#2 7.333333333333333 -(byte*) tables_init::pli -(byte*) tables_init::pli#1 5.5 -(byte*) tables_init::pli#2 8.25 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#71 ] -[ current_xpos#63 current_xpos#96 ] -[ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 ] -[ current_piece_color#67 current_piece_color#75 current_piece_color#76 ] +[ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] +[ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] +[ current_ypos#10 current_ypos#71 ] +[ current_xpos#48 current_xpos#96 ] +[ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 ] +[ current_piece_color#62 current_piece_color#75 current_piece_color#76 ] [ 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 ] @@ -6627,37 +6622,37 @@ Initial phi equivalence classes [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] [ render_playfield::c#2 render_playfield::c#1 ] -[ play_move_rotate::return#2 ] +[ play_move_rotate::return#1 ] [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -[ current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 ] -[ 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 ] -[ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] -[ collision::l#6 collision::l#1 ] -[ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] -[ collision::col#2 collision::col#9 collision::col#1 ] -[ collision::c#2 collision::c#1 ] -[ collision::return#14 ] -[ play_move_leftright::return#2 ] +[ current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] +[ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +[ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] +[ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] +[ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] +[ play_collision::l#6 play_collision::l#1 ] +[ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +[ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +[ play_collision::c#2 play_collision::c#1 ] +[ play_collision::return#14 ] +[ play_move_leftright::return#1 ] [ 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#76 current_piece#11 current_piece#13 current_piece#71 ] -[ 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 ] -[ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] -[ remove_lines::y#8 remove_lines::y#1 ] -[ remove_lines::r#2 remove_lines::r#3 remove_lines::r#1 ] -[ remove_lines::x#2 remove_lines::x#1 ] -[ remove_lines::full#4 remove_lines::full#2 ] -[ remove_lines::w#6 remove_lines::w#4 remove_lines::w#12 remove_lines::w#11 remove_lines::w#1 remove_lines::w#2 remove_lines::w#3 ] -[ 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 ] +[ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 ] +[ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] +[ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] +[ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] +[ current_piece_color#21 current_piece_color#16 current_piece_color#11 current_piece_color#13 ] +[ play_move_down::return#2 ] +[ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +[ play_remove_lines::y#8 play_remove_lines::y#1 ] +[ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] +[ play_remove_lines::x#2 play_remove_lines::x#1 ] +[ play_remove_lines::full#4 play_remove_lines::full#2 ] +[ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] +[ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +[ play_lock_current::l#6 play_lock_current::l#1 ] +[ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] +[ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] +[ play_lock_current::c#2 play_lock_current::c#1 ] [ keyboard_event_pressed::keycode#5 ] [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] @@ -6665,9 +6660,9 @@ Initial phi equivalence classes [ keyboard_event_scan::col#2 keyboard_event_scan::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_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 ] -[ tables_init::j#2 tables_init::j#1 ] -[ tables_init::pli#2 tables_init::pli#1 ] -[ tables_init::idx#2 tables_init::idx#1 ] +[ play_init::j#2 play_init::j#1 ] +[ play_init::pli#2 play_init::pli#1 ] +[ play_init::idx#2 play_init::idx#1 ] [ render_init::i#2 render_init::i#1 ] [ render_init::li#2 render_init::li#1 ] [ render_init::line#4 render_init::line#1 ] @@ -6678,43 +6673,43 @@ Initial phi equivalence classes Added variable keyboard_event_get::return#3 to zero page equivalence class [ keyboard_event_get::return#3 ] 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 play_move_down::return#3 to zero page equivalence class [ play_move_down::return#3 ] Added variable main::$10 to zero page equivalence class [ main::$10 ] 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 play_move_leftright::return#4 to zero page equivalence class [ play_move_leftright::return#4 ] Added variable main::$11 to zero page equivalence class [ main::$11 ] 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 play_move_rotate::return#4 to zero page equivalence class [ play_move_rotate::return#4 ] Added variable main::$12 to zero page equivalence class [ main::$12 ] 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 ] Added variable render_playfield::$1 to zero page equivalence class [ render_playfield::$1 ] 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_collision::return#13 to zero page equivalence class [ play_collision::return#13 ] Added variable play_move_rotate::$6 to zero page equivalence class [ play_move_rotate::$6 ] 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 ] -Added variable collision::i#1 to zero page equivalence class [ collision::i#1 ] -Added variable collision::$7 to zero page equivalence class [ collision::$7 ] -Added variable collision::return#12 to zero page equivalence class [ collision::return#12 ] +Added variable play_collision::piece_gfx#0 to zero page equivalence class [ play_collision::piece_gfx#0 ] +Added variable play_collision::playfield_line#0 to zero page equivalence class [ play_collision::playfield_line#0 ] +Added variable play_collision::i#1 to zero page equivalence class [ play_collision::i#1 ] +Added variable play_collision::$7 to zero page equivalence class [ play_collision::$7 ] +Added variable play_collision::return#12 to zero page equivalence class [ play_collision::return#12 ] Added variable play_move_leftright::$4 to zero page equivalence class [ play_move_leftright::$4 ] -Added variable collision::return#1 to zero page equivalence class [ collision::return#1 ] +Added variable play_collision::return#1 to zero page equivalence class [ play_collision::return#1 ] Added variable play_move_leftright::$8 to zero page equivalence class [ play_move_leftright::$8 ] Added variable keyboard_event_pressed::return#12 to zero page equivalence class [ keyboard_event_pressed::return#12 ] 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_collision::return#0 to zero page equivalence class [ play_collision::return#0 ] Added variable play_move_down::$12 to zero page equivalence class [ play_move_down::$12 ] -Added variable spawn_current::$3 to zero page equivalence class [ spawn_current::$3 ] +Added variable play_spawn_current::$3 to zero page equivalence class [ play_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 play_spawn_current::$1 to zero page equivalence class [ play_spawn_current::$1 ] Added variable sid_rnd::return#0 to zero page equivalence class [ sid_rnd::return#0 ] -Added variable remove_lines::c#0 to zero page equivalence class [ remove_lines::c#0 ] -Added variable lock_current::playfield_line#0 to zero page equivalence class [ lock_current::playfield_line#0 ] -Added variable lock_current::i#1 to zero page equivalence class [ lock_current::i#1 ] +Added variable play_remove_lines::c#0 to zero page equivalence class [ play_remove_lines::c#0 ] +Added variable play_lock_current::playfield_line#0 to zero page equivalence class [ play_lock_current::playfield_line#0 ] +Added variable play_lock_current::i#1 to zero page equivalence class [ play_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 ] @@ -6736,17 +6731,17 @@ Added variable keyboard_event_scan::$4 to zero page equivalence class [ keyboard Added variable keyboard_event_scan::event_type#0 to zero page equivalence class [ keyboard_event_scan::event_type#0 ] Added variable keyboard_event_scan::$11 to zero page equivalence class [ keyboard_event_scan::$11 ] Added variable keyboard_matrix_read::return#0 to zero page equivalence class [ keyboard_matrix_read::return#0 ] -Added variable tables_init::$1 to zero page equivalence class [ tables_init::$1 ] +Added variable play_init::$1 to zero page equivalence class [ play_init::$1 ] Added variable render_init::$5 to zero page equivalence class [ render_init::$5 ] Added variable render_init::$10 to zero page equivalence class [ render_init::$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#71 ] -[ current_xpos#63 current_xpos#96 ] -[ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 ] -[ current_piece_color#67 current_piece_color#75 current_piece_color#76 ] +[ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] +[ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] +[ current_ypos#10 current_ypos#71 ] +[ current_xpos#48 current_xpos#96 ] +[ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 ] +[ current_piece_color#62 current_piece_color#75 current_piece_color#76 ] [ 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 ] @@ -6756,37 +6751,37 @@ Complete equivalence classes [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] [ render_playfield::c#2 render_playfield::c#1 ] -[ play_move_rotate::return#2 ] +[ play_move_rotate::return#1 ] [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -[ current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 ] -[ 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 ] -[ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] -[ collision::l#6 collision::l#1 ] -[ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] -[ collision::col#2 collision::col#9 collision::col#1 ] -[ collision::c#2 collision::c#1 ] -[ collision::return#14 ] -[ play_move_leftright::return#2 ] +[ current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] +[ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +[ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] +[ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] +[ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] +[ play_collision::l#6 play_collision::l#1 ] +[ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +[ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +[ play_collision::c#2 play_collision::c#1 ] +[ play_collision::return#14 ] +[ play_move_leftright::return#1 ] [ 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#76 current_piece#11 current_piece#13 current_piece#71 ] -[ 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 ] -[ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] -[ remove_lines::y#8 remove_lines::y#1 ] -[ remove_lines::r#2 remove_lines::r#3 remove_lines::r#1 ] -[ remove_lines::x#2 remove_lines::x#1 ] -[ remove_lines::full#4 remove_lines::full#2 ] -[ remove_lines::w#6 remove_lines::w#4 remove_lines::w#12 remove_lines::w#11 remove_lines::w#1 remove_lines::w#2 remove_lines::w#3 ] -[ 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 ] +[ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 ] +[ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] +[ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] +[ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] +[ current_piece_color#21 current_piece_color#16 current_piece_color#11 current_piece_color#13 ] +[ play_move_down::return#2 ] +[ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +[ play_remove_lines::y#8 play_remove_lines::y#1 ] +[ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] +[ play_remove_lines::x#2 play_remove_lines::x#1 ] +[ play_remove_lines::full#4 play_remove_lines::full#2 ] +[ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] +[ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +[ play_lock_current::l#6 play_lock_current::l#1 ] +[ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] +[ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] +[ play_lock_current::c#2 play_lock_current::c#1 ] [ keyboard_event_pressed::keycode#5 ] [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] @@ -6794,9 +6789,9 @@ Complete equivalence classes [ keyboard_event_scan::col#2 keyboard_event_scan::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_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 ] -[ tables_init::j#2 tables_init::j#1 ] -[ tables_init::pli#2 tables_init::pli#1 ] -[ tables_init::idx#2 tables_init::idx#1 ] +[ play_init::j#2 play_init::j#1 ] +[ play_init::pli#2 play_init::pli#1 ] +[ play_init::idx#2 play_init::idx#1 ] [ render_init::i#2 render_init::i#1 ] [ render_init::li#2 render_init::li#1 ] [ render_init::line#4 render_init::line#1 ] @@ -6807,43 +6802,43 @@ Complete equivalence classes [ keyboard_event_get::return#3 ] [ main::key_event#0 ] [ play_move_down::key_event#0 ] -[ play_move_down::return#0 ] +[ play_move_down::return#3 ] [ main::$10 ] [ main::render#1 ] [ play_move_leftright::key_event#0 ] -[ play_move_leftright::return#0 ] +[ play_move_leftright::return#4 ] [ main::$11 ] [ main::render#2 ] [ play_move_rotate::key_event#0 ] -[ play_move_rotate::return#0 ] +[ play_move_rotate::return#4 ] [ main::$12 ] [ main::render#3 ] [ render_current::screen_line#0 ] [ render_current::current_cell#0 ] [ render_playfield::$1 ] [ play_move_rotate::$2 ] -[ collision::return#13 ] +[ play_collision::return#13 ] [ play_move_rotate::$6 ] [ play_move_rotate::$4 ] -[ collision::piece_gfx#0 ] -[ collision::playfield_line#0 ] -[ collision::i#1 ] -[ collision::$7 ] -[ collision::return#12 ] +[ play_collision::piece_gfx#0 ] +[ play_collision::playfield_line#0 ] +[ play_collision::i#1 ] +[ play_collision::$7 ] +[ play_collision::return#12 ] [ play_move_leftright::$4 ] -[ collision::return#1 ] +[ play_collision::return#1 ] [ play_move_leftright::$8 ] [ keyboard_event_pressed::return#12 ] [ play_move_down::$2 ] -[ collision::return#0 ] +[ play_collision::return#0 ] [ play_move_down::$12 ] -[ spawn_current::$3 ] +[ play_spawn_current::$3 ] [ sid_rnd::return#2 ] -[ spawn_current::$1 ] +[ play_spawn_current::$1 ] [ sid_rnd::return#0 ] -[ remove_lines::c#0 ] -[ lock_current::playfield_line#0 ] -[ lock_current::i#1 ] +[ play_remove_lines::c#0 ] +[ play_lock_current::playfield_line#0 ] +[ play_lock_current::i#1 ] [ keyboard_event_pressed::$0 ] [ keyboard_event_pressed::row_bits#0 ] [ keyboard_event_pressed::$1 ] @@ -6865,16 +6860,16 @@ Complete equivalence classes [ keyboard_event_scan::event_type#0 ] [ keyboard_event_scan::$11 ] [ keyboard_matrix_read::return#0 ] -[ tables_init::$1 ] +[ play_init::$1 ] [ render_init::$5 ] [ render_init::$10 ] [ 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#71 ] -Allocated zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 ] -Allocated zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 ] -Allocated zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 ] +Allocated zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] +Allocated zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] +Allocated zp ZP_BYTE:4 [ current_ypos#10 current_ypos#71 ] +Allocated zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 ] +Allocated zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 ] +Allocated zp ZP_BYTE:8 [ current_piece_color#62 current_piece_color#75 current_piece_color#76 ] 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 ] @@ -6884,37 +6879,37 @@ Allocated zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] Allocated zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] Allocated zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] 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:19 [ play_move_rotate::return#1 ] 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#72 current_piece#73 current_piece#74 current_piece#75 ] -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 ] -Allocated zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] -Allocated zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] -Allocated zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] -Allocated zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] -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_WORD:21 [ current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] +Allocated zp ZP_BYTE:23 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +Allocated zp ZP_BYTE:24 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] +Allocated zp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] +Allocated zp ZP_BYTE:26 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] +Allocated zp ZP_BYTE:27 [ play_collision::l#6 play_collision::l#1 ] +Allocated zp ZP_BYTE:28 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +Allocated zp ZP_BYTE:29 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +Allocated zp ZP_BYTE:30 [ play_collision::c#2 play_collision::c#1 ] +Allocated zp ZP_BYTE:31 [ play_collision::return#14 ] +Allocated zp ZP_BYTE:32 [ play_move_leftright::return#1 ] 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#76 current_piece#11 current_piece#13 current_piece#71 ] -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 [ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] -Allocated zp ZP_BYTE:43 [ remove_lines::y#8 remove_lines::y#1 ] -Allocated zp ZP_BYTE:44 [ remove_lines::r#2 remove_lines::r#3 remove_lines::r#1 ] -Allocated zp ZP_BYTE:45 [ remove_lines::x#2 remove_lines::x#1 ] -Allocated zp ZP_BYTE:46 [ remove_lines::full#4 remove_lines::full#2 ] -Allocated zp ZP_BYTE:47 [ remove_lines::w#6 remove_lines::w#4 remove_lines::w#12 remove_lines::w#11 remove_lines::w#1 remove_lines::w#2 remove_lines::w#3 ] -Allocated zp ZP_BYTE:48 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] -Allocated zp ZP_BYTE:49 [ lock_current::l#6 lock_current::l#1 ] -Allocated zp ZP_BYTE:50 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] -Allocated zp ZP_BYTE:51 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] -Allocated zp ZP_BYTE:52 [ lock_current::c#2 lock_current::c#1 ] +Allocated zp ZP_WORD:34 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 ] +Allocated zp ZP_BYTE:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] +Allocated zp ZP_WORD:37 [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] +Allocated zp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] +Allocated zp ZP_BYTE:40 [ current_piece_color#21 current_piece_color#16 current_piece_color#11 current_piece_color#13 ] +Allocated zp ZP_BYTE:41 [ play_move_down::return#2 ] +Allocated zp ZP_BYTE:42 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +Allocated zp ZP_BYTE:43 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Allocated zp ZP_BYTE:44 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] +Allocated zp ZP_BYTE:45 [ play_remove_lines::x#2 play_remove_lines::x#1 ] +Allocated zp ZP_BYTE:46 [ play_remove_lines::full#4 play_remove_lines::full#2 ] +Allocated zp ZP_BYTE:47 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] +Allocated zp ZP_BYTE:48 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +Allocated zp ZP_BYTE:49 [ play_lock_current::l#6 play_lock_current::l#1 ] +Allocated zp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] +Allocated zp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] +Allocated zp ZP_BYTE:52 [ play_lock_current::c#2 play_lock_current::c#1 ] Allocated zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] Allocated zp ZP_BYTE:54 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] Allocated zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] @@ -6922,9 +6917,9 @@ Allocated zp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_mo Allocated zp ZP_BYTE:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Allocated zp ZP_BYTE:58 [ 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:59 [ 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:60 [ tables_init::j#2 tables_init::j#1 ] -Allocated zp ZP_WORD:61 [ tables_init::pli#2 tables_init::pli#1 ] -Allocated zp ZP_BYTE:63 [ tables_init::idx#2 tables_init::idx#1 ] +Allocated zp ZP_BYTE:60 [ play_init::j#2 play_init::j#1 ] +Allocated zp ZP_WORD:61 [ play_init::pli#2 play_init::pli#1 ] +Allocated zp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] Allocated zp ZP_BYTE:64 [ render_init::i#2 render_init::i#1 ] Allocated zp ZP_WORD:65 [ render_init::li#2 render_init::li#1 ] Allocated zp ZP_WORD:67 [ render_init::line#4 render_init::line#1 ] @@ -6935,43 +6930,43 @@ Allocated zp ZP_WORD:72 [ fill::addr#2 fill::addr#0 fill::addr#1 ] Allocated zp ZP_BYTE:74 [ keyboard_event_get::return#3 ] Allocated zp ZP_BYTE:75 [ main::key_event#0 ] Allocated zp ZP_BYTE:76 [ play_move_down::key_event#0 ] -Allocated zp ZP_BYTE:77 [ play_move_down::return#0 ] +Allocated zp ZP_BYTE:77 [ play_move_down::return#3 ] Allocated zp ZP_BYTE:78 [ main::$10 ] Allocated zp ZP_BYTE:79 [ main::render#1 ] Allocated zp ZP_BYTE:80 [ play_move_leftright::key_event#0 ] -Allocated zp ZP_BYTE:81 [ play_move_leftright::return#0 ] +Allocated zp ZP_BYTE:81 [ play_move_leftright::return#4 ] Allocated zp ZP_BYTE:82 [ main::$11 ] Allocated zp ZP_BYTE:83 [ main::render#2 ] Allocated zp ZP_BYTE:84 [ play_move_rotate::key_event#0 ] -Allocated zp ZP_BYTE:85 [ play_move_rotate::return#0 ] +Allocated zp ZP_BYTE:85 [ play_move_rotate::return#4 ] Allocated zp ZP_BYTE:86 [ main::$12 ] Allocated zp ZP_BYTE:87 [ main::render#3 ] Allocated zp ZP_WORD:88 [ render_current::screen_line#0 ] Allocated zp ZP_BYTE:90 [ render_current::current_cell#0 ] Allocated zp ZP_BYTE:91 [ render_playfield::$1 ] Allocated zp ZP_BYTE:92 [ play_move_rotate::$2 ] -Allocated zp ZP_BYTE:93 [ collision::return#13 ] +Allocated zp ZP_BYTE:93 [ play_collision::return#13 ] Allocated zp ZP_BYTE:94 [ play_move_rotate::$6 ] Allocated zp ZP_BYTE:95 [ play_move_rotate::$4 ] -Allocated zp ZP_WORD:96 [ collision::piece_gfx#0 ] -Allocated zp ZP_WORD:98 [ collision::playfield_line#0 ] -Allocated zp ZP_BYTE:100 [ collision::i#1 ] -Allocated zp ZP_BYTE:101 [ collision::$7 ] -Allocated zp ZP_BYTE:102 [ collision::return#12 ] +Allocated zp ZP_WORD:96 [ play_collision::piece_gfx#0 ] +Allocated zp ZP_WORD:98 [ play_collision::playfield_line#0 ] +Allocated zp ZP_BYTE:100 [ play_collision::i#1 ] +Allocated zp ZP_BYTE:101 [ play_collision::$7 ] +Allocated zp ZP_BYTE:102 [ play_collision::return#12 ] Allocated zp ZP_BYTE:103 [ play_move_leftright::$4 ] -Allocated zp ZP_BYTE:104 [ collision::return#1 ] +Allocated zp ZP_BYTE:104 [ play_collision::return#1 ] Allocated zp ZP_BYTE:105 [ play_move_leftright::$8 ] Allocated zp ZP_BYTE:106 [ keyboard_event_pressed::return#12 ] Allocated zp ZP_BYTE:107 [ play_move_down::$2 ] -Allocated zp ZP_BYTE:108 [ collision::return#0 ] +Allocated zp ZP_BYTE:108 [ play_collision::return#0 ] Allocated zp ZP_BYTE:109 [ play_move_down::$12 ] -Allocated zp ZP_BYTE:110 [ spawn_current::$3 ] +Allocated zp ZP_BYTE:110 [ play_spawn_current::$3 ] Allocated zp ZP_BYTE:111 [ sid_rnd::return#2 ] -Allocated zp ZP_BYTE:112 [ spawn_current::$1 ] +Allocated zp ZP_BYTE:112 [ play_spawn_current::$1 ] Allocated zp ZP_BYTE:113 [ sid_rnd::return#0 ] -Allocated zp ZP_BYTE:114 [ remove_lines::c#0 ] -Allocated zp ZP_WORD:115 [ lock_current::playfield_line#0 ] -Allocated zp ZP_BYTE:117 [ lock_current::i#1 ] +Allocated zp ZP_BYTE:114 [ play_remove_lines::c#0 ] +Allocated zp ZP_WORD:115 [ play_lock_current::playfield_line#0 ] +Allocated zp ZP_BYTE:117 [ play_lock_current::i#1 ] Allocated zp ZP_BYTE:118 [ keyboard_event_pressed::$0 ] Allocated zp ZP_BYTE:119 [ keyboard_event_pressed::row_bits#0 ] Allocated zp ZP_BYTE:120 [ keyboard_event_pressed::$1 ] @@ -6993,7 +6988,7 @@ Allocated zp ZP_BYTE:135 [ keyboard_event_scan::$4 ] Allocated zp ZP_BYTE:136 [ keyboard_event_scan::event_type#0 ] Allocated zp ZP_BYTE:137 [ keyboard_event_scan::$11 ] Allocated zp ZP_BYTE:138 [ keyboard_matrix_read::return#0 ] -Allocated zp ZP_BYTE:139 [ tables_init::$1 ] +Allocated zp ZP_BYTE:139 [ play_init::$1 ] Allocated zp ZP_BYTE:140 [ render_init::$5 ] Allocated zp ZP_WORD:141 [ render_init::$10 ] Allocated zp ZP_WORD:143 [ fill::end#0 ] @@ -7032,6 +7027,8 @@ INITIAL ASM .label SID_VOICE3_CONTROL = $d412 .const SID_CONTROL_NOISE = $80 .label SID_VOICE3_OSC = $d41b + .label PLAYFIELD_SCREEN = $400 + .label PLAYFIELD_CHARSET = $2800 .const PLAYFIELD_LINES = $16 .const PLAYFIELD_COLS = $a .const current_movedown_slow = $32 @@ -7041,41 +7038,39 @@ INITIAL ASM .const COLLISION_BOTTOM = 2 .const COLLISION_LEFT = 4 .const COLLISION_RIGHT = 8 - .label SCREEN = $400 - .label CHARSET = $2800 .label keyboard_events_size = $3b .label keyboard_modifiers = $38 .label keyboard_modifiers_5 = $85 + .label current_movedown_counter = 3 .label current_ypos = 2 .label current_xpos = $27 .label current_orientation = $24 .label current_piece_gfx = $25 + .label current_ypos_10 = 4 .label current_piece = $22 .label current_piece_color = $28 - .label current_movedown_counter = 3 - .label current_piece_15 = $15 - .label current_ypos_22 = 4 - .label current_xpos_63 = 5 - .label current_piece_gfx_64 = 6 - .label current_piece_color_67 = 8 + .label current_piece_12 = $15 + .label current_xpos_48 = 5 + .label current_piece_gfx_53 = 6 + .label current_piece_color_62 = 8 .label current_ypos_71 = 4 .label current_xpos_96 = 5 .label current_piece_gfx_87 = 6 .label current_piece_gfx_88 = 6 .label current_piece_color_75 = 8 .label current_piece_color_76 = 8 + .label current_piece_71 = $15 .label current_piece_72 = $15 .label current_piece_73 = $15 .label current_piece_74 = $15 - .label current_piece_75 = $15 //SEG2 @begin bbegin: - jmp b23 -//SEG3 @23 -b23: -//SEG4 kickasm(location (const byte*) CHARSET#0) {{ .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9)) .for (var c=0; c<16; c++) .for (var y=0;y<8; y++) .byte charset.getMulticolorByte(c,y) }} -//SEG5 [2] phi from @23 to @26 [phi:@23->@26] -b26_from_b23: + jmp b14 +//SEG3 @14 +b14: +//SEG4 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .var charset = LoadPicture("nes-charset.png", List().add($000000, $ffffff)) .for (var c=0; c<32; c++) .for (var y=0;y<8; y++) .byte charset.getSinglecolorByte(c,y) }} +//SEG5 [2] phi from @14 to @26 [phi:@14->@26] +b26_from_b14: jmp b26 //SEG6 @26 b26: @@ -7111,19 +7106,19 @@ main: { jmp b22 //SEG17 main::@22 b22: - //SEG18 [10] call tables_init - //SEG19 [304] phi from main::@22 to tables_init [phi:main::@22->tables_init] - tables_init_from_b22: - jsr tables_init + //SEG18 [10] call play_init + //SEG19 [304] phi from main::@22 to play_init [phi:main::@22->play_init] + play_init_from_b22: + jsr play_init //SEG20 [11] phi from main::@22 to main::@23 [phi:main::@22->main::@23] b23_from_b22: jmp b23 //SEG21 main::@23 b23: - //SEG22 [12] call spawn_current - //SEG23 [184] phi from main::@23 to spawn_current [phi:main::@23->spawn_current] - spawn_current_from_b23: - jsr spawn_current + //SEG22 [12] call play_spawn_current + //SEG23 [184] phi from main::@23 to play_spawn_current [phi:main::@23->play_spawn_current] + play_spawn_current_from_b23: + jsr play_spawn_current //SEG24 [13] phi from main::@23 to main::@24 [phi:main::@23->main::@24] b24_from_b23: jmp b24 @@ -7136,52 +7131,52 @@ main: { jmp b25 //SEG28 main::@25 b25: - //SEG29 [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 + //SEG29 [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#17 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_87 lda current_piece_gfx+1 sta current_piece_gfx_87+1 - //SEG30 [16] (byte~) current_piece_color#75 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 + //SEG30 [16] (byte~) current_piece_color#75 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 lda current_piece_color sta current_piece_color_75 //SEG31 [17] call render_current //SEG32 [52] phi from main::@25 to render_current [phi:main::@25->render_current] render_current_from_b25: - //SEG33 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#75 [phi:main::@25->render_current#0] -- register_copy - //SEG34 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy - //SEG35 [52] phi (byte) current_xpos#63 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 + //SEG33 [52] phi (byte) current_piece_color#62 = (byte~) current_piece_color#75 [phi:main::@25->render_current#0] -- register_copy + //SEG34 [52] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy + //SEG35 [52] phi (byte) current_xpos#48 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 lda #3 - sta current_xpos_63 - //SEG36 [52] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->render_current#3] -- vbuz1=vbuc1 + sta current_xpos_48 + //SEG36 [52] phi (byte) current_ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->render_current#3] -- vbuz1=vbuc1 lda #0 - sta current_ypos_22 + sta current_ypos_10 jsr render_current - //SEG37 [18] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 - ldy spawn_current._3 + //SEG37 [18] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 //SEG38 [19] phi from main::@25 to main::@1 [phi:main::@25->main::@1] b1_from_b25: - //SEG39 [19] phi (byte) current_movedown_counter#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#0] -- vbuz1=vbuc1 + //SEG39 [19] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#0] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter //SEG40 [19] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#1] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG41 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#15 [phi:main::@25->main::@1#2] -- register_copy - //SEG42 [19] phi (byte) current_ypos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#3] -- vbuz1=vbuc1 + //SEG41 [19] phi (byte) current_piece_color#16 = (byte) current_piece_color#13 [phi:main::@25->main::@1#2] -- register_copy + //SEG42 [19] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#3] -- vbuz1=vbuc1 lda #0 sta current_ypos - //SEG43 [19] phi (byte) current_xpos#16 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->main::@1#4] -- vbuz1=vbuc1 + //SEG43 [19] phi (byte) current_xpos#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->main::@1#4] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG44 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#10 [phi:main::@25->main::@1#5] -- register_copy - //SEG45 [19] phi (byte) current_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 + //SEG44 [19] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#17 [phi:main::@25->main::@1#5] -- register_copy + //SEG45 [19] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG46 [19] phi (byte*) current_piece#11 = (byte*~) current_piece#71 [phi:main::@25->main::@1#7] -- register_copy + //SEG46 [19] phi (byte*) current_piece#16 = (byte*~) current_piece#70 [phi:main::@25->main::@1#7] -- register_copy jmp b1 //SEG47 main::@1 b1: @@ -7229,14 +7224,14 @@ main: { sta play_move_down.key_event //SEG63 [29] call play_move_down jsr play_move_down - //SEG64 [30] (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 + //SEG64 [30] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 -- vbuz1=vbuz2 + lda play_move_down.return + sta play_move_down.return_3 jmp b29 //SEG65 main::@29 b29: - //SEG66 [31] (byte~) main::$10 ← (byte) play_move_down::return#0 -- vbuz1=vbuz2 - lda play_move_down.return + //SEG66 [31] (byte~) main::$10 ← (byte) play_move_down::return#3 -- vbuz1=vbuz2 + lda play_move_down.return_3 sta _10 //SEG67 [32] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 -- vbuz1=vbuc1_plus_vbuz2 lda #0 @@ -7248,14 +7243,14 @@ main: { sta play_move_leftright.key_event //SEG69 [34] call play_move_leftright jsr play_move_leftright - //SEG70 [35] (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 + //SEG70 [35] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 -- vbuz1=vbuz2 + lda play_move_leftright.return + sta play_move_leftright.return_4 jmp b30 //SEG71 main::@30 b30: - //SEG72 [36] (byte~) main::$11 ← (byte) play_move_leftright::return#0 -- vbuz1=vbuz2 - lda play_move_leftright.return + //SEG72 [36] (byte~) main::$11 ← (byte) play_move_leftright::return#4 -- vbuz1=vbuz2 + lda play_move_leftright.return_4 sta _11 //SEG73 [37] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 -- vbuz1=vbuz2_plus_vbuz3 lda render @@ -7267,14 +7262,14 @@ main: { sta play_move_rotate.key_event //SEG75 [39] call play_move_rotate jsr play_move_rotate - //SEG76 [40] (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 + //SEG76 [40] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 -- vbuz1=vbuz2 + lda play_move_rotate.return + sta play_move_rotate.return_4 jmp b31 //SEG77 main::@31 b31: - //SEG78 [41] (byte~) main::$12 ← (byte) play_move_rotate::return#0 -- vbuz1=vbuz2 - lda play_move_rotate.return + //SEG78 [41] (byte~) main::$12 ← (byte) play_move_rotate::return#4 -- vbuz1=vbuz2 + lda play_move_rotate.return_4 sta _12 //SEG79 [42] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 -- vbuz1=vbuz2_plus_vbuz3 lda render_2 @@ -7297,27 +7292,27 @@ main: { jmp b32 //SEG85 main::@32 b32: - //SEG86 [46] (byte~) current_ypos#71 ← (byte) current_ypos#16 -- vbuz1=vbuz2 + //SEG86 [46] (byte~) current_ypos#71 ← (byte) current_ypos#14 -- vbuz1=vbuz2 lda current_ypos sta current_ypos_71 - //SEG87 [47] (byte~) current_xpos#96 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG87 [47] (byte~) current_xpos#96 ← (byte) current_xpos#20 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_96 - //SEG88 [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + //SEG88 [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#15 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_88 lda current_piece_gfx+1 sta current_piece_gfx_88+1 - //SEG89 [49] (byte~) current_piece_color#76 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 + //SEG89 [49] (byte~) current_piece_color#76 ← (byte) current_piece_color#11 -- vbuz1=vbuz2 lda current_piece_color sta current_piece_color_76 //SEG90 [50] call render_current //SEG91 [52] phi from main::@32 to render_current [phi:main::@32->render_current] render_current_from_b32: - //SEG92 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#76 [phi:main::@32->render_current#0] -- register_copy - //SEG93 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy - //SEG94 [52] phi (byte) current_xpos#63 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy - //SEG95 [52] phi (byte) current_ypos#22 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy + //SEG92 [52] phi (byte) current_piece_color#62 = (byte~) current_piece_color#76 [phi:main::@32->render_current#0] -- register_copy + //SEG93 [52] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy + //SEG94 [52] phi (byte) current_xpos#48 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy + //SEG95 [52] phi (byte) current_ypos#10 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy jsr render_current jmp b10 //SEG96 main::@10 @@ -7326,14 +7321,14 @@ main: { dec BORDERCOL //SEG98 [19] phi from main::@10 to main::@1 [phi:main::@10->main::@1] b1_from_b10: - //SEG99 [19] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy + //SEG99 [19] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@10->main::@1#0] -- register_copy //SEG100 [19] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy - //SEG101 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#2] -- register_copy - //SEG102 [19] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#3] -- register_copy - //SEG103 [19] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#4] -- register_copy - //SEG104 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy - //SEG105 [19] phi (byte) current_orientation#15 = (byte) current_orientation#23 [phi:main::@10->main::@1#6] -- register_copy - //SEG106 [19] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy + //SEG101 [19] phi (byte) current_piece_color#16 = (byte) current_piece_color#11 [phi:main::@10->main::@1#2] -- register_copy + //SEG102 [19] phi (byte) current_ypos#22 = (byte) current_ypos#14 [phi:main::@10->main::@1#3] -- register_copy + //SEG103 [19] phi (byte) current_xpos#11 = (byte) current_xpos#20 [phi:main::@10->main::@1#4] -- register_copy + //SEG104 [19] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#15 [phi:main::@10->main::@1#5] -- register_copy + //SEG105 [19] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@10->main::@1#6] -- register_copy + //SEG106 [19] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@10->main::@1#7] -- register_copy jmp b1 } //SEG107 render_current @@ -7345,8 +7340,8 @@ render_current: { .label current_cell = $5a .label i = $b .label c = $d - //SEG108 [53] (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 + //SEG108 [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda current_ypos_10 asl sta ypos2 //SEG109 [54] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] @@ -7380,8 +7375,8 @@ render_current: { sta screen_line lda screen_lines+1,y sta screen_line+1 - //SEG121 [57] (byte) render_current::xpos#0 ← (byte) current_xpos#63 -- vbuz1=vbuz2 - lda current_xpos_63 + //SEG121 [57] (byte) render_current::xpos#0 ← (byte) current_xpos#48 -- vbuz1=vbuz2 + lda current_xpos_48 sta xpos //SEG122 [58] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] b3_from_b6: @@ -7399,9 +7394,9 @@ render_current: { jmp b3 //SEG130 render_current::@3 b3: - //SEG131 [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG131 [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#2) -- vbuz1=pbuz2_derefidx_vbuz3 ldy i - lda (current_piece_gfx_64),y + lda (current_piece_gfx_53),y sta current_cell //SEG132 [60] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 inc i @@ -7419,8 +7414,8 @@ render_current: { jmp b8 //SEG136 render_current::@8 b8: - //SEG137 [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#67 -- pbuz1_derefidx_vbuz2=vbuz3 - lda current_piece_color_67 + //SEG137 [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#62 -- pbuz1_derefidx_vbuz2=vbuz3 + lda current_piece_color_62 ldy xpos sta (screen_line),y jmp b4 @@ -7545,10 +7540,10 @@ play_move_rotate: { .label _2 = $5c .label _4 = $5f .label _6 = $5e - .label key_event = $54 - .label return = $55 .label orientation = $14 - .label return_2 = $13 + .label return = $13 + .label key_event = $54 + .label return_4 = $55 //SEG180 [85] 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 @@ -7563,11 +7558,11 @@ play_move_rotate: { //SEG183 [87] 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: - //SEG184 [87] 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 - //SEG185 [87] 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 - //SEG186 [87] 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 + //SEG184 [87] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG185 [87] phi (byte) current_orientation#19 = (byte) current_orientation#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG186 [87] phi (byte) play_move_rotate::return#1 = (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 + sta return jmp breturn //SEG187 play_move_rotate::@return breturn: @@ -7575,7 +7570,7 @@ play_move_rotate: { rts //SEG189 play_move_rotate::@2 b2: - //SEG190 [89] (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 + //SEG190 [89] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_plus_vbuc1 lda #$10 clc adc current_orientation @@ -7591,36 +7586,36 @@ play_move_rotate: { jmp b4 //SEG194 play_move_rotate::@4 b4: - //SEG195 [92] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG195 [92] (byte) play_collision::xpos#3 ← (byte) current_xpos#20 -- vbuz1=vbuz2 lda current_xpos - sta collision.xpos - //SEG196 [93] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuz1=vbuz2 + sta play_collision.xpos + //SEG196 [93] (byte) play_collision::ypos#3 ← (byte) current_ypos#14 -- vbuz1=vbuz2 lda current_ypos - sta collision.ypos - //SEG197 [94] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + sta play_collision.ypos + //SEG197 [94] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation - sta collision.orientation - //SEG198 [95] (byte*~) current_piece#75 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + sta play_collision.orientation + //SEG198 [95] (byte*~) current_piece#74 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_75 + sta current_piece_74 lda current_piece+1 - sta current_piece_75+1 - //SEG199 [96] call collision - //SEG200 [104] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] - collision_from_b4: - //SEG201 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy - //SEG202 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy - //SEG203 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy - //SEG204 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#75 [phi:play_move_rotate::@4->collision#3] -- register_copy - jsr collision - //SEG205 [97] (byte) collision::return#13 ← (byte) collision::return#14 -- vbuz1=vbuz2 - lda collision.return_14 - sta collision.return_13 + sta current_piece_74+1 + //SEG199 [96] call play_collision + //SEG200 [104] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] + play_collision_from_b4: + //SEG201 [104] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy + //SEG202 [104] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy + //SEG203 [104] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy + //SEG204 [104] phi (byte*) current_piece#12 = (byte*~) current_piece#74 [phi:play_move_rotate::@4->play_collision#3] -- register_copy + jsr play_collision + //SEG205 [97] (byte) play_collision::return#13 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 + lda play_collision.return_14 + sta play_collision.return_13 jmp b14 //SEG206 play_move_rotate::@14 b14: - //SEG207 [98] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 -- vbuz1=vbuz2 - lda collision.return_13 + //SEG207 [98] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 -- vbuz1=vbuz2 + lda play_collision.return_13 sta _6 //SEG208 [99] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuz1_neq_vbuc1_then_la1 lda _6 @@ -7629,10 +7624,10 @@ play_move_rotate: { jmp b11 //SEG209 play_move_rotate::@11 b11: - //SEG210 [100] (byte) current_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG210 [100] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG211 [101] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 + //SEG211 [101] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 -- pbuz1=pbuz2_plus_vbuz3 lda current_orientation clc adc current_piece @@ -7642,15 +7637,15 @@ play_move_rotate: { sta current_piece_gfx+1 //SEG212 [87] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] breturn_from_b11: - //SEG213 [87] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG214 [87] phi (byte) current_orientation#23 = (byte) current_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG215 [87] 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 + //SEG213 [87] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#4 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG214 [87] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG215 [87] phi (byte) play_move_rotate::return#1 = (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 + sta return jmp breturn //SEG216 play_move_rotate::@1 b1: - //SEG217 [102] (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 + //SEG217 [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_minus_vbuc1 lda current_orientation sec sbc #$10 @@ -7661,8 +7656,8 @@ play_move_rotate: { sta orientation jmp b4_from_b1 } -//SEG219 collision -collision: { +//SEG219 play_collision +play_collision: { .label _7 = $65 .label xpos = $19 .label ypos = $18 @@ -7683,176 +7678,176 @@ collision: { .label i_3 = $1c .label i_11 = $1c .label i_13 = $1c - //SEG220 [105] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz2_plus_vbuz3 + //SEG220 [105] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 -- pbuz1=pbuz2_plus_vbuz3 lda orientation clc - adc current_piece_15 + adc current_piece_12 sta piece_gfx lda #0 - adc current_piece_15+1 + adc current_piece_12+1 sta piece_gfx+1 - //SEG221 [106] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG221 [106] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda ypos asl sta ypos2 - //SEG222 [107] phi from collision to collision::@1 [phi:collision->collision::@1] - b1_from_collision: - //SEG223 [107] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 + //SEG222 [107] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + b1_from_play_collision: + //SEG223 [107] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG224 [107] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 + //SEG224 [107] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG225 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy + //SEG225 [107] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy jmp b1 - //SEG226 collision::@1 + //SEG226 play_collision::@1 b1: - //SEG227 [108] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG227 [108] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_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 - //SEG228 [109] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 + //SEG228 [109] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 lda xpos sta col - //SEG229 [110] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] + //SEG229 [110] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] b2_from_b1: - //SEG230 [110] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuz1=vbuc1 + //SEG230 [110] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG231 [110] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy - //SEG232 [110] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy + //SEG231 [110] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG232 [110] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy jmp b2 - //SEG233 collision::@2 + //SEG233 play_collision::@2 b2: - //SEG234 [111] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG234 [111] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG235 [112] 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 + //SEG235 [112] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 jmp b8 - //SEG236 collision::@8 + //SEG236 play_collision::@8 b8: - //SEG237 [113] 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 + //SEG237 [113] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG238 [114] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] + //SEG238 [114] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] breturn_from_b8: - //SEG239 [114] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuz1=vbuc1 + //SEG239 [114] phi (byte) play_collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_BOTTOM sta return_14 jmp breturn - //SEG240 collision::@return + //SEG240 play_collision::@return breturn: //SEG241 [115] return rts - //SEG242 collision::@4 + //SEG242 play_collision::@4 b4: - //SEG243 [116] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG243 [116] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and col sta _7 - //SEG244 [117] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuz1_eq_0_then_la1 + //SEG244 [117] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuz1_eq_0_then_la1 lda _7 cmp #0 beq b5 - //SEG245 [114] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] + //SEG245 [114] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] breturn_from_b4: - //SEG246 [114] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuz1=vbuc1 + //SEG246 [114] phi (byte) play_collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_LEFT sta return_14 jmp breturn - //SEG247 collision::@5 + //SEG247 play_collision::@5 b5: - //SEG248 [118] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG248 [118] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG249 [114] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] + //SEG249 [114] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] breturn_from_b5: - //SEG250 [114] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuz1=vbuc1 + //SEG250 [114] phi (byte) play_collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_RIGHT sta return_14 jmp breturn - //SEG251 collision::@6 + //SEG251 play_collision::@6 b6: - //SEG252 [119] 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 + //SEG252 [119] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG253 [114] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] + //SEG253 [114] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] breturn_from_b6: - //SEG254 [114] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuz1=vbuc1 + //SEG254 [114] phi (byte) play_collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_PLAYFIELD sta return_14 jmp breturn - //SEG255 collision::@3 + //SEG255 play_collision::@3 b3: - //SEG256 [120] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG256 [120] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG257 [121] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuz1=_inc_vbuz1 + //SEG257 [121] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG258 [122] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuz1_neq_vbuc1_then_la1 + //SEG258 [122] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b21 jmp b17 - //SEG259 collision::@17 + //SEG259 play_collision::@17 b17: - //SEG260 [123] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG260 [123] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG261 [124] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG261 [124] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG262 [125] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG262 [125] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG263 [114] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] + //SEG263 [114] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] breturn_from_b17: - //SEG264 [114] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuz1=vbuc1 + //SEG264 [114] phi (byte) play_collision::return#14 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_NONE sta return_14 jmp breturn - //SEG265 collision::@20 + //SEG265 play_collision::@20 b20: - //SEG266 [126] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG266 [126] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG267 [107] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] + //SEG267 [107] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] b1_from_b20: - //SEG268 [107] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy - //SEG269 [107] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy - //SEG270 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy + //SEG268 [107] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy + //SEG269 [107] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy + //SEG270 [107] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy jmp b1 - //SEG271 collision::@21 + //SEG271 play_collision::@21 b21: - //SEG272 [127] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG272 [127] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG273 [110] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] + //SEG273 [110] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] b2_from_b21: - //SEG274 [110] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy - //SEG275 [110] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy - //SEG276 [110] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy + //SEG274 [110] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy + //SEG275 [110] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy + //SEG276 [110] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy jmp b2 } //SEG277 play_move_leftright play_move_leftright: { .label _4 = $67 .label _8 = $69 + .label return = $20 .label key_event = $50 - .label return = $51 - .label return_2 = $20 + .label return_4 = $51 //SEG278 [128] 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 @@ -7867,37 +7862,37 @@ play_move_leftright: { jmp b7 //SEG281 play_move_leftright::@7 b7: - //SEG282 [130] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG282 [130] (byte) play_collision::xpos#2 ← (byte) current_xpos#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny - sty collision.xpos - //SEG283 [131] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuz1=vbuz2 + sty play_collision.xpos + //SEG283 [131] (byte) play_collision::ypos#2 ← (byte) current_ypos#14 -- vbuz1=vbuz2 lda current_ypos - sta collision.ypos - //SEG284 [132] (byte) collision::orientation#2 ← (byte) current_orientation#18 -- vbuz1=vbuz2 + sta play_collision.ypos + //SEG284 [132] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuz1=vbuz2 lda current_orientation - sta collision.orientation - //SEG285 [133] (byte*~) current_piece#74 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + sta play_collision.orientation + //SEG285 [133] (byte*~) current_piece#73 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_74 + sta current_piece_73 lda current_piece+1 - sta current_piece_74+1 - //SEG286 [134] call collision - //SEG287 [104] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] - collision_from_b7: - //SEG288 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy - //SEG289 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy - //SEG290 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy - //SEG291 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#74 [phi:play_move_leftright::@7->collision#3] -- register_copy - jsr collision - //SEG292 [135] (byte) collision::return#12 ← (byte) collision::return#14 -- vbuz1=vbuz2 - lda collision.return_14 - sta collision.return_12 + sta current_piece_73+1 + //SEG286 [134] call play_collision + //SEG287 [104] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] + play_collision_from_b7: + //SEG288 [104] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy + //SEG289 [104] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy + //SEG290 [104] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy + //SEG291 [104] phi (byte*) current_piece#12 = (byte*~) current_piece#73 [phi:play_move_leftright::@7->play_collision#3] -- register_copy + jsr play_collision + //SEG292 [135] (byte) play_collision::return#12 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 + lda play_collision.return_14 + sta play_collision.return_12 jmp b15 //SEG293 play_move_leftright::@15 b15: - //SEG294 [136] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 -- vbuz1=vbuz2 - lda collision.return_12 + //SEG294 [136] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 -- vbuz1=vbuz2 + lda play_collision.return_12 sta _4 //SEG295 [137] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda _4 @@ -7906,24 +7901,24 @@ play_move_leftright: { jmp b8 //SEG296 play_move_leftright::@8 b8: - //SEG297 [138] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 + //SEG297 [138] (byte) current_xpos#3 ← ++ (byte) current_xpos#16 -- vbuz1=_inc_vbuz1 inc current_xpos //SEG298 [139] 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: - //SEG299 [139] 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 - //SEG300 [139] 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 + //SEG299 [139] phi (byte) current_xpos#20 = (byte) current_xpos#5 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG300 [139] phi (byte) play_move_leftright::return#1 = (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 + sta return jmp breturn //SEG301 [139] 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: - //SEG302 [139] 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 - //SEG303 [139] 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 + //SEG302 [139] phi (byte) current_xpos#20 = (byte) current_xpos#16 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG303 [139] phi (byte) play_move_leftright::return#1 = (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 + sta return jmp breturn //SEG304 play_move_leftright::@return breturn: @@ -7931,37 +7926,37 @@ play_move_leftright: { rts //SEG306 play_move_leftright::@1 b1: - //SEG307 [141] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG307 [141] (byte) play_collision::xpos#1 ← (byte) current_xpos#16 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex - stx collision.xpos - //SEG308 [142] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuz1=vbuz2 + stx play_collision.xpos + //SEG308 [142] (byte) play_collision::ypos#1 ← (byte) current_ypos#14 -- vbuz1=vbuz2 lda current_ypos - sta collision.ypos - //SEG309 [143] (byte) collision::orientation#1 ← (byte) current_orientation#18 -- vbuz1=vbuz2 + sta play_collision.ypos + //SEG309 [143] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuz1=vbuz2 lda current_orientation - sta collision.orientation - //SEG310 [144] (byte*~) current_piece#73 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + sta play_collision.orientation + //SEG310 [144] (byte*~) current_piece#72 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_73 + sta current_piece_72 lda current_piece+1 - sta current_piece_73+1 - //SEG311 [145] call collision - //SEG312 [104] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] - collision_from_b1: - //SEG313 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy - //SEG314 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy - //SEG315 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy - //SEG316 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#73 [phi:play_move_leftright::@1->collision#3] -- register_copy - jsr collision - //SEG317 [146] (byte) collision::return#1 ← (byte) collision::return#14 -- vbuz1=vbuz2 - lda collision.return_14 - sta collision.return_1 + sta current_piece_72+1 + //SEG311 [145] call play_collision + //SEG312 [104] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + play_collision_from_b1: + //SEG313 [104] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG314 [104] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG315 [104] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG316 [104] phi (byte*) current_piece#12 = (byte*~) current_piece#72 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + jsr play_collision + //SEG317 [146] (byte) play_collision::return#1 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 + lda play_collision.return_14 + sta play_collision.return_1 jmp b14 //SEG318 play_move_leftright::@14 b14: - //SEG319 [147] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 -- vbuz1=vbuz2 - lda collision.return_1 + //SEG319 [147] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 -- vbuz1=vbuz2 + lda play_collision.return_1 sta _8 //SEG320 [148] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda _8 @@ -7970,7 +7965,7 @@ play_move_leftright: { jmp b11 //SEG321 play_move_leftright::@11 b11: - //SEG322 [149] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 + //SEG322 [149] (byte) current_xpos#5 ← -- (byte) current_xpos#16 -- vbuz1=_dec_vbuz1 dec current_xpos jmp breturn_from_b11 } @@ -7978,11 +7973,11 @@ play_move_leftright: { play_move_down: { .label _2 = $6b .label _12 = $6d - .label key_event = $4c - .label return = $4d .label movedown = $21 - .label return_3 = $29 - //SEG324 [150] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 + .label return = $29 + .label key_event = $4c + .label return_3 = $4d + //SEG324 [150] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 inc current_movedown_counter //SEG325 [151] 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 @@ -8030,7 +8025,7 @@ play_move_down: { jmp b9 //SEG340 play_move_down::@9 b9: - //SEG341 [158] if((byte) current_movedown_counter#10<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG341 [158] if((byte) current_movedown_counter#1<(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 @@ -8047,7 +8042,7 @@ play_move_down: { jmp b2 //SEG346 play_move_down::@2 b2: - //SEG347 [161] if((byte) current_movedown_counter#10<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG347 [161] if((byte) current_movedown_counter#1<(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 @@ -8070,37 +8065,37 @@ play_move_down: { jmp b12 //SEG354 play_move_down::@12 b12: - //SEG355 [165] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG355 [165] (byte) play_collision::ypos#0 ← (byte) current_ypos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny - sty collision.ypos - //SEG356 [166] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + sty play_collision.ypos + //SEG356 [166] (byte) play_collision::xpos#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 lda current_xpos - sta collision.xpos - //SEG357 [167] (byte) collision::orientation#0 ← (byte) current_orientation#15 -- vbuz1=vbuz2 + sta play_collision.xpos + //SEG357 [167] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuz1=vbuz2 lda current_orientation - sta collision.orientation - //SEG358 [168] (byte*~) current_piece#72 ← (byte*) current_piece#11 -- pbuz1=pbuz2 + sta play_collision.orientation + //SEG358 [168] (byte*~) current_piece#71 ← (byte*) current_piece#16 -- pbuz1=pbuz2 lda current_piece - sta current_piece_72 + sta current_piece_71 lda current_piece+1 - sta current_piece_72+1 - //SEG359 [169] call collision - //SEG360 [104] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] - collision_from_b12: - //SEG361 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy - //SEG362 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy - //SEG363 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy - //SEG364 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_down::@12->collision#3] -- register_copy - jsr collision - //SEG365 [170] (byte) collision::return#0 ← (byte) collision::return#14 -- vbuz1=vbuz2 - lda collision.return_14 - sta collision.return + sta current_piece_71+1 + //SEG359 [169] call play_collision + //SEG360 [104] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] + play_collision_from_b12: + //SEG361 [104] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy + //SEG362 [104] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy + //SEG363 [104] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy + //SEG364 [104] phi (byte*) current_piece#12 = (byte*~) current_piece#71 [phi:play_move_down::@12->play_collision#3] -- register_copy + jsr play_collision + //SEG365 [170] (byte) play_collision::return#0 ← (byte) play_collision::return#14 -- vbuz1=vbuz2 + lda play_collision.return_14 + sta play_collision.return jmp b18 //SEG366 play_move_down::@18 b18: - //SEG367 [171] (byte~) play_move_down::$12 ← (byte) collision::return#0 -- vbuz1=vbuz2 - lda collision.return + //SEG367 [171] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 -- vbuz1=vbuz2 + lda play_collision.return sta _12 //SEG368 [172] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuz1_eq_vbuc1_then_la1 lda _12 @@ -8111,44 +8106,44 @@ play_move_down: { jmp b13 //SEG370 play_move_down::@13 b13: - //SEG371 [174] call lock_current - jsr lock_current + //SEG371 [174] call play_lock_current + jsr play_lock_current //SEG372 [175] 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 //SEG373 play_move_down::@19 b19: - //SEG374 [176] call remove_lines - //SEG375 [198] phi from play_move_down::@19 to remove_lines [phi:play_move_down::@19->remove_lines] - remove_lines_from_b19: - jsr remove_lines + //SEG374 [176] call play_remove_lines + //SEG375 [198] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] + play_remove_lines_from_b19: + jsr play_remove_lines //SEG376 [177] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] b20_from_b19: jmp b20 //SEG377 play_move_down::@20 b20: - //SEG378 [178] call spawn_current - //SEG379 [184] phi from play_move_down::@20 to spawn_current [phi:play_move_down::@20->spawn_current] - spawn_current_from_b20: - jsr spawn_current - //SEG380 [179] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 - ldy spawn_current._3 + //SEG378 [178] call play_spawn_current + //SEG379 [184] phi from play_move_down::@20 to play_spawn_current [phi:play_move_down::@20->play_spawn_current] + play_spawn_current_from_b20: + jsr play_spawn_current + //SEG380 [179] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 //SEG381 [180] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] b7_from_b20: - //SEG382 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#15 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy - //SEG383 [180] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 + //SEG382 [180] phi (byte) current_piece_color#21 = (byte) current_piece_color#13 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy + //SEG383 [180] phi (byte) current_xpos#34 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG384 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#10 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy - //SEG385 [180] phi (byte) current_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 + //SEG384 [180] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#17 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy + //SEG385 [180] phi (byte) current_orientation#29 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG386 [180] phi (byte*) current_piece#23 = (byte*~) current_piece#76 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy - //SEG387 [180] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 + //SEG386 [180] phi (byte*) current_piece#20 = (byte*~) current_piece#75 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy + //SEG387 [180] phi (byte) current_ypos#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 lda #0 sta current_ypos jmp b7 @@ -8156,31 +8151,31 @@ play_move_down: { b7: //SEG389 [181] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] breturn_from_b7: - //SEG390 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG391 [181] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG392 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG393 [181] phi (byte) current_orientation#18 = (byte) current_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG394 [181] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG395 [181] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG396 [181] 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 + //SEG390 [181] phi (byte) current_piece_color#11 = (byte) current_piece_color#21 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG391 [181] phi (byte) current_xpos#16 = (byte) current_xpos#34 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG392 [181] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#27 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG393 [181] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG394 [181] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG395 [181] phi (byte) current_ypos#14 = (byte) current_ypos#30 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG396 [181] phi (byte) current_movedown_counter#10 = (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 - //SEG397 [181] 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 + //SEG397 [181] phi (byte) play_move_down::return#2 = (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 + sta return jmp breturn //SEG398 [181] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] breturn_from_b4: - //SEG399 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG400 [181] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG401 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG402 [181] phi (byte) current_orientation#18 = (byte) current_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG403 [181] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG404 [181] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG405 [181] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG406 [181] 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 + //SEG399 [181] phi (byte) current_piece_color#11 = (byte) current_piece_color#16 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG400 [181] phi (byte) current_xpos#16 = (byte) current_xpos#11 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG401 [181] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#10 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG402 [181] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG403 [181] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG404 [181] phi (byte) current_ypos#14 = (byte) current_ypos#22 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG405 [181] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG406 [181] phi (byte) play_move_down::return#2 = (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 + sta return jmp breturn //SEG407 play_move_down::@return breturn: @@ -8188,61 +8183,61 @@ play_move_down: { rts //SEG409 play_move_down::@6 b6: - //SEG410 [183] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 + //SEG410 [183] (byte) current_ypos#1 ← ++ (byte) current_ypos#22 -- vbuz1=_inc_vbuz1 inc current_ypos //SEG411 [180] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] b7_from_b6: - //SEG412 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG413 [180] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG414 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG415 [180] phi (byte) current_orientation#33 = (byte) current_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG416 [180] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG417 [180] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG412 [180] phi (byte) current_piece_color#21 = (byte) current_piece_color#16 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG413 [180] phi (byte) current_xpos#34 = (byte) current_xpos#11 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG414 [180] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#10 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG415 [180] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG416 [180] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG417 [180] phi (byte) current_ypos#30 = (byte) current_ypos#1 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG418 spawn_current -spawn_current: { +//SEG418 play_spawn_current +play_spawn_current: { .label _1 = $70 .label _3 = $6e .label piece_idx = $2a - //SEG419 [185] phi from spawn_current to spawn_current::@1 [phi:spawn_current->spawn_current::@1] - b1_from_spawn_current: - //SEG420 [185] 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 + //SEG419 [185] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] + b1_from_play_spawn_current: + //SEG420 [185] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current->play_spawn_current::@1#0] -- vbuz1=vbuc1 lda #7 sta piece_idx jmp b1 - //SEG421 spawn_current::@1 + //SEG421 play_spawn_current::@1 b1: - //SEG422 [186] 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 + //SEG422 [186] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 -- vbuz1_eq_vbuc1_then_la1 lda piece_idx cmp #7 beq b2_from_b1 jmp b3 - //SEG423 spawn_current::@3 + //SEG423 play_spawn_current::@3 b3: - //SEG424 [187] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG424 [187] (byte~) play_spawn_current::$3 ← (byte) play_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 - //SEG425 [188] (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 + //SEG425 [188] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_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 - //SEG426 [189] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG426 [189] (byte) current_piece_color#13 ← *((const byte[]) PIECES_COLORS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy piece_idx lda PIECES_COLORS,y sta current_piece_color jmp breturn - //SEG427 spawn_current::@return + //SEG427 play_spawn_current::@return breturn: //SEG428 [190] return rts - //SEG429 [191] phi from spawn_current::@1 to spawn_current::@2 [phi:spawn_current::@1->spawn_current::@2] + //SEG429 [191] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] b2_from_b1: jmp b2 - //SEG430 spawn_current::@2 + //SEG430 play_spawn_current::@2 b2: //SEG431 [192] call sid_rnd jsr sid_rnd @@ -8250,18 +8245,18 @@ spawn_current: { lda sid_rnd.return sta sid_rnd.return_2 jmp b7 - //SEG433 spawn_current::@7 + //SEG433 play_spawn_current::@7 b7: - //SEG434 [194] (byte~) spawn_current::$1 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 + //SEG434 [194] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 lda sid_rnd.return_2 sta _1 - //SEG435 [195] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG435 [195] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and _1 sta piece_idx - //SEG436 [185] phi from spawn_current::@7 to spawn_current::@1 [phi:spawn_current::@7->spawn_current::@1] + //SEG436 [185] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] b1_from_b7: - //SEG437 [185] phi (byte) spawn_current::piece_idx#2 = (byte) spawn_current::piece_idx#1 [phi:spawn_current::@7->spawn_current::@1#0] -- register_copy + //SEG437 [185] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@7->play_spawn_current::@1#0] -- register_copy jmp b1 } //SEG438 sid_rnd @@ -8277,149 +8272,149 @@ sid_rnd: { //SEG441 [197] return rts } -//SEG442 remove_lines -remove_lines: { +//SEG442 play_remove_lines +play_remove_lines: { .label c = $72 .label r = $2c .label w = $2f .label x = $2d .label y = $2b .label full = $2e - //SEG443 [199] phi from remove_lines to remove_lines::@1 [phi:remove_lines->remove_lines::@1] - b1_from_remove_lines: - //SEG444 [199] phi (byte) remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines->remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG443 [199] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + b1_from_play_remove_lines: + //SEG444 [199] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG445 [199] phi (byte) remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#1] -- vbuz1=vbuc1 + //SEG445 [199] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuz1=vbuc1 lda #PLAYFIELD_LINES*PLAYFIELD_COLS-1 sta w - //SEG446 [199] phi (byte) remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#2] -- vbuz1=vbuc1 + //SEG446 [199] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuz1=vbuc1 lda #PLAYFIELD_LINES*PLAYFIELD_COLS-1 sta r jmp b1 - //SEG447 [199] phi from remove_lines::@4 to remove_lines::@1 [phi:remove_lines::@4->remove_lines::@1] + //SEG447 [199] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] b1_from_b4: - //SEG448 [199] phi (byte) remove_lines::y#8 = (byte) remove_lines::y#1 [phi:remove_lines::@4->remove_lines::@1#0] -- register_copy - //SEG449 [199] phi (byte) remove_lines::w#12 = (byte) remove_lines::w#11 [phi:remove_lines::@4->remove_lines::@1#1] -- register_copy - //SEG450 [199] phi (byte) remove_lines::r#3 = (byte) remove_lines::r#1 [phi:remove_lines::@4->remove_lines::@1#2] -- register_copy + //SEG448 [199] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy + //SEG449 [199] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy + //SEG450 [199] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy jmp b1 - //SEG451 remove_lines::@1 + //SEG451 play_remove_lines::@1 b1: - //SEG452 [200] phi from remove_lines::@1 to remove_lines::@2 [phi:remove_lines::@1->remove_lines::@2] + //SEG452 [200] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] b2_from_b1: - //SEG453 [200] phi (byte) remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines::@1->remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG453 [200] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG454 [200] phi (byte) remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@1->remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG454 [200] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG455 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#12 [phi:remove_lines::@1->remove_lines::@2#2] -- register_copy - //SEG456 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#3 [phi:remove_lines::@1->remove_lines::@2#3] -- register_copy + //SEG455 [200] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy + //SEG456 [200] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG457 [200] phi from remove_lines::@3 to remove_lines::@2 [phi:remove_lines::@3->remove_lines::@2] + //SEG457 [200] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] b2_from_b3: - //SEG458 [200] phi (byte) remove_lines::full#4 = (byte) remove_lines::full#2 [phi:remove_lines::@3->remove_lines::@2#0] -- register_copy - //SEG459 [200] phi (byte) remove_lines::x#2 = (byte) remove_lines::x#1 [phi:remove_lines::@3->remove_lines::@2#1] -- register_copy - //SEG460 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#1 [phi:remove_lines::@3->remove_lines::@2#2] -- register_copy - //SEG461 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#1 [phi:remove_lines::@3->remove_lines::@2#3] -- register_copy + //SEG458 [200] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy + //SEG459 [200] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy + //SEG460 [200] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy + //SEG461 [200] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG462 remove_lines::@2 + //SEG462 play_remove_lines::@2 b2: - //SEG463 [201] (byte) remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG463 [201] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy r lda playfield,y sta c - //SEG464 [202] (byte) remove_lines::r#1 ← -- (byte) remove_lines::r#2 -- vbuz1=_dec_vbuz1 + //SEG464 [202] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuz1=_dec_vbuz1 dec r - //SEG465 [203] if((byte) remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@17 -- vbuz1_neq_0_then_la1 + //SEG465 [203] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@17 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b17_from_b2 - //SEG466 [204] phi from remove_lines::@2 to remove_lines::@3 [phi:remove_lines::@2->remove_lines::@3] + //SEG466 [204] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] b3_from_b2: - //SEG467 [204] phi (byte) remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@2->remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG467 [204] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full jmp b3 - //SEG468 remove_lines::@3 + //SEG468 play_remove_lines::@3 b3: - //SEG469 [205] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#4) ← (byte) remove_lines::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG469 [205] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda c ldy w sta playfield,y - //SEG470 [206] (byte) remove_lines::w#1 ← -- (byte) remove_lines::w#4 -- vbuz1=_dec_vbuz1 + //SEG470 [206] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuz1=_dec_vbuz1 dec w - //SEG471 [207] (byte) remove_lines::x#1 ← ++ (byte) remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG471 [207] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG472 [208] if((byte) remove_lines::x#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 remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG472 [208] if((byte) play_remove_lines::x#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 play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #PLAYFIELD_COLS-1+1 bne b2_from_b3 jmp b9 - //SEG473 remove_lines::@9 + //SEG473 play_remove_lines::@9 b9: - //SEG474 [209] if((byte) remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG474 [209] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 lda full cmp #1 bne b4_from_b9 jmp b10 - //SEG475 remove_lines::@10 + //SEG475 play_remove_lines::@10 b10: - //SEG476 [210] (byte) remove_lines::w#2 ← (byte) remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG476 [210] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc w sta w - //SEG477 [211] phi from remove_lines::@10 remove_lines::@9 to remove_lines::@4 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4] + //SEG477 [211] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] b4_from_b10: b4_from_b9: - //SEG478 [211] phi (byte) remove_lines::w#11 = (byte) remove_lines::w#2 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4#0] -- register_copy + //SEG478 [211] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy jmp b4 - //SEG479 remove_lines::@4 + //SEG479 play_remove_lines::@4 b4: - //SEG480 [212] (byte) remove_lines::y#1 ← ++ (byte) remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG480 [212] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG481 [213] if((byte) remove_lines::y#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 remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG481 [213] if((byte) play_remove_lines::y#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 play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #PLAYFIELD_LINES-1+1 bne b1_from_b4 - //SEG482 [214] phi from remove_lines::@4 remove_lines::@6 to remove_lines::@5 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5] + //SEG482 [214] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] b5_from_b4: b5_from_b6: - //SEG483 [214] phi (byte) remove_lines::w#6 = (byte) remove_lines::w#11 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5#0] -- register_copy + //SEG483 [214] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy jmp b5 - //SEG484 remove_lines::@5 + //SEG484 play_remove_lines::@5 b5: - //SEG485 [215] if((byte) remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG485 [215] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 lda w cmp #$ff bne b6 jmp breturn - //SEG486 remove_lines::@return + //SEG486 play_remove_lines::@return breturn: //SEG487 [216] return rts - //SEG488 remove_lines::@6 + //SEG488 play_remove_lines::@6 b6: - //SEG489 [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG489 [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy w lda #0 sta playfield,y - //SEG490 [218] (byte) remove_lines::w#3 ← -- (byte) remove_lines::w#6 -- vbuz1=_dec_vbuz1 + //SEG490 [218] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuz1=_dec_vbuz1 dec w jmp b5_from_b6 - //SEG491 [219] phi from remove_lines::@2 to remove_lines::@17 [phi:remove_lines::@2->remove_lines::@17] + //SEG491 [219] phi from play_remove_lines::@2 to play_remove_lines::@17 [phi:play_remove_lines::@2->play_remove_lines::@17] b17_from_b2: jmp b17 - //SEG492 remove_lines::@17 + //SEG492 play_remove_lines::@17 b17: - //SEG493 [204] phi from remove_lines::@17 to remove_lines::@3 [phi:remove_lines::@17->remove_lines::@3] + //SEG493 [204] phi from play_remove_lines::@17 to play_remove_lines::@3 [phi:play_remove_lines::@17->play_remove_lines::@3] b3_from_b17: - //SEG494 [204] phi (byte) remove_lines::full#2 = (byte) remove_lines::full#4 [phi:remove_lines::@17->remove_lines::@3#0] -- register_copy + //SEG494 [204] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@17->play_remove_lines::@3#0] -- register_copy jmp b3 } -//SEG495 lock_current -lock_current: { +//SEG495 play_lock_current +play_lock_current: { .label ypos2 = $30 .label playfield_line = $73 .label col = $33 @@ -8430,108 +8425,108 @@ lock_current: { .label i_3 = $32 .label i_7 = $32 .label i_9 = $32 - //SEG496 [220] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG496 [220] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda current_ypos asl sta ypos2 - //SEG497 [221] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] - b1_from_lock_current: - //SEG498 [221] 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 + //SEG497 [221] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + b1_from_play_lock_current: + //SEG498 [221] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG499 [221] 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 + //SEG499 [221] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG500 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy + //SEG500 [221] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG501 lock_current::@1 + //SEG501 play_lock_current::@1 b1: - //SEG502 [222] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG502 [222] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_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 - //SEG503 [223] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG503 [223] (byte) play_lock_current::col#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG504 [224] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] + //SEG504 [224] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] b2_from_b1: - //SEG505 [224] 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 + //SEG505 [224] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG506 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy - //SEG507 [224] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy + //SEG506 [224] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy + //SEG507 [224] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy jmp b2 - //SEG508 lock_current::@2 + //SEG508 play_lock_current::@2 b2: - //SEG509 [225] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG509 [225] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG510 [226] 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 + //SEG510 [226] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 jmp b4 - //SEG511 lock_current::@4 + //SEG511 play_lock_current::@4 b4: - //SEG512 [227] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG512 [227] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_color#16 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_color ldy col sta (playfield_line),y jmp b3 - //SEG513 lock_current::@3 + //SEG513 play_lock_current::@3 b3: - //SEG514 [228] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG514 [228] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG515 [229] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuz1=_inc_vbuz1 + //SEG515 [229] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG516 [230] 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 + //SEG516 [230] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b8 jmp b5 - //SEG517 lock_current::@5 + //SEG517 play_lock_current::@5 b5: - //SEG518 [231] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG518 [231] (byte) play_lock_current::ypos2#1 ← (byte) play_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 - //SEG519 [232] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG519 [232] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG520 [233] 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 + //SEG520 [233] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 jmp breturn - //SEG521 lock_current::@return + //SEG521 play_lock_current::@return breturn: //SEG522 [234] return rts - //SEG523 lock_current::@7 + //SEG523 play_lock_current::@7 b7: - //SEG524 [235] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG524 [235] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG525 [221] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] + //SEG525 [221] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] b1_from_b7: - //SEG526 [221] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy - //SEG527 [221] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy - //SEG528 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy + //SEG526 [221] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy + //SEG527 [221] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy + //SEG528 [221] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG529 lock_current::@8 + //SEG529 play_lock_current::@8 b8: - //SEG530 [236] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG530 [236] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG531 [224] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] + //SEG531 [224] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] b2_from_b8: - //SEG532 [224] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy - //SEG533 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy - //SEG534 [224] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy + //SEG532 [224] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy + //SEG533 [224] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy + //SEG534 [224] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy jmp b2 } //SEG535 keyboard_event_pressed @@ -8938,49 +8933,49 @@ keyboard_matrix_read: { //SEG666 [303] return rts } -//SEG667 tables_init -tables_init: { +//SEG667 play_init +play_init: { .label _1 = $8b .label pli = $3d .label idx = $3f .label j = $3c - //SEG668 [305] phi from tables_init to tables_init::@1 [phi:tables_init->tables_init::@1] - b1_from_tables_init: - //SEG669 [305] phi (byte) tables_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#0] -- vbuz1=vbuc1 + //SEG668 [305] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + b1_from_play_init: + //SEG669 [305] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG670 [305] phi (byte*) tables_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:tables_init->tables_init::@1#1] -- pbuz1=pbuc1 + //SEG670 [305] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG671 [305] phi (byte) tables_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#2] -- vbuz1=vbuc1 + //SEG671 [305] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuz1=vbuc1 lda #0 sta j jmp b1 - //SEG672 [305] phi from tables_init::@1 to tables_init::@1 [phi:tables_init::@1->tables_init::@1] + //SEG672 [305] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] b1_from_b1: - //SEG673 [305] phi (byte) tables_init::idx#2 = (byte) tables_init::idx#1 [phi:tables_init::@1->tables_init::@1#0] -- register_copy - //SEG674 [305] phi (byte*) tables_init::pli#2 = (byte*) tables_init::pli#1 [phi:tables_init::@1->tables_init::@1#1] -- register_copy - //SEG675 [305] phi (byte) tables_init::j#2 = (byte) tables_init::j#1 [phi:tables_init::@1->tables_init::@1#2] -- register_copy + //SEG673 [305] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG674 [305] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG675 [305] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy jmp b1 - //SEG676 tables_init::@1 + //SEG676 play_init::@1 b1: - //SEG677 [306] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG677 [306] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda j asl sta _1 - //SEG678 [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG678 [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _1 lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG679 [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG679 [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda idx ldy j sta playfield_lines_idx,y - //SEG680 [309] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG680 [309] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -8988,25 +8983,25 @@ tables_init: { bcc !+ inc pli+1 !: - //SEG681 [310] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG681 [310] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG682 [311] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 -- vbuz1=_inc_vbuz1 + //SEG682 [311] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG683 [312] if((byte) tables_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 tables_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG683 [312] if((byte) play_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 play_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp b2 - //SEG684 tables_init::@2 + //SEG684 play_init::@2 b2: //SEG685 [313] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 lda #PLAYFIELD_COLS*PLAYFIELD_LINES sta playfield_lines_idx+PLAYFIELD_LINES jmp breturn - //SEG686 tables_init::@return + //SEG686 play_init::@return breturn: //SEG687 [314] return rts @@ -9029,10 +9024,10 @@ render_init: { //SEG692 [335] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 208 [phi:render_init->fill#0] -- vbuz1=vbuc1 lda #$d0 sta fill.val - //SEG693 [335] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:render_init->fill#1] -- pbuz1=pbuc1 - lda #fill#1] -- pbuz1=pbuc1 + lda #SCREEN + lda #>PLAYFIELD_SCREEN sta fill.addr+1 jsr fill //SEG694 [317] phi from render_init to render_init::@7 [phi:render_init->render_init::@7] @@ -9243,141 +9238,141 @@ sid_rnd_init: { 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 - playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 screen_lines: .fill 2*(PLAYFIELD_LINES+3), 0 -.pc = CHARSET "Inline" - .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9)) - .for (var c=0; c<16; c++) + PIECES: .word PIECE_T, PIECE_S, PIECE_Z, PIECE_J, PIECE_O, PIECE_I, PIECE_L + playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 +.pc = PLAYFIELD_CHARSET "Inline" + .var charset = LoadPicture("nes-charset.png", List().add($000000, $ffffff)) + .for (var c=0; c<32; c++) .for (var y=0;y<8; y++) - .byte charset.getMulticolorByte(c,y) + .byte charset.getSinglecolorByte(c,y) REGISTER UPLIFT POTENTIAL REGISTERS -Statement [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 [ current_piece_gfx#87 current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ( main:3 [ current_piece_gfx#87 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:110 [ spawn_current::$3 ] -Statement [18] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) [ current_piece_gfx#10 current_piece_color#15 current_piece#71 ] ( main:3 [ current_piece_gfx#10 current_piece_color#15 current_piece#71 ] ) always clobbers reg byte a -Statement [20] 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:3 [ 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 ] +Statement [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#17 [ current_piece_gfx#87 current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 ] ( main:3 [ current_piece_gfx#87 current_piece_gfx#17 current_piece_color#13 play_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#21 current_piece_color#16 current_piece_color#11 current_piece_color#13 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:110 [ play_spawn_current::$3 ] +Statement [18] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_piece_gfx#17 current_piece_color#13 current_piece#70 ] ( main:3 [ current_piece_gfx#17 current_piece_color#13 current_piece#70 ] ) always clobbers reg byte a +Statement [20] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 keyboard_events_size#19 current_movedown_counter#12 ] ( main:3 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 keyboard_events_size#19 current_movedown_counter#12 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:59 [ 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 [21] 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:3 [ 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 [32] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 [ 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:3 [ 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:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] +Statement [21] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 keyboard_events_size#19 current_movedown_counter#12 ] ( main:3 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 keyboard_events_size#19 current_movedown_counter#12 ] ) always clobbers reg byte a +Statement [32] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 [ current_piece#10 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#14 current_xpos#16 ] ( main:3 [ current_piece#10 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#14 current_xpos#16 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:75 [ main::key_event#0 ] -Statement [37] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 [ 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:3 [ 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 [42] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 [ 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:3 [ 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 [48] (byte*~) current_piece_gfx#88 ← (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#71 current_xpos#96 current_piece_gfx#88 ] ( main:3 [ 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#71 current_xpos#96 current_piece_gfx#88 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ current_ypos#22 current_ypos#71 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 ] -Statement [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_xpos#63 current_piece_gfx#64 current_piece_color#67 render_current::ypos2#0 ] ( main:3::render_current:17 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#63 current_piece_gfx#64 current_piece_color#67 render_current::ypos2#0 ] main:3::render_current:50 [ 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#63 current_piece_gfx#64 current_piece_color#67 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#67 current_piece_color#75 current_piece_color#76 ] -Statement [56] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) [ current_xpos#63 current_piece_gfx#64 current_piece_color#67 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ( main:3::render_current:17 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#63 current_piece_gfx#64 current_piece_color#67 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] main:3::render_current:50 [ 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#63 current_piece_gfx#64 current_piece_color#67 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ) always clobbers reg byte a +Statement [37] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 [ current_piece#10 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#14 ] ( main:3 [ current_piece#10 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#14 ] ) always clobbers reg byte a +Statement [42] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ( main:3 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ) always clobbers reg byte a +Statement [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#15 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 current_ypos#71 current_xpos#96 current_piece_gfx#88 ] ( main:3 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 current_ypos#71 current_xpos#96 current_piece_gfx#88 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ current_ypos#10 current_ypos#71 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 ] +Statement [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_xpos#48 current_piece_gfx#53 current_piece_color#62 render_current::ypos2#0 ] ( main:3::render_current:17 [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_color#62 render_current::ypos2#0 ] main:3::render_current:50 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_color#62 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#62 current_piece_color#75 current_piece_color#76 ] +Statement [56] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) [ current_xpos#48 current_piece_gfx#53 current_piece_color#62 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ( main:3::render_current:17 [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_color#62 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] main:3::render_current:50 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_color#62 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 [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) [ current_xpos#63 current_piece_gfx#64 current_piece_color#67 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:3::render_current:17 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#63 current_piece_gfx#64 current_piece_color#67 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:3::render_current:50 [ 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#63 current_piece_gfx#64 current_piece_color#67 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 [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#2) [ current_xpos#48 current_piece_gfx#53 current_piece_color#62 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:3::render_current:17 [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_color#62 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:3::render_current:50 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_color#62 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 [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#67 [ current_xpos#63 current_piece_gfx#64 current_piece_color#67 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:3::render_current:17 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#63 current_piece_gfx#64 current_piece_color#67 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:3::render_current:50 [ 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#63 current_piece_gfx#64 current_piece_color#67 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 [74] (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:3::render_playfield:14 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] main:3::render_playfield:45 [ 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 [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#62 [ current_xpos#48 current_piece_gfx#53 current_piece_color#62 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:3::render_current:17 [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_color#62 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:3::render_current:50 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_color#62 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 [74] (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:3::render_playfield:14 [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] main:3::render_playfield:45 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 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 [75] (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:3::render_playfield:14 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] main:3::render_playfield:45 [ 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 [77] *((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:3::render_playfield:14 [ 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:3::render_playfield:45 [ 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:110 [ spawn_current::$3 ] +Statement [75] (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:3::render_playfield:14 [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] main:3::render_playfield:45 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ) always clobbers reg byte a +Statement [77] *((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:3::render_playfield:14 [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] main:3::render_playfield:45 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 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#21 current_piece_color#16 current_piece_color#11 current_piece_color#13 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:110 [ play_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_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:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:59 [ 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 [89] (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:3::play_move_rotate:39 [ 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 y as potential for zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] +Statement [89] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$2 ] ( main:3::play_move_rotate:39 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:83 [ main::render#2 ] -Statement [90] (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:3::play_move_rotate:39 [ 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 [95] (byte*~) current_piece#75 ← (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#75 ] ( main:3::play_move_rotate:39 [ 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#75 ] ) always clobbers reg byte a +Statement [90] (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#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#2 ] ( main:3::play_move_rotate:39 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#2 ] ) always clobbers reg byte a +Statement [95] (byte*~) current_piece#74 ← (byte*) current_piece#10 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#74 ] ( main:3::play_move_rotate:39 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#74 ] ) 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 [101] (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:3::play_move_rotate:39 [ 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 [102] (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:3::play_move_rotate:39 [ 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 [103] (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:3::play_move_rotate:39 [ 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 [105] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 [ collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] ( main:3::play_move_rotate:39::collision:96 [ 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:3::play_move_leftright:34::collision:134 [ 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:3::play_move_leftright:34::collision:145 [ 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:3::play_move_down:29::collision:169 [ 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:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +Statement [101] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#4 current_piece_gfx#4 ] ( main:3::play_move_rotate:39 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#4 current_piece_gfx#4 ] ) always clobbers reg byte a +Statement [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$4 ] ( main:3::play_move_rotate:39 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$4 ] ) always clobbers reg byte a +Statement [103] (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#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#1 ] ( main:3::play_move_rotate:39 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#1 ] ) always clobbers reg byte a +Statement [105] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 [ play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ( main:3::play_move_rotate:39::play_collision:96 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:3::play_move_leftright:34::play_collision:134 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:3::play_move_leftright:34::play_collision:145 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:3::play_move_down:29::play_collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:79 [ main::render#1 ] -Statement [106] (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:3::play_move_rotate:39::collision:96 [ 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:3::play_move_leftright:34::collision:134 [ 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:3::play_move_leftright:34::collision:145 [ 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:3::play_move_down:29::collision:169 [ 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 [108] (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:3::play_move_rotate:39::collision:96 [ 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:3::play_move_leftright:34::collision:134 [ 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:3::play_move_leftright:34::collision:145 [ 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:3::play_move_down:29::collision:169 [ 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 [112] 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:3::play_move_rotate:39::collision:96 [ 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:3::play_move_leftright:34::collision:134 [ 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:3::play_move_leftright:34::collision:145 [ 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:3::play_move_down:29::collision:169 [ 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:100 [ collision::i#1 ] -Statement [116] (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:3::play_move_rotate:39::collision:96 [ 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:3::play_move_leftright:34::collision:134 [ 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:3::play_move_leftright:34::collision:145 [ 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:3::play_move_down:29::collision:169 [ 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 [119] 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:3::play_move_rotate:39::collision:96 [ 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:3::play_move_leftright:34::collision:134 [ 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:3::play_move_leftright:34::collision:145 [ 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:3::play_move_down:29::collision:169 [ 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 [133] (byte*~) current_piece#74 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_orientation#18 current_piece#74 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ( main:3::play_move_leftright:34 [ 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#74 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ) always clobbers reg byte a -Statement [144] (byte*~) current_piece#73 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_orientation#18 current_piece#73 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ( main:3::play_move_leftright:34 [ 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#73 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ) always clobbers reg byte a -Statement [168] (byte*~) current_piece#72 ← (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#72 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ( main:3::play_move_down:29 [ 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#72 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ) always clobbers reg byte a -Statement [179] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) [ current_piece_gfx#10 current_piece_color#15 current_piece#76 ] ( main:3::play_move_down:29 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_piece_color#15 current_piece#76 ] ) always clobbers reg byte a -Statement [187] (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:3::spawn_current:12 [ spawn_current::$3 spawn_current::piece_idx#2 ] main:3::play_move_down:29::spawn_current:178 [ 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 [188] (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:3::spawn_current:12 [ current_piece_gfx#10 spawn_current::$3 spawn_current::piece_idx#2 ] main:3::play_move_down:29::spawn_current:178 [ 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 [189] (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:3::spawn_current:12 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] main:3::play_move_down:29::spawn_current:178 [ 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 [195] (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:3::spawn_current:12 [ spawn_current::piece_idx#1 ] main:3::play_move_down:29::spawn_current:178 [ keyboard_events_size#16 main::key_event#0 spawn_current::piece_idx#1 ] ) always clobbers reg byte a -Statement [210] (byte) remove_lines::w#2 ← (byte) remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ remove_lines::y#8 remove_lines::r#1 remove_lines::w#2 ] ( main:3::play_move_down:29::remove_lines:176 [ keyboard_events_size#16 main::key_event#0 remove_lines::y#8 remove_lines::r#1 remove_lines::w#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:43 [ remove_lines::y#8 remove_lines::y#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ remove_lines::r#2 remove_lines::r#3 remove_lines::r#1 ] -Statement [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ remove_lines::w#6 ] ( main:3::play_move_down:29::remove_lines:176 [ keyboard_events_size#16 main::key_event#0 remove_lines::w#6 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ remove_lines::w#6 remove_lines::w#4 remove_lines::w#12 remove_lines::w#11 remove_lines::w#1 remove_lines::w#2 remove_lines::w#3 ] -Statement [220] (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:3::play_move_down:29::lock_current:174 [ 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 [222] (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:3::play_move_down:29::lock_current:174 [ 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:48 [ 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:50 [ 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:49 [ lock_current::l#6 lock_current::l#1 ] -Statement [226] 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:3::play_move_down:29::lock_current:174 [ 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:51 [ 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:52 [ lock_current::c#2 lock_current::c#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:117 [ lock_current::i#1 ] -Statement [227] *((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:3::play_move_down:29::lock_current:174 [ 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 [238] (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:3::play_move_down:29::keyboard_event_pressed:154 [ 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:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ 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:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ 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_modifiers#11 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ 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_modifiers#12 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ 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_modifiers#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Statement [106] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ( main:3::play_move_rotate:39::play_collision:96 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:3::play_move_leftright:34::play_collision:134 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:3::play_move_leftright:34::play_collision:145 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:3::play_move_down:29::play_collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a +Statement [108] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:3::play_move_rotate:39::play_collision:96 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:3::play_move_leftright:34::play_collision:134 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:3::play_move_leftright:34::play_collision:145 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:3::play_move_down:29::play_collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:28 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ play_collision::l#6 play_collision::l#1 ] +Statement [112] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:3::play_move_rotate:39::play_collision:96 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:3::play_move_leftright:34::play_collision:134 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:3::play_move_leftright:34::play_collision:145 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:3::play_move_down:29::play_collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ play_collision::c#2 play_collision::c#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:100 [ play_collision::i#1 ] +Statement [116] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ( main:3::play_move_rotate:39::play_collision:96 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:3::play_move_leftright:34::play_collision:134 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:3::play_move_leftright:34::play_collision:145 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:3::play_move_down:29::play_collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ) always clobbers reg byte a +Statement [119] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:3::play_move_rotate:39::play_collision:96 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:3::play_move_leftright:34::play_collision:134 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:3::play_move_leftright:34::play_collision:145 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:3::play_move_down:29::play_collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [133] (byte*~) current_piece#73 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#14 current_orientation#14 current_piece#73 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#16 ] ( main:3::play_move_leftright:34 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_piece#73 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#16 ] ) always clobbers reg byte a +Statement [144] (byte*~) current_piece#72 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#14 current_orientation#14 current_piece#72 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#16 ] ( main:3::play_move_leftright:34 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_piece#72 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#16 ] ) always clobbers reg byte a +Statement [168] (byte*~) current_piece#71 ← (byte*) current_piece#16 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_piece#71 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:3::play_move_down:29 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_piece#71 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a +Statement [179] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_piece_gfx#17 current_piece_color#13 current_piece#75 ] ( main:3::play_move_down:29 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 current_piece_color#13 current_piece#75 ] ) always clobbers reg byte a +Statement [187] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:3::play_spawn_current:12 [ play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:3::play_move_down:29::play_spawn_current:178 [ keyboard_events_size#16 main::key_event#0 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +Statement [188] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:3::play_spawn_current:12 [ current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:3::play_move_down:29::play_spawn_current:178 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [189] (byte) current_piece_color#13 ← *((const byte[]) PIECES_COLORS#0 + (byte) play_spawn_current::piece_idx#2) [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 ] ( main:3::play_spawn_current:12 [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 ] main:3::play_move_down:29::play_spawn_current:178 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 ] ) always clobbers reg byte a +Statement [195] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ play_spawn_current::piece_idx#1 ] ( main:3::play_spawn_current:12 [ play_spawn_current::piece_idx#1 ] main:3::play_move_down:29::play_spawn_current:178 [ keyboard_events_size#16 main::key_event#0 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a +Statement [210] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:3::play_move_down:29::play_remove_lines:176 [ keyboard_events_size#16 main::key_event#0 play_remove_lines::y#8 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:43 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] +Statement [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ play_remove_lines::w#6 ] ( main:3::play_move_down:29::play_remove_lines:176 [ keyboard_events_size#16 main::key_event#0 play_remove_lines::w#6 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] +Statement [220] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#10 current_xpos#11 current_piece_color#16 play_lock_current::ypos2#0 ] ( main:3::play_move_down:29::play_lock_current:174 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_color#16 play_lock_current::ypos2#0 ] ) always clobbers reg byte a +Statement [222] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_gfx#10 current_xpos#11 current_piece_color#16 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:3::play_move_down:29::play_lock_current:174 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_color#16 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ play_lock_current::l#6 play_lock_current::l#1 ] +Statement [226] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_gfx#10 current_xpos#11 current_piece_color#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:3::play_move_down:29::play_lock_current:174 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_color#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ play_lock_current::c#2 play_lock_current::c#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:117 [ play_lock_current::i#1 ] +Statement [227] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_color#16 [ current_piece_gfx#10 current_xpos#11 current_piece_color#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:3::play_move_down:29::play_lock_current:174 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_color#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [238] (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:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#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:53 [ keyboard_event_pressed::keycode#5 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] -Statement [240] (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:3::play_move_down:29::keyboard_event_pressed:154 [ 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:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ 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:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ 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_modifiers#11 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ 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_modifiers#12 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ 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_modifiers#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Statement [240] (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:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#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:119 [ keyboard_event_pressed::row_bits#0 ] -Statement [241] (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:3::play_move_down:29::keyboard_event_pressed:154 [ 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:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ 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:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ 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_modifiers#11 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ 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_modifiers#12 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ 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_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [255] (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:3::keyboard_event_scan:23 [ 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 [241] (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:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [255] (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:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 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:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Statement [270] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#13 keyboard_modifiers#3 ] ( main:3::keyboard_event_scan:23 [ 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_modifiers#3 ] ) always clobbers reg byte a -Statement [276] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#13 keyboard_modifiers#4 ] ( main:3::keyboard_event_scan:23 [ 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_modifiers#4 ] ) always clobbers reg byte a -Statement [282] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:3::keyboard_event_scan:23 [ 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 ] ) always clobbers reg byte a -Statement [285] (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:3::keyboard_event_scan:23 [ 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 [270] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#13 keyboard_modifiers#3 ] ( main:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#3 ] ) always clobbers reg byte a +Statement [276] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#13 keyboard_modifiers#4 ] ( main:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#4 ] ) always clobbers reg byte a +Statement [282] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 ] ) always clobbers reg byte a +Statement [285] (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:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 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:124 [ keyboard_event_scan::row_scan#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:58 [ 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 [286] (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:3::keyboard_event_scan:23 [ 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 [289] (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:3::keyboard_event_scan:23 [ 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 [291] *((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:3::keyboard_event_scan:23 [ 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 [297] *((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:3::keyboard_event_scan:23 [ 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 [298] (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:3::keyboard_event_scan:23 [ 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 [301] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:3::keyboard_event_scan:23::keyboard_matrix_read:251 [ 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 [302] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:3::keyboard_event_scan:23::keyboard_matrix_read:251 [ 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 [306] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 tables_init::$1 ] ( main:3::tables_init:10 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 tables_init::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ tables_init::j#2 tables_init::j#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:63 [ tables_init::idx#2 tables_init::idx#1 ] -Statement [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ( main:3::tables_init:10 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ) always clobbers reg byte a -Statement [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ( main:3::tables_init:10 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ) always clobbers reg byte a -Statement [309] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ tables_init::j#2 tables_init::idx#2 tables_init::pli#1 ] ( main:3::tables_init:10 [ tables_init::j#2 tables_init::idx#2 tables_init::pli#1 ] ) always clobbers reg byte a -Statement [310] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ tables_init::j#2 tables_init::pli#1 tables_init::idx#1 ] ( main:3::tables_init:10 [ tables_init::j#2 tables_init::pli#1 tables_init::idx#1 ] ) always clobbers reg byte a -Statement [313] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:3::tables_init:10 [ ] ) always clobbers reg byte a +Statement [286] (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:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 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 [289] (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:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 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 [291] *((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:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 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 [297] *((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:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [298] (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:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 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 [301] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:3::keyboard_event_scan:23::keyboard_matrix_read:251 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a +Statement [302] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:3::keyboard_event_scan:23::keyboard_matrix_read:251 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 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 [306] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ( main:3::play_init:10 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ play_init::j#2 play_init::j#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] +Statement [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:3::play_init:10 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:3::play_init:10 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [309] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:3::play_init:10 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a +Statement [310] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:3::play_init:10 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a +Statement [313] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:3::play_init:10 [ ] ) always clobbers reg byte a Statement [315] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 [ ] ( main:3::render_init:8 [ ] ) always clobbers reg byte a Statement [320] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li#2 render_init::$5 ] ( main:3::render_init:8 [ render_init::i#2 render_init::li#2 render_init::$5 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:64 [ render_init::i#2 render_init::i#1 ] @@ -9397,69 +9392,69 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:71 [ f Statement [340] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:3::render_init:8::fill:316 [ fill::val#3 fill::end#0 fill::addr#1 ] main:3::render_init:8::fill:318 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a Statement [342] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:3::sid_rnd_init:6 [ ] ) always clobbers reg byte a Statement [343] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:3::sid_rnd_init:6 [ ] ) always clobbers reg byte a -Statement [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 [ current_piece_gfx#87 current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ( main:3 [ current_piece_gfx#87 current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ) always clobbers reg byte a -Statement [18] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) [ current_piece_gfx#10 current_piece_color#15 current_piece#71 ] ( main:3 [ current_piece_gfx#10 current_piece_color#15 current_piece#71 ] ) always clobbers reg byte a -Statement [20] 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:3 [ 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 [21] 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:3 [ 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 [32] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 [ 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:3 [ 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 [37] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 [ 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:3 [ 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 [42] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 [ 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:3 [ 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 [48] (byte*~) current_piece_gfx#88 ← (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#71 current_xpos#96 current_piece_gfx#88 ] ( main:3 [ 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#71 current_xpos#96 current_piece_gfx#88 ] ) always clobbers reg byte a -Statement [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_xpos#63 current_piece_gfx#64 current_piece_color#67 render_current::ypos2#0 ] ( main:3::render_current:17 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#63 current_piece_gfx#64 current_piece_color#67 render_current::ypos2#0 ] main:3::render_current:50 [ 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#63 current_piece_gfx#64 current_piece_color#67 render_current::ypos2#0 ] ) always clobbers reg byte a -Statement [56] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) [ current_xpos#63 current_piece_gfx#64 current_piece_color#67 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ( main:3::render_current:17 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#63 current_piece_gfx#64 current_piece_color#67 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] main:3::render_current:50 [ 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#63 current_piece_gfx#64 current_piece_color#67 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ) always clobbers reg byte a -Statement [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) [ current_xpos#63 current_piece_gfx#64 current_piece_color#67 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:3::render_current:17 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#63 current_piece_gfx#64 current_piece_color#67 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:3::render_current:50 [ 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#63 current_piece_gfx#64 current_piece_color#67 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 [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#67 [ current_xpos#63 current_piece_gfx#64 current_piece_color#67 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:3::render_current:17 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#63 current_piece_gfx#64 current_piece_color#67 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:3::render_current:50 [ 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#63 current_piece_gfx#64 current_piece_color#67 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 [74] (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:3::render_playfield:14 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] main:3::render_playfield:45 [ 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 [75] (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:3::render_playfield:14 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] main:3::render_playfield:45 [ 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 [77] *((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:3::render_playfield:14 [ 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:3::render_playfield:45 [ 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 [89] (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:3::play_move_rotate:39 [ 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 [90] (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:3::play_move_rotate:39 [ 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 [95] (byte*~) current_piece#75 ← (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#75 ] ( main:3::play_move_rotate:39 [ 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#75 ] ) always clobbers reg byte a -Statement [101] (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:3::play_move_rotate:39 [ 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 [102] (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:3::play_move_rotate:39 [ 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 [103] (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:3::play_move_rotate:39 [ 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 [105] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 [ collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] ( main:3::play_move_rotate:39::collision:96 [ 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:3::play_move_leftright:34::collision:134 [ 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:3::play_move_leftright:34::collision:145 [ 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:3::play_move_down:29::collision:169 [ 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 [106] (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:3::play_move_rotate:39::collision:96 [ 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:3::play_move_leftright:34::collision:134 [ 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:3::play_move_leftright:34::collision:145 [ 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:3::play_move_down:29::collision:169 [ 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 [108] (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:3::play_move_rotate:39::collision:96 [ 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:3::play_move_leftright:34::collision:134 [ 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:3::play_move_leftright:34::collision:145 [ 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:3::play_move_down:29::collision:169 [ 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 [112] 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:3::play_move_rotate:39::collision:96 [ 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:3::play_move_leftright:34::collision:134 [ 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:3::play_move_leftright:34::collision:145 [ 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:3::play_move_down:29::collision:169 [ 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 [116] (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:3::play_move_rotate:39::collision:96 [ 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:3::play_move_leftright:34::collision:134 [ 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:3::play_move_leftright:34::collision:145 [ 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:3::play_move_down:29::collision:169 [ 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 [119] 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:3::play_move_rotate:39::collision:96 [ 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:3::play_move_leftright:34::collision:134 [ 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:3::play_move_leftright:34::collision:145 [ 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:3::play_move_down:29::collision:169 [ 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 [133] (byte*~) current_piece#74 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_orientation#18 current_piece#74 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ( main:3::play_move_leftright:34 [ 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#74 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ) always clobbers reg byte a -Statement [144] (byte*~) current_piece#73 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_orientation#18 current_piece#73 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ( main:3::play_move_leftright:34 [ 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#73 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ) always clobbers reg byte a -Statement [168] (byte*~) current_piece#72 ← (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#72 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ( main:3::play_move_down:29 [ 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#72 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ) always clobbers reg byte a -Statement [179] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) [ current_piece_gfx#10 current_piece_color#15 current_piece#76 ] ( main:3::play_move_down:29 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_piece_color#15 current_piece#76 ] ) always clobbers reg byte a -Statement [187] (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:3::spawn_current:12 [ spawn_current::$3 spawn_current::piece_idx#2 ] main:3::play_move_down:29::spawn_current:178 [ keyboard_events_size#16 main::key_event#0 spawn_current::$3 spawn_current::piece_idx#2 ] ) always clobbers reg byte a -Statement [188] (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:3::spawn_current:12 [ current_piece_gfx#10 spawn_current::$3 spawn_current::piece_idx#2 ] main:3::play_move_down:29::spawn_current:178 [ 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 [189] (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:3::spawn_current:12 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] main:3::play_move_down:29::spawn_current:178 [ 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 [195] (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:3::spawn_current:12 [ spawn_current::piece_idx#1 ] main:3::play_move_down:29::spawn_current:178 [ keyboard_events_size#16 main::key_event#0 spawn_current::piece_idx#1 ] ) always clobbers reg byte a -Statement [210] (byte) remove_lines::w#2 ← (byte) remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ remove_lines::y#8 remove_lines::r#1 remove_lines::w#2 ] ( main:3::play_move_down:29::remove_lines:176 [ keyboard_events_size#16 main::key_event#0 remove_lines::y#8 remove_lines::r#1 remove_lines::w#2 ] ) always clobbers reg byte a -Statement [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ remove_lines::w#6 ] ( main:3::play_move_down:29::remove_lines:176 [ keyboard_events_size#16 main::key_event#0 remove_lines::w#6 ] ) always clobbers reg byte a -Statement [220] (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:3::play_move_down:29::lock_current:174 [ 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 [222] (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:3::play_move_down:29::lock_current:174 [ 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 [226] 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:3::play_move_down:29::lock_current:174 [ 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 [227] *((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:3::play_move_down:29::lock_current:174 [ 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 [238] (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:3::play_move_down:29::keyboard_event_pressed:154 [ 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:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ 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:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ 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_modifiers#11 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ 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_modifiers#12 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ 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_modifiers#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a -Statement [240] (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:3::play_move_down:29::keyboard_event_pressed:154 [ 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:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ 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:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ 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_modifiers#11 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ 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_modifiers#12 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ 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_modifiers#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Statement [241] (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:3::play_move_down:29::keyboard_event_pressed:154 [ 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:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ 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:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ 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_modifiers#11 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ 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_modifiers#12 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ 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_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [254] 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:3::keyboard_event_scan:23 [ 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 [255] (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:3::keyboard_event_scan:23 [ 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 [270] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#13 keyboard_modifiers#3 ] ( main:3::keyboard_event_scan:23 [ 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_modifiers#3 ] ) always clobbers reg byte a -Statement [276] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#13 keyboard_modifiers#4 ] ( main:3::keyboard_event_scan:23 [ 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_modifiers#4 ] ) always clobbers reg byte a -Statement [282] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:3::keyboard_event_scan:23 [ 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 ] ) always clobbers reg byte a -Statement [285] (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:3::keyboard_event_scan:23 [ 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 [286] (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:3::keyboard_event_scan:23 [ 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 [289] (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:3::keyboard_event_scan:23 [ 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 [291] *((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:3::keyboard_event_scan:23 [ 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 [297] *((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:3::keyboard_event_scan:23 [ 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 [298] (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:3::keyboard_event_scan:23 [ 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 [301] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:3::keyboard_event_scan:23::keyboard_matrix_read:251 [ 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 [302] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:3::keyboard_event_scan:23::keyboard_matrix_read:251 [ 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 [306] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 tables_init::$1 ] ( main:3::tables_init:10 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 tables_init::$1 ] ) always clobbers reg byte a -Statement [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ( main:3::tables_init:10 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ) always clobbers reg byte a -Statement [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ( main:3::tables_init:10 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ) always clobbers reg byte a -Statement [309] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ tables_init::j#2 tables_init::idx#2 tables_init::pli#1 ] ( main:3::tables_init:10 [ tables_init::j#2 tables_init::idx#2 tables_init::pli#1 ] ) always clobbers reg byte a -Statement [310] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ tables_init::j#2 tables_init::pli#1 tables_init::idx#1 ] ( main:3::tables_init:10 [ tables_init::j#2 tables_init::pli#1 tables_init::idx#1 ] ) always clobbers reg byte a -Statement [313] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:3::tables_init:10 [ ] ) always clobbers reg byte a +Statement [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#17 [ current_piece_gfx#87 current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 ] ( main:3 [ current_piece_gfx#87 current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 ] ) always clobbers reg byte a +Statement [18] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_piece_gfx#17 current_piece_color#13 current_piece#70 ] ( main:3 [ current_piece_gfx#17 current_piece_color#13 current_piece#70 ] ) always clobbers reg byte a +Statement [20] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 keyboard_events_size#19 current_movedown_counter#12 ] ( main:3 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 keyboard_events_size#19 current_movedown_counter#12 ] ) always clobbers reg byte a +Statement [21] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 keyboard_events_size#19 current_movedown_counter#12 ] ( main:3 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 keyboard_events_size#19 current_movedown_counter#12 ] ) always clobbers reg byte a +Statement [32] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 [ current_piece#10 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#14 current_xpos#16 ] ( main:3 [ current_piece#10 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_orientation#14 current_piece_gfx#14 current_xpos#16 ] ) always clobbers reg byte a +Statement [37] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 [ current_piece#10 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#14 ] ( main:3 [ current_piece#10 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#2 current_orientation#14 current_piece_gfx#14 ] ) always clobbers reg byte a +Statement [42] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ( main:3 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#3 ] ) always clobbers reg byte a +Statement [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#15 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 current_ypos#71 current_xpos#96 current_piece_gfx#88 ] ( main:3 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 current_ypos#71 current_xpos#96 current_piece_gfx#88 ] ) always clobbers reg byte a +Statement [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_xpos#48 current_piece_gfx#53 current_piece_color#62 render_current::ypos2#0 ] ( main:3::render_current:17 [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_color#62 render_current::ypos2#0 ] main:3::render_current:50 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_color#62 render_current::ypos2#0 ] ) always clobbers reg byte a +Statement [56] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) [ current_xpos#48 current_piece_gfx#53 current_piece_color#62 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ( main:3::render_current:17 [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_color#62 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] main:3::render_current:50 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_color#62 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ) always clobbers reg byte a +Statement [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#2) [ current_xpos#48 current_piece_gfx#53 current_piece_color#62 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:3::render_current:17 [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_color#62 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:3::render_current:50 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_color#62 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 [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#62 [ current_xpos#48 current_piece_gfx#53 current_piece_color#62 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:3::render_current:17 [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 current_xpos#48 current_piece_gfx#53 current_piece_color#62 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:3::render_current:50 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 current_xpos#48 current_piece_gfx#53 current_piece_color#62 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 [74] (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:3::render_playfield:14 [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] main:3::render_playfield:45 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ) always clobbers reg byte a +Statement [75] (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:3::render_playfield:14 [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] main:3::render_playfield:45 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ) always clobbers reg byte a +Statement [77] *((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:3::render_playfield:14 [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] main:3::render_playfield:45 [ current_piece#10 current_orientation#19 current_piece_gfx#15 current_xpos#20 current_ypos#14 current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 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 [89] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$2 ] ( main:3::play_move_rotate:39 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$2 ] ) always clobbers reg byte a +Statement [90] (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#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#2 ] ( main:3::play_move_rotate:39 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#2 ] ) always clobbers reg byte a +Statement [95] (byte*~) current_piece#74 ← (byte*) current_piece#10 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#74 ] ( main:3::play_move_rotate:39 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#3 play_collision::ypos#3 play_collision::orientation#3 current_piece#74 ] ) always clobbers reg byte a +Statement [101] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#4 current_piece_gfx#4 ] ( main:3::play_move_rotate:39 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#4 current_piece_gfx#4 ] ) always clobbers reg byte a +Statement [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$4 ] ( main:3::play_move_rotate:39 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::$4 ] ) always clobbers reg byte a +Statement [103] (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#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#1 ] ( main:3::play_move_rotate:39 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#1 ] ) always clobbers reg byte a +Statement [105] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 [ play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ( main:3::play_move_rotate:39::play_collision:96 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:3::play_move_leftright:34::play_collision:134 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:3::play_move_leftright:34::play_collision:145 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] main:3::play_move_down:29::play_collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 play_collision::ypos#4 play_collision::xpos#5 play_collision::piece_gfx#0 ] ) always clobbers reg byte a +Statement [106] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ( main:3::play_move_rotate:39::play_collision:96 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:3::play_move_leftright:34::play_collision:134 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:3::play_move_leftright:34::play_collision:145 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] main:3::play_move_down:29::play_collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#0 ] ) always clobbers reg byte a +Statement [108] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_collision::ypos2#2) [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ( main:3::play_move_rotate:39::play_collision:96 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:3::play_move_leftright:34::play_collision:134 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:3::play_move_leftright:34::play_collision:145 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] main:3::play_move_down:29::play_collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::i#3 play_collision::l#6 play_collision::playfield_line#0 ] ) always clobbers reg byte a +Statement [112] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:3::play_move_rotate:39::play_collision:96 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:3::play_move_leftright:34::play_collision:134 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:3::play_move_leftright:34::play_collision:145 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:3::play_move_down:29::play_collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [116] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ( main:3::play_move_rotate:39::play_collision:96 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:3::play_move_leftright:34::play_collision:134 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:3::play_move_leftright:34::play_collision:145 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] main:3::play_move_down:29::play_collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 play_collision::$7 ] ) always clobbers reg byte a +Statement [119] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 [ play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ( main:3::play_move_rotate:39::play_collision:96 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::render#2 current_piece#10 current_xpos#20 current_ypos#14 current_orientation#14 current_piece_gfx#14 play_move_rotate::orientation#3 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:3::play_move_leftright:34::play_collision:134 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:3::play_move_leftright:34::play_collision:145 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_xpos#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] main:3::play_move_down:29::play_collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 play_collision::xpos#5 play_collision::piece_gfx#0 play_collision::ypos2#2 play_collision::l#6 play_collision::playfield_line#0 play_collision::col#2 play_collision::c#2 play_collision::i#1 ] ) always clobbers reg byte a +Statement [133] (byte*~) current_piece#73 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#14 current_orientation#14 current_piece#73 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#16 ] ( main:3::play_move_leftright:34 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_piece#73 play_collision::orientation#2 play_collision::ypos#2 play_collision::xpos#2 current_xpos#16 ] ) always clobbers reg byte a +Statement [144] (byte*~) current_piece#72 ← (byte*) current_piece#10 [ current_piece#10 current_ypos#14 current_orientation#14 current_piece#72 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#16 ] ( main:3::play_move_leftright:34 [ current_piece_color#11 keyboard_events_size#16 current_movedown_counter#10 main::key_event#0 main::render#1 current_piece_gfx#14 current_piece#10 current_ypos#14 current_orientation#14 current_piece#72 play_collision::orientation#1 play_collision::ypos#1 play_collision::xpos#1 current_xpos#16 ] ) always clobbers reg byte a +Statement [168] (byte*~) current_piece#71 ← (byte*) current_piece#16 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_piece#71 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ( main:3::play_move_down:29 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_piece#71 play_collision::orientation#0 play_collision::ypos#0 play_collision::xpos#0 ] ) always clobbers reg byte a +Statement [179] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) [ current_piece_gfx#17 current_piece_color#13 current_piece#75 ] ( main:3::play_move_down:29 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 current_piece_color#13 current_piece#75 ] ) always clobbers reg byte a +Statement [187] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:3::play_spawn_current:12 [ play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:3::play_move_down:29::play_spawn_current:178 [ keyboard_events_size#16 main::key_event#0 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [188] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ( main:3::play_spawn_current:12 [ current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] main:3::play_move_down:29::play_spawn_current:178 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 play_spawn_current::$3 play_spawn_current::piece_idx#2 ] ) always clobbers reg byte a +Statement [189] (byte) current_piece_color#13 ← *((const byte[]) PIECES_COLORS#0 + (byte) play_spawn_current::piece_idx#2) [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 ] ( main:3::play_spawn_current:12 [ current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 ] main:3::play_move_down:29::play_spawn_current:178 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#17 current_piece_color#13 play_spawn_current::$3 ] ) always clobbers reg byte a +Statement [195] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ play_spawn_current::piece_idx#1 ] ( main:3::play_spawn_current:12 [ play_spawn_current::piece_idx#1 ] main:3::play_move_down:29::play_spawn_current:178 [ keyboard_events_size#16 main::key_event#0 play_spawn_current::piece_idx#1 ] ) always clobbers reg byte a +Statement [210] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 [ play_remove_lines::y#8 play_remove_lines::r#1 play_remove_lines::w#2 ] ( main:3::play_move_down:29::play_remove_lines:176 [ keyboard_events_size#16 main::key_event#0 play_remove_lines::y#8 play_remove_lines::r#1 play_remove_lines::w#2 ] ) always clobbers reg byte a +Statement [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ play_remove_lines::w#6 ] ( main:3::play_move_down:29::play_remove_lines:176 [ keyboard_events_size#16 main::key_event#0 play_remove_lines::w#6 ] ) always clobbers reg byte a +Statement [220] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#10 current_xpos#11 current_piece_color#16 play_lock_current::ypos2#0 ] ( main:3::play_move_down:29::play_lock_current:174 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_color#16 play_lock_current::ypos2#0 ] ) always clobbers reg byte a +Statement [222] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_lock_current::ypos2#2) [ current_piece_gfx#10 current_xpos#11 current_piece_color#16 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ( main:3::play_move_down:29::play_lock_current:174 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_color#16 play_lock_current::ypos2#2 play_lock_current::i#3 play_lock_current::l#6 play_lock_current::playfield_line#0 ] ) always clobbers reg byte a +Statement [226] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 [ current_piece_gfx#10 current_xpos#11 current_piece_color#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:3::play_move_down:29::play_lock_current:174 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_color#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [227] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_color#16 [ current_piece_gfx#10 current_xpos#11 current_piece_color#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ( main:3::play_move_down:29::play_lock_current:174 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_xpos#11 current_piece_color#16 play_lock_current::ypos2#2 play_lock_current::l#6 play_lock_current::playfield_line#0 play_lock_current::col#2 play_lock_current::c#2 play_lock_current::i#1 ] ) always clobbers reg byte a +Statement [238] (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:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Statement [240] (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:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Statement [241] (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:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#1 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [254] 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:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 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 [255] (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:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Statement [270] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#13 keyboard_modifiers#3 ] ( main:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#3 ] ) always clobbers reg byte a +Statement [276] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#13 keyboard_modifiers#4 ] ( main:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 keyboard_modifiers#4 ] ) always clobbers reg byte a +Statement [282] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_events_size#13 ] ) always clobbers reg byte a +Statement [285] (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:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 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 [286] (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:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 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 [289] (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:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 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 [291] *((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:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 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 [297] *((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:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [298] (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:3::keyboard_event_scan:23 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 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 [301] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:3::keyboard_event_scan:23::keyboard_matrix_read:251 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a +Statement [302] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:3::keyboard_event_scan:23::keyboard_matrix_read:251 [ current_piece#16 current_orientation#10 current_piece_gfx#10 current_xpos#11 current_ypos#22 current_piece_color#16 current_movedown_counter#12 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 [306] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ( main:3::play_init:10 [ play_init::j#2 play_init::pli#2 play_init::idx#2 play_init::$1 ] ) always clobbers reg byte a +Statement [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:3::play_init:10 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ( main:3::play_init:10 [ play_init::j#2 play_init::pli#2 play_init::idx#2 ] ) always clobbers reg byte a +Statement [309] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ( main:3::play_init:10 [ play_init::j#2 play_init::idx#2 play_init::pli#1 ] ) always clobbers reg byte a +Statement [310] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ( main:3::play_init:10 [ play_init::j#2 play_init::pli#1 play_init::idx#1 ] ) always clobbers reg byte a +Statement [313] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:3::play_init:10 [ ] ) always clobbers reg byte a Statement [315] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 [ ] ( main:3::render_init:8 [ ] ) always clobbers reg byte a Statement [320] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li#2 render_init::$5 ] ( main:3::render_init:8 [ render_init::i#2 render_init::li#2 render_init::$5 ] ) always clobbers reg byte a Statement [321] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 [ render_init::i#2 render_init::li#2 ] ( main:3::render_init:8 [ render_init::i#2 render_init::li#2 ] ) always clobbers reg byte a @@ -9472,12 +9467,12 @@ Statement [338] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fil Statement [340] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:3::render_init:8::fill:316 [ fill::val#3 fill::end#0 fill::addr#1 ] main:3::render_init:8::fill:318 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a Statement [342] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:3::sid_rnd_init:6 [ ] ) always clobbers reg byte a Statement [343] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:3::sid_rnd_init:6 [ ] ) 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#71 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 ] : zp ZP_WORD:6 , -Potential registers zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] : zp ZP_BYTE:2 , reg byte x , +Potential registers zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] : zp ZP_BYTE:3 , reg byte x , +Potential registers zp ZP_BYTE:4 [ current_ypos#10 current_ypos#71 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 ] : zp ZP_WORD:6 , +Potential registers zp ZP_BYTE:8 [ current_piece_color#62 current_piece_color#75 current_piece_color#76 ] : 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 , @@ -9487,37 +9482,37 @@ Potential registers zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 Potential registers zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] : zp ZP_BYTE:15 , reg byte x , Potential registers zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] : zp ZP_WORD:16 , 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:19 [ play_move_rotate::return#1 ] : 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#72 current_piece#73 current_piece#74 current_piece#75 ] : 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 , -Potential registers zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] : zp ZP_BYTE:26 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] : zp ZP_BYTE:27 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] : zp ZP_BYTE:28 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] : zp ZP_BYTE:29 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:30 [ collision::c#2 collision::c#1 ] : zp ZP_BYTE:30 , reg byte x , reg byte y , -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_WORD:21 [ current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] : zp ZP_WORD:21 , +Potential registers zp ZP_BYTE:23 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] : zp ZP_BYTE:23 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:24 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] : zp ZP_BYTE:24 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] : zp ZP_BYTE:25 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:26 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] : zp ZP_BYTE:26 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:27 [ play_collision::l#6 play_collision::l#1 ] : zp ZP_BYTE:27 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:28 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] : zp ZP_BYTE:28 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:29 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] : zp ZP_BYTE:29 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:30 [ play_collision::c#2 play_collision::c#1 ] : zp ZP_BYTE:30 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:31 [ play_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#1 ] : 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#76 current_piece#11 current_piece#13 current_piece#71 ] : 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 [ 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 [ remove_lines::y#8 remove_lines::y#1 ] : zp ZP_BYTE:43 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:44 [ remove_lines::r#2 remove_lines::r#3 remove_lines::r#1 ] : zp ZP_BYTE:44 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:45 [ remove_lines::x#2 remove_lines::x#1 ] : zp ZP_BYTE:45 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:46 [ remove_lines::full#4 remove_lines::full#2 ] : zp ZP_BYTE:46 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:47 [ remove_lines::w#6 remove_lines::w#4 remove_lines::w#12 remove_lines::w#11 remove_lines::w#1 remove_lines::w#2 remove_lines::w#3 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:48 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:49 [ lock_current::l#6 lock_current::l#1 ] : zp ZP_BYTE:49 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:50 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] : zp ZP_BYTE:50 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:51 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:52 [ lock_current::c#2 lock_current::c#1 ] : zp ZP_BYTE:52 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:34 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 ] : zp ZP_WORD:34 , +Potential registers zp ZP_BYTE:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] : zp ZP_BYTE:36 , reg byte x , +Potential registers zp ZP_WORD:37 [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] : zp ZP_WORD:37 , +Potential registers zp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] : zp ZP_BYTE:39 , reg byte x , +Potential registers zp ZP_BYTE:40 [ current_piece_color#21 current_piece_color#16 current_piece_color#11 current_piece_color#13 ] : zp ZP_BYTE:40 , reg byte x , +Potential registers zp ZP_BYTE:41 [ play_move_down::return#2 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:42 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] : zp ZP_BYTE:42 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:43 [ play_remove_lines::y#8 play_remove_lines::y#1 ] : zp ZP_BYTE:43 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:44 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] : zp ZP_BYTE:44 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:45 [ play_remove_lines::x#2 play_remove_lines::x#1 ] : zp ZP_BYTE:45 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:46 [ play_remove_lines::full#4 play_remove_lines::full#2 ] : zp ZP_BYTE:46 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:47 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:48 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:49 [ play_lock_current::l#6 play_lock_current::l#1 ] : zp ZP_BYTE:49 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] : zp ZP_BYTE:50 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:52 [ play_lock_current::c#2 play_lock_current::c#1 ] : zp ZP_BYTE:52 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] : zp ZP_BYTE:53 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:54 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] : zp ZP_BYTE:54 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] : zp ZP_BYTE:55 , reg byte x , reg byte y , @@ -9525,9 +9520,9 @@ Potential registers zp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 k Potential registers zp ZP_BYTE:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] : zp ZP_BYTE:57 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:58 [ 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:58 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:59 [ 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:59 , reg byte x , -Potential registers zp ZP_BYTE:60 [ tables_init::j#2 tables_init::j#1 ] : zp ZP_BYTE:60 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:61 [ tables_init::pli#2 tables_init::pli#1 ] : zp ZP_WORD:61 , -Potential registers zp ZP_BYTE:63 [ tables_init::idx#2 tables_init::idx#1 ] : zp ZP_BYTE:63 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:60 [ play_init::j#2 play_init::j#1 ] : zp ZP_BYTE:60 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:61 [ play_init::pli#2 play_init::pli#1 ] : zp ZP_WORD:61 , +Potential registers zp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] : zp ZP_BYTE:63 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:64 [ render_init::i#2 render_init::i#1 ] : zp ZP_BYTE:64 , reg byte x , reg byte y , Potential registers zp ZP_WORD:65 [ render_init::li#2 render_init::li#1 ] : zp ZP_WORD:65 , Potential registers zp ZP_WORD:67 [ render_init::line#4 render_init::line#1 ] : zp ZP_WORD:67 , @@ -9538,43 +9533,43 @@ Potential registers zp ZP_WORD:72 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : z Potential registers zp ZP_BYTE:74 [ keyboard_event_get::return#3 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:75 [ main::key_event#0 ] : zp ZP_BYTE:75 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:76 [ play_move_down::key_event#0 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:77 [ play_move_down::return#0 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:77 [ play_move_down::return#3 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:78 [ main::$10 ] : zp ZP_BYTE:78 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:79 [ main::render#1 ] : zp ZP_BYTE:79 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:80 [ play_move_leftright::key_event#0 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:81 [ play_move_leftright::return#0 ] : zp ZP_BYTE:81 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:81 [ play_move_leftright::return#4 ] : zp ZP_BYTE:81 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:82 [ main::$11 ] : zp ZP_BYTE:82 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:83 [ main::render#2 ] : zp ZP_BYTE:83 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:84 [ play_move_rotate::key_event#0 ] : zp ZP_BYTE:84 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:85 [ play_move_rotate::return#0 ] : zp ZP_BYTE:85 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:85 [ play_move_rotate::return#4 ] : zp ZP_BYTE:85 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:86 [ main::$12 ] : zp ZP_BYTE:86 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:87 [ main::render#3 ] : zp ZP_BYTE:87 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:88 [ render_current::screen_line#0 ] : zp ZP_WORD:88 , Potential registers zp ZP_BYTE:90 [ render_current::current_cell#0 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:91 [ render_playfield::$1 ] : zp ZP_BYTE:91 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:92 [ play_move_rotate::$2 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:93 [ collision::return#13 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:93 [ play_collision::return#13 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:94 [ play_move_rotate::$6 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:95 [ play_move_rotate::$4 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:96 [ collision::piece_gfx#0 ] : zp ZP_WORD:96 , -Potential registers zp ZP_WORD:98 [ collision::playfield_line#0 ] : zp ZP_WORD:98 , -Potential registers zp ZP_BYTE:100 [ collision::i#1 ] : zp ZP_BYTE:100 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:101 [ collision::$7 ] : zp ZP_BYTE:101 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:102 [ collision::return#12 ] : zp ZP_BYTE:102 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:96 [ play_collision::piece_gfx#0 ] : zp ZP_WORD:96 , +Potential registers zp ZP_WORD:98 [ play_collision::playfield_line#0 ] : zp ZP_WORD:98 , +Potential registers zp ZP_BYTE:100 [ play_collision::i#1 ] : zp ZP_BYTE:100 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:101 [ play_collision::$7 ] : zp ZP_BYTE:101 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:102 [ play_collision::return#12 ] : zp ZP_BYTE:102 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:103 [ play_move_leftright::$4 ] : zp ZP_BYTE:103 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:104 [ collision::return#1 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:104 [ play_collision::return#1 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:105 [ play_move_leftright::$8 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:106 [ keyboard_event_pressed::return#12 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:107 [ play_move_down::$2 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:108 [ collision::return#0 ] : zp ZP_BYTE:108 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:108 [ play_collision::return#0 ] : zp ZP_BYTE:108 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:109 [ play_move_down::$12 ] : zp ZP_BYTE:109 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:110 [ spawn_current::$3 ] : zp ZP_BYTE:110 , reg byte x , +Potential registers zp ZP_BYTE:110 [ play_spawn_current::$3 ] : zp ZP_BYTE:110 , reg byte x , Potential registers zp ZP_BYTE:111 [ sid_rnd::return#2 ] : zp ZP_BYTE:111 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:112 [ spawn_current::$1 ] : zp ZP_BYTE:112 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:112 [ play_spawn_current::$1 ] : zp ZP_BYTE:112 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:113 [ sid_rnd::return#0 ] : zp ZP_BYTE:113 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:114 [ remove_lines::c#0 ] : zp ZP_BYTE:114 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:115 [ lock_current::playfield_line#0 ] : zp ZP_WORD:115 , -Potential registers zp ZP_BYTE:117 [ lock_current::i#1 ] : zp ZP_BYTE:117 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:114 [ play_remove_lines::c#0 ] : zp ZP_BYTE:114 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:115 [ play_lock_current::playfield_line#0 ] : zp ZP_WORD:115 , +Potential registers zp ZP_BYTE:117 [ play_lock_current::i#1 ] : zp ZP_BYTE:117 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:118 [ keyboard_event_pressed::$0 ] : zp ZP_BYTE:118 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:119 [ keyboard_event_pressed::row_bits#0 ] : zp ZP_BYTE:119 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:120 [ keyboard_event_pressed::$1 ] : zp ZP_BYTE:120 , reg byte a , reg byte x , reg byte y , @@ -9596,28 +9591,28 @@ Potential registers zp ZP_BYTE:135 [ keyboard_event_scan::$4 ] : zp ZP_BYTE:135 Potential registers zp ZP_BYTE:136 [ keyboard_event_scan::event_type#0 ] : zp ZP_BYTE:136 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:137 [ keyboard_event_scan::$11 ] : zp ZP_BYTE:137 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:138 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:139 [ tables_init::$1 ] : zp ZP_BYTE:139 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:139 [ play_init::$1 ] : zp ZP_BYTE:139 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:140 [ render_init::$5 ] : zp ZP_BYTE:140 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:141 [ render_init::$10 ] : zp ZP_WORD:141 , Potential registers zp ZP_WORD:143 [ fill::end#0 ] : zp ZP_WORD:143 , REGISTER UPLIFT SCOPES Uplift Scope [keyboard_event_scan] 2,002: zp ZP_BYTE:134 [ keyboard_event_scan::$3 ] 2,002: zp ZP_BYTE:135 [ keyboard_event_scan::$4 ] 2,002: zp ZP_BYTE:136 [ keyboard_event_scan::event_type#0 ] 2,002: zp ZP_BYTE:137 [ keyboard_event_scan::$11 ] 1,787.5: zp ZP_BYTE:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 1,195.02: zp ZP_BYTE:58 [ 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:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 128.06: zp ZP_BYTE:124 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:126 [ keyboard_event_scan::$14 ] 4: zp ZP_BYTE:128 [ keyboard_event_scan::$18 ] 4: zp ZP_BYTE:130 [ keyboard_event_scan::$22 ] 4: zp ZP_BYTE:132 [ 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:101 [ 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:100 [ 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:98 [ collision::playfield_line#0 ] 47.76: zp ZP_WORD:96 [ 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:93 [ collision::return#13 ] 4: zp ZP_BYTE:102 [ collision::return#12 ] 4: zp ZP_BYTE:104 [ collision::return#1 ] 4: zp ZP_BYTE:108 [ collision::return#0 ] 1.33: zp ZP_BYTE:31 [ collision::return#14 ] -Uplift Scope [lock_current] 3,823.33: zp ZP_BYTE:50 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] 1,478.5: zp ZP_BYTE:51 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] 1,401.4: zp ZP_BYTE:52 [ lock_current::c#2 lock_current::c#1 ] 233.67: zp ZP_BYTE:117 [ lock_current::i#1 ] 117.83: zp ZP_BYTE:49 [ lock_current::l#6 lock_current::l#1 ] 110.2: zp ZP_WORD:115 [ lock_current::playfield_line#0 ] 82.23: zp ZP_BYTE:48 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] -Uplift Scope [remove_lines] 1,915.77: zp ZP_BYTE:44 [ remove_lines::r#2 remove_lines::r#3 remove_lines::r#1 ] 1,903.43: zp ZP_BYTE:47 [ remove_lines::w#6 remove_lines::w#4 remove_lines::w#12 remove_lines::w#11 remove_lines::w#1 remove_lines::w#2 remove_lines::w#3 ] 1,751.75: zp ZP_BYTE:45 [ remove_lines::x#2 remove_lines::x#1 ] 821: zp ZP_BYTE:46 [ remove_lines::full#4 remove_lines::full#2 ] 600.6: zp ZP_BYTE:114 [ remove_lines::c#0 ] 165.93: zp ZP_BYTE:43 [ remove_lines::y#8 remove_lines::y#1 ] +Uplift Scope [play_collision] 3,823.33: zp ZP_BYTE:28 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] 2,002: zp ZP_BYTE:101 [ play_collision::$7 ] 1,340.75: zp ZP_BYTE:29 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] 1,223.44: zp ZP_BYTE:30 [ play_collision::c#2 play_collision::c#1 ] 161.77: zp ZP_BYTE:100 [ play_collision::i#1 ] 141.57: zp ZP_BYTE:26 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] 113.62: zp ZP_BYTE:27 [ play_collision::l#6 play_collision::l#1 ] 78.71: zp ZP_WORD:98 [ play_collision::playfield_line#0 ] 47.76: zp ZP_WORD:96 [ play_collision::piece_gfx#0 ] 18: zp ZP_BYTE:23 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] 10: zp ZP_BYTE:24 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] 9.29: zp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] 4: zp ZP_BYTE:93 [ play_collision::return#13 ] 4: zp ZP_BYTE:102 [ play_collision::return#12 ] 4: zp ZP_BYTE:104 [ play_collision::return#1 ] 4: zp ZP_BYTE:108 [ play_collision::return#0 ] 1.33: zp ZP_BYTE:31 [ play_collision::return#14 ] +Uplift Scope [play_lock_current] 3,823.33: zp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] 1,478.5: zp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] 1,401.4: zp ZP_BYTE:52 [ play_lock_current::c#2 play_lock_current::c#1 ] 233.67: zp ZP_BYTE:117 [ play_lock_current::i#1 ] 117.83: zp ZP_BYTE:49 [ play_lock_current::l#6 play_lock_current::l#1 ] 110.2: zp ZP_WORD:115 [ play_lock_current::playfield_line#0 ] 82.23: zp ZP_BYTE:48 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +Uplift Scope [play_remove_lines] 1,915.77: zp ZP_BYTE:44 [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] 1,903.43: zp ZP_BYTE:47 [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] 1,751.75: zp ZP_BYTE:45 [ play_remove_lines::x#2 play_remove_lines::x#1 ] 821: zp ZP_BYTE:46 [ play_remove_lines::full#4 play_remove_lines::full#2 ] 600.6: zp ZP_BYTE:114 [ play_remove_lines::c#0 ] 165.93: zp ZP_BYTE:43 [ play_remove_lines::y#8 play_remove_lines::y#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:90 [ 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:88 [ render_current::screen_line#0 ] -Uplift Scope [] 5,895.76: zp ZP_BYTE:59 [ 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#67 current_piece_color#75 current_piece_color#76 ] 66.37: zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 ] 32.79: 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.73: 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#72 current_piece#73 current_piece#74 current_piece#75 ] 20: zp ZP_BYTE:133 [ keyboard_modifiers#5 ] 18.5: zp ZP_BYTE:4 [ current_ypos#22 current_ypos#71 ] 15.91: zp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] 14.91: zp ZP_WORD:34 [ current_piece#23 current_piece#76 current_piece#11 current_piece#13 current_piece#71 ] 13.23: zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 ] 11.6: zp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] 9.04: zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] 8.96: zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] 2.35: zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] +Uplift Scope [] 5,895.76: zp ZP_BYTE:59 [ 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#62 current_piece_color#75 current_piece_color#76 ] 66.37: zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 ] 32.79: zp ZP_WORD:37 [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] 27.73: zp ZP_BYTE:40 [ current_piece_color#21 current_piece_color#16 current_piece_color#11 current_piece_color#13 ] 26: zp ZP_WORD:21 [ current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] 20: zp ZP_BYTE:133 [ keyboard_modifiers#5 ] 18.5: zp ZP_BYTE:4 [ current_ypos#10 current_ypos#71 ] 15.91: zp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] 14.91: zp ZP_WORD:34 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 ] 13.23: zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 ] 11.6: zp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] 9.04: zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] 8.96: zp ZP_BYTE:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] 2.35: zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] 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:91 [ render_playfield::$1 ] 185.17: zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] Uplift Scope [render_init] 252.5: zp ZP_BYTE:70 [ render_init::c#2 render_init::c#1 ] 202: zp ZP_WORD:141 [ render_init::$10 ] 27.83: zp ZP_WORD:67 [ render_init::line#4 render_init::line#1 ] 24.75: zp ZP_BYTE:64 [ render_init::i#2 render_init::i#1 ] 22: zp ZP_BYTE:140 [ render_init::$5 ] 19.64: zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] 18.33: zp ZP_WORD:65 [ render_init::li#2 render_init::li#1 ] -Uplift Scope [spawn_current] 253.5: zp ZP_BYTE:42 [ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] 202: zp ZP_BYTE:112 [ spawn_current::$1 ] 0.18: zp ZP_BYTE:110 [ spawn_current::$3 ] +Uplift Scope [play_spawn_current] 253.5: zp ZP_BYTE:42 [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] 202: zp ZP_BYTE:112 [ play_spawn_current::$1 ] 0.18: zp ZP_BYTE:110 [ play_spawn_current::$3 ] Uplift Scope [keyboard_matrix_read] 202: zp ZP_BYTE:123 [ keyboard_matrix_read::return#2 ] 103: zp ZP_BYTE:122 [ keyboard_matrix_read::rowid#0 ] 34.33: zp ZP_BYTE:138 [ keyboard_matrix_read::return#0 ] Uplift Scope [sid_rnd] 202: zp ZP_BYTE:111 [ sid_rnd::return#2 ] 34.33: zp ZP_BYTE:113 [ sid_rnd::return#0 ] Uplift Scope [main] 22: zp ZP_BYTE:78 [ main::$10 ] 22: zp ZP_BYTE:82 [ main::$11 ] 22: zp ZP_BYTE:86 [ main::$12 ] 22: zp ZP_BYTE:87 [ main::render#3 ] 4.4: zp ZP_BYTE:79 [ main::render#1 ] 4.4: zp ZP_BYTE:83 [ main::render#2 ] 4: zp ZP_BYTE:75 [ main::key_event#0 ] -Uplift Scope [tables_init] 23.83: zp ZP_BYTE:60 [ tables_init::j#2 tables_init::j#1 ] 22: zp ZP_BYTE:139 [ tables_init::$1 ] 13.93: zp ZP_BYTE:63 [ tables_init::idx#2 tables_init::idx#1 ] 13.75: zp ZP_WORD:61 [ tables_init::pli#2 tables_init::pli#1 ] -Uplift Scope [play_move_down] 22: zp ZP_BYTE:77 [ 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:76 [ play_move_down::key_event#0 ] 4: zp ZP_BYTE:107 [ play_move_down::$2 ] 4: zp ZP_BYTE:109 [ play_move_down::$12 ] 3.67: zp ZP_BYTE:41 [ play_move_down::return#3 ] -Uplift Scope [play_move_rotate] 22: zp ZP_BYTE:85 [ 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:84 [ play_move_rotate::key_event#0 ] 4: zp ZP_BYTE:92 [ play_move_rotate::$2 ] 4: zp ZP_BYTE:94 [ play_move_rotate::$6 ] 4: zp ZP_BYTE:95 [ play_move_rotate::$4 ] 3.67: zp ZP_BYTE:19 [ play_move_rotate::return#2 ] -Uplift Scope [play_move_leftright] 22: zp ZP_BYTE:81 [ play_move_leftright::return#0 ] 7.5: zp ZP_BYTE:80 [ play_move_leftright::key_event#0 ] 4: zp ZP_BYTE:103 [ play_move_leftright::$4 ] 4: zp ZP_BYTE:105 [ play_move_leftright::$8 ] 3.67: zp ZP_BYTE:32 [ play_move_leftright::return#2 ] +Uplift Scope [play_init] 23.83: zp ZP_BYTE:60 [ play_init::j#2 play_init::j#1 ] 22: zp ZP_BYTE:139 [ play_init::$1 ] 13.93: zp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] 13.75: zp ZP_WORD:61 [ play_init::pli#2 play_init::pli#1 ] +Uplift Scope [play_move_down] 22: zp ZP_BYTE:77 [ play_move_down::return#3 ] 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:76 [ play_move_down::key_event#0 ] 4: zp ZP_BYTE:107 [ play_move_down::$2 ] 4: zp ZP_BYTE:109 [ play_move_down::$12 ] 3.67: zp ZP_BYTE:41 [ play_move_down::return#2 ] +Uplift Scope [play_move_rotate] 22: zp ZP_BYTE:85 [ play_move_rotate::return#4 ] 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:84 [ play_move_rotate::key_event#0 ] 4: zp ZP_BYTE:92 [ play_move_rotate::$2 ] 4: zp ZP_BYTE:94 [ play_move_rotate::$6 ] 4: zp ZP_BYTE:95 [ play_move_rotate::$4 ] 3.67: zp ZP_BYTE:19 [ play_move_rotate::return#1 ] +Uplift Scope [play_move_leftright] 22: zp ZP_BYTE:81 [ play_move_leftright::return#4 ] 7.5: zp ZP_BYTE:80 [ play_move_leftright::key_event#0 ] 4: zp ZP_BYTE:103 [ play_move_leftright::$4 ] 4: zp ZP_BYTE:105 [ play_move_leftright::$8 ] 3.67: zp ZP_BYTE:32 [ play_move_leftright::return#1 ] Uplift Scope [fill] 36: zp ZP_WORD:72 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp ZP_WORD:143 [ fill::end#0 ] 1.83: zp ZP_BYTE:71 [ fill::val#3 ] Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:106 [ keyboard_event_pressed::return#12 ] 4: zp ZP_BYTE:118 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:120 [ keyboard_event_pressed::$1 ] 4: zp ZP_BYTE:125 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:127 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:129 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:131 [ keyboard_event_pressed::return#10 ] 2: zp ZP_BYTE:119 [ keyboard_event_pressed::row_bits#0 ] 1.71: zp ZP_BYTE:121 [ keyboard_event_pressed::return#11 ] 1.33: zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] Uplift Scope [keyboard_event_get] 22: zp ZP_BYTE:74 [ keyboard_event_get::return#3 ] 8.33: zp ZP_BYTE:54 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] @@ -9625,29 +9620,29 @@ Uplift Scope [sid_rnd_init] Uplifting [keyboard_event_scan] best 598302 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:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:58 [ 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:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:124 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:126 [ keyboard_event_scan::$14 ] zp ZP_BYTE:128 [ keyboard_event_scan::$18 ] zp ZP_BYTE:130 [ keyboard_event_scan::$22 ] zp ZP_BYTE:132 [ keyboard_event_scan::$26 ] Limited combination testing to 100 combinations of 5308416 possible. -Uplifting [collision] best 583302 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:100 [ 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:98 [ collision::playfield_line#0 ] zp ZP_WORD:96 [ 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:93 [ collision::return#13 ] zp ZP_BYTE:102 [ collision::return#12 ] zp ZP_BYTE:104 [ collision::return#1 ] zp ZP_BYTE:108 [ collision::return#0 ] zp ZP_BYTE:31 [ collision::return#14 ] +Uplifting [play_collision] best 583302 combination zp ZP_BYTE:28 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] reg byte a [ play_collision::$7 ] zp ZP_BYTE:29 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] reg byte x [ play_collision::c#2 play_collision::c#1 ] zp ZP_BYTE:100 [ play_collision::i#1 ] zp ZP_BYTE:26 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] zp ZP_BYTE:27 [ play_collision::l#6 play_collision::l#1 ] zp ZP_WORD:98 [ play_collision::playfield_line#0 ] zp ZP_WORD:96 [ play_collision::piece_gfx#0 ] zp ZP_BYTE:23 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] zp ZP_BYTE:24 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] zp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] zp ZP_BYTE:93 [ play_collision::return#13 ] zp ZP_BYTE:102 [ play_collision::return#12 ] zp ZP_BYTE:104 [ play_collision::return#1 ] zp ZP_BYTE:108 [ play_collision::return#0 ] zp ZP_BYTE:31 [ play_collision::return#14 ] Limited combination testing to 100 combinations of 80621568 possible. -Uplifting [lock_current] best 574302 combination zp ZP_BYTE:50 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] zp ZP_BYTE:51 [ 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:117 [ lock_current::i#1 ] zp ZP_BYTE:49 [ lock_current::l#6 lock_current::l#1 ] zp ZP_WORD:115 [ lock_current::playfield_line#0 ] zp ZP_BYTE:48 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] +Uplifting [play_lock_current] best 574302 combination zp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] zp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] zp ZP_BYTE:117 [ play_lock_current::i#1 ] zp ZP_BYTE:49 [ play_lock_current::l#6 play_lock_current::l#1 ] zp ZP_WORD:115 [ play_lock_current::playfield_line#0 ] zp ZP_BYTE:48 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] Limited combination testing to 100 combinations of 729 possible. -Uplifting [remove_lines] best 560602 combination reg byte y [ remove_lines::r#2 remove_lines::r#3 remove_lines::r#1 ] reg byte x [ remove_lines::w#6 remove_lines::w#4 remove_lines::w#12 remove_lines::w#11 remove_lines::w#1 remove_lines::w#2 remove_lines::w#3 ] zp ZP_BYTE:45 [ remove_lines::x#2 remove_lines::x#1 ] zp ZP_BYTE:46 [ remove_lines::full#4 remove_lines::full#2 ] zp ZP_BYTE:114 [ remove_lines::c#0 ] zp ZP_BYTE:43 [ remove_lines::y#8 remove_lines::y#1 ] +Uplifting [play_remove_lines] best 560602 combination reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] zp ZP_BYTE:45 [ play_remove_lines::x#2 play_remove_lines::x#1 ] zp ZP_BYTE:46 [ play_remove_lines::full#4 play_remove_lines::full#2 ] zp ZP_BYTE:114 [ play_remove_lines::c#0 ] zp ZP_BYTE:43 [ play_remove_lines::y#8 play_remove_lines::y#1 ] Limited combination testing to 100 combinations of 1728 possible. Uplifting [render_current] best 545602 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:88 [ render_current::screen_line#0 ] Limited combination testing to 100 combinations of 972 possible. -Uplifting [] best 545565 combination zp ZP_BYTE:59 [ 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#67 current_piece_color#75 current_piece_color#76 ] zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 ] 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#72 current_piece#73 current_piece#74 current_piece#75 ] reg byte a [ keyboard_modifiers#5 ] reg byte x [ current_ypos#22 current_ypos#71 ] 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#76 current_piece#11 current_piece#13 current_piece#71 ] zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 ] zp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] 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 ] +Uplifting [] best 545565 combination zp ZP_BYTE:59 [ 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#62 current_piece_color#75 current_piece_color#76 ] zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 ] zp ZP_WORD:37 [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] zp ZP_BYTE:40 [ current_piece_color#21 current_piece_color#16 current_piece_color#11 current_piece_color#13 ] zp ZP_WORD:21 [ current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] reg byte a [ keyboard_modifiers#5 ] reg byte x [ current_ypos#10 current_ypos#71 ] zp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] zp ZP_WORD:34 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 ] zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 ] zp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] zp ZP_BYTE:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] Limited combination testing to 100 combinations of 20736 possible. Uplifting [render_playfield] best 536165 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 [render_init] best 535025 combination reg byte x [ render_init::c#2 render_init::c#1 ] zp ZP_WORD:141 [ render_init::$10 ] zp ZP_WORD:67 [ render_init::line#4 render_init::line#1 ] reg byte x [ render_init::i#2 render_init::i#1 ] reg byte a [ render_init::$5 ] zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] zp ZP_WORD:65 [ render_init::li#2 render_init::li#1 ] -Uplifting [spawn_current] best 533721 combination reg byte x [ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] reg byte a [ spawn_current::$1 ] zp ZP_BYTE:110 [ spawn_current::$3 ] +Uplifting [play_spawn_current] best 533721 combination reg byte x [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] reg byte a [ play_spawn_current::$1 ] zp ZP_BYTE:110 [ play_spawn_current::$3 ] Uplifting [keyboard_matrix_read] best 532515 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 531612 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] Uplifting [main] best 531372 combination reg byte a [ main::$10 ] reg byte a [ main::$11 ] reg byte a [ main::$12 ] reg byte a [ main::render#3 ] zp ZP_BYTE:79 [ main::render#1 ] zp ZP_BYTE:83 [ main::render#2 ] zp ZP_BYTE:75 [ main::key_event#0 ] Limited combination testing to 100 combinations of 6912 possible. -Uplifting [tables_init] best 531202 combination reg byte x [ tables_init::j#2 tables_init::j#1 ] reg byte a [ tables_init::$1 ] zp ZP_BYTE:63 [ tables_init::idx#2 tables_init::idx#1 ] zp ZP_WORD:61 [ tables_init::pli#2 tables_init::pli#1 ] -Uplifting [play_move_down] best 531088 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:109 [ play_move_down::$12 ] zp ZP_BYTE:41 [ play_move_down::return#3 ] +Uplifting [play_init] best 531202 combination reg byte x [ play_init::j#2 play_init::j#1 ] reg byte a [ play_init::$1 ] zp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] zp ZP_WORD:61 [ play_init::pli#2 play_init::pli#1 ] +Uplifting [play_move_down] best 531088 combination reg byte a [ play_move_down::return#3 ] 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:109 [ play_move_down::$12 ] zp ZP_BYTE:41 [ play_move_down::return#2 ] Limited combination testing to 100 combinations of 3072 possible. -Uplifting [play_move_rotate] best 530986 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:94 [ play_move_rotate::$6 ] zp ZP_BYTE:95 [ play_move_rotate::$4 ] zp ZP_BYTE:19 [ play_move_rotate::return#2 ] +Uplifting [play_move_rotate] best 530986 combination reg byte a [ play_move_rotate::return#4 ] 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:94 [ play_move_rotate::$6 ] zp ZP_BYTE:95 [ play_move_rotate::$4 ] zp ZP_BYTE:19 [ play_move_rotate::return#1 ] Limited combination testing to 100 combinations of 12288 possible. -Uplifting [play_move_leftright] best 530878 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_leftright] best 530878 combination reg byte a [ play_move_leftright::return#4 ] 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#1 ] Limited combination testing to 100 combinations of 1024 possible. Uplifting [fill] best 530862 combination zp ZP_WORD:72 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:143 [ fill::end#0 ] reg byte x [ fill::val#3 ] Uplifting [keyboard_event_pressed] best 530842 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:127 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:129 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:131 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:119 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:121 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] @@ -9656,78 +9651,78 @@ Uplifting [keyboard_event_get] best 530746 combination reg byte a [ keyboard_eve Uplifting [sid_rnd_init] best 530746 combination Attempting to uplift remaining variables inzp ZP_BYTE:59 [ 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 530746 combination zp ZP_BYTE:59 [ 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 530746 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:50 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] -Uplifting [lock_current] best 530746 combination zp ZP_BYTE:50 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] +Attempting to uplift remaining variables inzp ZP_BYTE:28 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +Uplifting [play_collision] best 530746 combination zp ZP_BYTE:28 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] +Uplifting [play_lock_current] best 530746 combination zp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_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 530746 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:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Uplifting [keyboard_event_scan] best 515746 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:45 [ remove_lines::x#2 remove_lines::x#1 ] -Uplifting [remove_lines] best 515746 combination zp ZP_BYTE:45 [ remove_lines::x#2 remove_lines::x#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:45 [ play_remove_lines::x#2 play_remove_lines::x#1 ] +Uplifting [play_remove_lines] best 515746 combination zp ZP_BYTE:45 [ play_remove_lines::x#2 play_remove_lines::x#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 515746 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 515746 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:51 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] -Uplifting [lock_current] best 515746 combination zp ZP_BYTE:51 [ 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 515746 combination zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] +Uplifting [play_lock_current] best 515746 combination zp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:29 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +Uplifting [play_collision] best 515746 combination zp ZP_BYTE:29 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:58 [ 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 515746 combination zp ZP_BYTE:58 [ 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:46 [ remove_lines::full#4 remove_lines::full#2 ] -Uplifting [remove_lines] best 515746 combination zp ZP_BYTE:46 [ remove_lines::full#4 remove_lines::full#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:114 [ remove_lines::c#0 ] -Uplifting [remove_lines] best 515746 combination zp ZP_BYTE:114 [ remove_lines::c#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:117 [ lock_current::i#1 ] -Uplifting [lock_current] best 515746 combination zp ZP_BYTE:117 [ lock_current::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:46 [ play_remove_lines::full#4 play_remove_lines::full#2 ] +Uplifting [play_remove_lines] best 515746 combination zp ZP_BYTE:46 [ play_remove_lines::full#4 play_remove_lines::full#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:114 [ play_remove_lines::c#0 ] +Uplifting [play_remove_lines] best 515746 combination zp ZP_BYTE:114 [ play_remove_lines::c#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:117 [ play_lock_current::i#1 ] +Uplifting [play_lock_current] best 515746 combination zp ZP_BYTE:117 [ play_lock_current::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] Uplifting [keyboard_event_scan] best 515746 combination zp ZP_BYTE:55 [ 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 515746 combination zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:43 [ remove_lines::y#8 remove_lines::y#1 ] -Uplifting [remove_lines] best 515746 combination zp ZP_BYTE:43 [ remove_lines::y#8 remove_lines::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:43 [ play_remove_lines::y#8 play_remove_lines::y#1 ] +Uplifting [play_remove_lines] best 515746 combination zp ZP_BYTE:43 [ play_remove_lines::y#8 play_remove_lines::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] Uplifting [render_current] best 515746 combination zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:100 [ collision::i#1 ] -Uplifting [collision] best 515746 combination zp ZP_BYTE:100 [ collision::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] -Uplifting [collision] best 515746 combination zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:100 [ play_collision::i#1 ] +Uplifting [play_collision] best 515746 combination zp ZP_BYTE:100 [ play_collision::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:26 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] +Uplifting [play_collision] best 515746 combination zp ZP_BYTE:26 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:124 [ keyboard_event_scan::row_scan#0 ] Uplifting [keyboard_event_scan] best 515746 combination zp ZP_BYTE:124 [ keyboard_event_scan::row_scan#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:49 [ lock_current::l#6 lock_current::l#1 ] -Uplifting [lock_current] best 515746 combination zp ZP_BYTE:49 [ 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 515746 combination zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:49 [ play_lock_current::l#6 play_lock_current::l#1 ] +Uplifting [play_lock_current] best 515746 combination zp ZP_BYTE:49 [ play_lock_current::l#6 play_lock_current::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:27 [ play_collision::l#6 play_collision::l#1 ] +Uplifting [play_collision] best 515746 combination zp ZP_BYTE:27 [ play_collision::l#6 play_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 515746 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:48 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] -Uplifting [lock_current] best 515746 combination zp ZP_BYTE:48 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 ] -Uplifting [] best 515746 combination zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 ] -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 515746 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:48 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +Uplifting [play_lock_current] best 515746 combination zp ZP_BYTE:48 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:8 [ current_piece_color#62 current_piece_color#75 current_piece_color#76 ] +Uplifting [] best 515746 combination zp ZP_BYTE:8 [ current_piece_color#62 current_piece_color#75 current_piece_color#76 ] +Attempting to uplift remaining variables inzp ZP_BYTE:40 [ current_piece_color#21 current_piece_color#16 current_piece_color#11 current_piece_color#13 ] +Uplifting [] best 515746 combination zp ZP_BYTE:40 [ current_piece_color#21 current_piece_color#16 current_piece_color#11 current_piece_color#13 ] Attempting to uplift remaining variables inzp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] Uplifting [render_init] best 515746 combination zp ZP_BYTE:69 [ render_init::l#4 render_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 515733 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 515733 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:63 [ tables_init::idx#2 tables_init::idx#1 ] -Uplifting [tables_init] best 515733 combination zp ZP_BYTE:63 [ tables_init::idx#2 tables_init::idx#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 ] -Uplifting [] best 515733 combination zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 ] +Attempting to uplift remaining variables inzp ZP_BYTE:23 [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +Uplifting [play_collision] best 515733 combination reg byte x [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] +Uplifting [] best 515733 combination zp ZP_BYTE:39 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] +Uplifting [play_init] best 515733 combination zp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 ] +Uplifting [] best 515733 combination zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 ] Attempting to uplift remaining variables inzp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] Uplifting [] best 515722 combination reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] -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 515709 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 515709 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 515709 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 515709 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:24 [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] +Uplifting [play_collision] best 515709 combination reg byte y [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] +Uplifting [play_collision] best 515709 combination zp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] +Uplifting [] best 515709 combination zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] +Uplifting [] best 515709 combination zp ZP_BYTE:36 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] 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 515709 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:79 [ main::render#1 ] @@ -9736,18 +9731,18 @@ Attempting to uplift remaining variables inzp ZP_BYTE:83 [ main::render#2 ] Uplifting [main] best 515709 combination zp ZP_BYTE:83 [ main::render#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:75 [ main::key_event#0 ] Uplifting [main] best 515709 combination zp ZP_BYTE:75 [ main::key_event#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:93 [ collision::return#13 ] -Uplifting [collision] best 515703 combination reg byte a [ collision::return#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:93 [ play_collision::return#13 ] +Uplifting [play_collision] best 515703 combination reg byte a [ play_collision::return#13 ] Attempting to uplift remaining variables inzp ZP_BYTE:94 [ play_move_rotate::$6 ] Uplifting [play_move_rotate] best 515697 combination reg byte a [ play_move_rotate::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:95 [ play_move_rotate::$4 ] Uplifting [play_move_rotate] best 515691 combination reg byte a [ play_move_rotate::$4 ] -Attempting to uplift remaining variables inzp ZP_BYTE:102 [ collision::return#12 ] -Uplifting [collision] best 515685 combination reg byte a [ collision::return#12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:104 [ collision::return#1 ] -Uplifting [collision] best 515679 combination reg byte a [ collision::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:108 [ collision::return#0 ] -Uplifting [collision] best 515673 combination reg byte a [ collision::return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:102 [ play_collision::return#12 ] +Uplifting [play_collision] best 515685 combination reg byte a [ play_collision::return#12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:104 [ play_collision::return#1 ] +Uplifting [play_collision] best 515679 combination reg byte a [ play_collision::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:108 [ play_collision::return#0 ] +Uplifting [play_collision] best 515673 combination reg byte a [ play_collision::return#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:109 [ play_move_down::$12 ] Uplifting [play_move_down] best 515667 combination reg byte a [ play_move_down::$12 ] Attempting to uplift remaining variables inzp ZP_BYTE:126 [ keyboard_event_scan::$14 ] @@ -9764,78 +9759,78 @@ Attempting to uplift remaining variables inzp ZP_BYTE:131 [ keyboard_event_press Uplifting [keyboard_event_pressed] best 515631 combination reg byte a [ keyboard_event_pressed::return#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:132 [ keyboard_event_scan::$26 ] Uplifting [keyboard_event_scan] best 515625 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 515589 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 515553 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 515537 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 515537 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:19 [ play_move_rotate::return#1 ] +Uplifting [play_move_rotate] best 515589 combination reg byte a [ play_move_rotate::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:32 [ play_move_leftright::return#1 ] +Uplifting [play_move_leftright] best 515553 combination reg byte a [ play_move_leftright::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:41 [ play_move_down::return#2 ] +Uplifting [play_move_down] best 515537 combination reg byte x [ play_move_down::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] +Uplifting [] best 515537 combination zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:119 [ keyboard_event_pressed::row_bits#0 ] Uplifting [keyboard_event_pressed] best 515537 combination zp ZP_BYTE:119 [ keyboard_event_pressed::row_bits#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:121 [ keyboard_event_pressed::return#11 ] Uplifting [keyboard_event_pressed] best 515519 combination reg byte a [ keyboard_event_pressed::return#11 ] -Attempting to uplift remaining variables inzp ZP_BYTE:31 [ collision::return#14 ] -Uplifting [collision] best 515492 combination reg byte a [ collision::return#14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:31 [ play_collision::return#14 ] +Uplifting [play_collision] best 515492 combination reg byte a [ play_collision::return#14 ] Attempting to uplift remaining variables inzp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] Uplifting [keyboard_event_pressed] best 515492 combination zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:110 [ spawn_current::$3 ] -Uplifting [spawn_current] best 515492 combination zp ZP_BYTE:110 [ 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:48 [ 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#72 current_piece#73 current_piece#74 current_piece#75 ] ] with [ zp ZP_WORD:96 [ collision::piece_gfx#0 ] ] - score: 1 +Attempting to uplift remaining variables inzp ZP_BYTE:110 [ play_spawn_current::$3 ] +Uplifting [play_spawn_current] best 515492 combination zp ZP_BYTE:110 [ play_spawn_current::$3 ] +Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 ] ] with [ zp ZP_BYTE:48 [ play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] ] with [ zp ZP_WORD:96 [ play_collision::piece_gfx#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:79 [ main::render#1 ] ] with [ zp ZP_BYTE:83 [ 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:43 [ remove_lines::y#8 remove_lines::y#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 remove_lines::y#8 remove_lines::y#1 ] ] with [ zp ZP_BYTE:63 [ tables_init::idx#2 tables_init::idx#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 remove_lines::y#8 remove_lines::y#1 tables_init::idx#2 tables_init::idx#1 ] ] with [ zp ZP_BYTE:69 [ render_init::l#4 render_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 remove_lines::y#8 remove_lines::y#1 tables_init::idx#2 tables_init::idx#1 render_init::l#4 render_init::l#1 ] ] with [ zp ZP_BYTE:110 [ 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:45 [ remove_lines::x#2 remove_lines::x#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 remove_lines::x#2 remove_lines::x#1 ] ] with [ zp ZP_BYTE:49 [ lock_current::l#6 lock_current::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 ] ] with [ zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 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#63 current_xpos#96 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:46 [ remove_lines::full#4 remove_lines::full#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 remove_lines::full#4 remove_lines::full#2 ] ] with [ zp ZP_BYTE:50 [ 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#63 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 remove_lines::full#4 remove_lines::full#2 lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] ] with [ zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 remove_lines::full#4 remove_lines::full#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:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 ] ] 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#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] ] with [ zp ZP_WORD:21 [ current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 ] ] with [ zp ZP_WORD:61 [ tables_init::pli#2 tables_init::pli#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 ] ] with [ zp ZP_WORD:65 [ render_init::li#2 render_init::li#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 render_init::li#2 render_init::li#1 ] ] with [ zp ZP_WORD:67 [ render_init::line#4 render_init::line#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 ] ] with [ zp ZP_WORD:72 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 ] ] with [ zp ZP_WORD:115 [ lock_current::playfield_line#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 ] ] 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#67 current_piece_color#75 current_piece_color#76 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#67 current_piece_color#75 current_piece_color#76 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:51 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 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:58 [ 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#67 current_piece_color#75 current_piece_color#76 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:114 [ remove_lines::c#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 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 remove_lines::c#0 ] ] with [ zp ZP_BYTE:119 [ 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:117 [ 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:124 [ 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#76 current_piece#11 current_piece#13 current_piece#71 ] ] with [ zp ZP_WORD:141 [ render_init::$10 ] ] -Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#23 current_piece#76 current_piece#11 current_piece#13 current_piece#71 render_init::$10 ] ] with [ zp ZP_WORD:143 [ fill::end#0 ] ] -Coalescing zero page register [ zp ZP_WORD:88 [ render_current::screen_line#0 ] ] with [ zp ZP_WORD:98 [ collision::playfield_line#0 ] ] -Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ current_xpos#63 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 remove_lines::full#4 remove_lines::full#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#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_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#67 current_piece_color#75 current_piece_color#76 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 remove_lines::c#0 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#76 current_piece#11 current_piece#13 current_piece#71 render_init::$10 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 ] +Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ] ] with [ zp ZP_BYTE:43 [ play_remove_lines::y#8 play_remove_lines::y#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 play_remove_lines::y#8 play_remove_lines::y#1 ] ] with [ zp ZP_BYTE:63 [ play_init::idx#2 play_init::idx#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 play_remove_lines::y#8 play_remove_lines::y#1 play_init::idx#2 play_init::idx#1 ] ] with [ zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 play_remove_lines::y#8 play_remove_lines::y#1 play_init::idx#2 play_init::idx#1 render_init::l#4 render_init::l#1 ] ] with [ zp ZP_BYTE:110 [ play_spawn_current::$3 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 ] ] with [ zp ZP_BYTE:45 [ play_remove_lines::x#2 play_remove_lines::x#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 play_remove_lines::x#2 play_remove_lines::x#1 ] ] with [ zp ZP_BYTE:49 [ play_lock_current::l#6 play_lock_current::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 ] ] with [ zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 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#48 current_xpos#96 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:46 [ play_remove_lines::full#4 play_remove_lines::full#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 ] ] with [ zp ZP_BYTE:50 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] ] with [ zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#48 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 ] ] with [ zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 ] ] 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#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] ] with [ zp ZP_WORD:21 [ current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 ] ] with [ zp ZP_WORD:61 [ play_init::pli#2 play_init::pli#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 ] ] with [ zp ZP_WORD:65 [ render_init::li#2 render_init::li#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 ] ] with [ zp ZP_WORD:67 [ render_init::line#4 render_init::line#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 ] ] with [ zp ZP_WORD:72 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 ] ] with [ zp ZP_WORD:115 [ play_lock_current::playfield_line#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#62 current_piece_color#75 current_piece_color#76 ] ] 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#62 current_piece_color#75 current_piece_color#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] with [ zp ZP_BYTE:25 [ play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#62 current_piece_color#75 current_piece_color#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 ] ] with [ zp ZP_BYTE:51 [ play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#62 current_piece_color#75 current_piece_color#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 ] ] with [ zp ZP_BYTE:58 [ 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#62 current_piece_color#75 current_piece_color#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] with [ zp ZP_BYTE:114 [ play_remove_lines::c#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#62 current_piece_color#75 current_piece_color#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 play_remove_lines::c#0 ] ] with [ zp ZP_BYTE:119 [ 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 [ play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 ] ] with [ zp ZP_BYTE:117 [ play_lock_current::i#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_lock_current::i#1 ] ] with [ zp ZP_BYTE:124 [ 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 [ play_collision::l#6 play_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 [ play_collision::i#2 play_collision::i#3 play_collision::i#11 play_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 [ play_collision::col#2 play_collision::col#9 play_collision::col#1 ] ] +Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 ] ] with [ zp ZP_WORD:141 [ render_init::$10 ] ] +Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 render_init::$10 ] ] with [ zp ZP_WORD:143 [ fill::end#0 ] ] +Coalescing zero page register [ zp ZP_WORD:88 [ render_current::screen_line#0 ] ] with [ zp ZP_WORD:98 [ play_collision::playfield_line#0 ] ] +Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ current_xpos#48 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Allocated (was zp ZP_WORD:6) zp ZP_WORD:5 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 play_lock_current::playfield_line#0 ] +Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:7 [ current_piece_color#62 current_piece_color#75 current_piece_color#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 play_remove_lines::c#0 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 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_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 play_collision::l#6 play_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 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_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 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] +Allocated (was zp ZP_WORD:34) zp ZP_WORD:12 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 render_init::$10 fill::end#0 ] +Allocated (was zp ZP_BYTE:36) zp ZP_BYTE:14 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] +Allocated (was zp ZP_WORD:37) zp ZP_WORD:15 [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] +Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:17 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] +Allocated (was zp ZP_BYTE:40) zp ZP_BYTE:18 [ current_piece_color#21 current_piece_color#16 current_piece_color#11 current_piece_color#13 ] Allocated (was zp ZP_BYTE:59) 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:75) zp ZP_BYTE:20 [ main::key_event#0 ] Allocated (was zp ZP_BYTE:79) zp ZP_BYTE:21 [ main::render#1 main::render#2 ] -Allocated (was zp ZP_WORD:88) zp ZP_WORD:22 [ render_current::screen_line#0 collision::playfield_line#0 ] -Allocated (was zp ZP_BYTE:100) zp ZP_BYTE:24 [ collision::i#1 ] +Allocated (was zp ZP_WORD:88) zp ZP_WORD:22 [ render_current::screen_line#0 play_collision::playfield_line#0 ] +Allocated (was zp ZP_BYTE:100) zp ZP_BYTE:24 [ play_collision::i#1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -9871,6 +9866,8 @@ ASSEMBLER BEFORE OPTIMIZATION .label SID_VOICE3_CONTROL = $d412 .const SID_CONTROL_NOISE = $80 .label SID_VOICE3_OSC = $d41b + .label PLAYFIELD_SCREEN = $400 + .label PLAYFIELD_CHARSET = $2800 .const PLAYFIELD_LINES = $16 .const PLAYFIELD_COLS = $a .const current_movedown_slow = $32 @@ -9880,37 +9877,35 @@ ASSEMBLER BEFORE OPTIMIZATION .const COLLISION_BOTTOM = 2 .const COLLISION_LEFT = 4 .const COLLISION_RIGHT = 8 - .label SCREEN = $400 - .label CHARSET = $2800 .label keyboard_events_size = $13 + .label current_movedown_counter = 3 .label current_ypos = 2 .label current_xpos = $11 .label current_orientation = $e .label current_piece_gfx = $f .label current_piece = $c .label current_piece_color = $12 - .label current_movedown_counter = 3 - .label current_piece_15 = 5 - .label current_xpos_63 = 4 - .label current_piece_gfx_64 = 5 - .label current_piece_color_67 = 7 + .label current_piece_12 = 5 + .label current_xpos_48 = 4 + .label current_piece_gfx_53 = 5 + .label current_piece_color_62 = 7 .label current_xpos_96 = 4 .label current_piece_gfx_87 = 5 .label current_piece_gfx_88 = 5 .label current_piece_color_75 = 7 .label current_piece_color_76 = 7 + .label current_piece_71 = 5 .label current_piece_72 = 5 .label current_piece_73 = 5 .label current_piece_74 = 5 - .label current_piece_75 = 5 //SEG2 @begin bbegin: - jmp b23 -//SEG3 @23 -b23: -//SEG4 kickasm(location (const byte*) CHARSET#0) {{ .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9)) .for (var c=0; c<16; c++) .for (var y=0;y<8; y++) .byte charset.getMulticolorByte(c,y) }} -//SEG5 [2] phi from @23 to @26 [phi:@23->@26] -b26_from_b23: + jmp b14 +//SEG3 @14 +b14: +//SEG4 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .var charset = LoadPicture("nes-charset.png", List().add($000000, $ffffff)) .for (var c=0; c<32; c++) .for (var y=0;y<8; y++) .byte charset.getSinglecolorByte(c,y) }} +//SEG5 [2] phi from @14 to @26 [phi:@14->@26] +b26_from_b14: jmp b26 //SEG6 @26 b26: @@ -9941,19 +9936,19 @@ main: { jmp b22 //SEG17 main::@22 b22: - //SEG18 [10] call tables_init - //SEG19 [304] phi from main::@22 to tables_init [phi:main::@22->tables_init] - tables_init_from_b22: - jsr tables_init + //SEG18 [10] call play_init + //SEG19 [304] phi from main::@22 to play_init [phi:main::@22->play_init] + play_init_from_b22: + jsr play_init //SEG20 [11] phi from main::@22 to main::@23 [phi:main::@22->main::@23] b23_from_b22: jmp b23 //SEG21 main::@23 b23: - //SEG22 [12] call spawn_current - //SEG23 [184] phi from main::@23 to spawn_current [phi:main::@23->spawn_current] - spawn_current_from_b23: - jsr spawn_current + //SEG22 [12] call play_spawn_current + //SEG23 [184] phi from main::@23 to play_spawn_current [phi:main::@23->play_spawn_current] + play_spawn_current_from_b23: + jsr play_spawn_current //SEG24 [13] phi from main::@23 to main::@24 [phi:main::@23->main::@24] b24_from_b23: jmp b24 @@ -9966,51 +9961,51 @@ main: { jmp b25 //SEG28 main::@25 b25: - //SEG29 [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 + //SEG29 [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#17 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_87 lda current_piece_gfx+1 sta current_piece_gfx_87+1 - //SEG30 [16] (byte~) current_piece_color#75 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 + //SEG30 [16] (byte~) current_piece_color#75 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 lda current_piece_color sta current_piece_color_75 //SEG31 [17] call render_current //SEG32 [52] phi from main::@25 to render_current [phi:main::@25->render_current] render_current_from_b25: - //SEG33 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#75 [phi:main::@25->render_current#0] -- register_copy - //SEG34 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy - //SEG35 [52] phi (byte) current_xpos#63 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 + //SEG33 [52] phi (byte) current_piece_color#62 = (byte~) current_piece_color#75 [phi:main::@25->render_current#0] -- register_copy + //SEG34 [52] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy + //SEG35 [52] phi (byte) current_xpos#48 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 lda #3 - sta current_xpos_63 - //SEG36 [52] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->render_current#3] -- vbuxx=vbuc1 + sta current_xpos_48 + //SEG36 [52] phi (byte) current_ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->render_current#3] -- vbuxx=vbuc1 ldx #0 jsr render_current - //SEG37 [18] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 - ldy spawn_current._3 + //SEG37 [18] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 //SEG38 [19] phi from main::@25 to main::@1 [phi:main::@25->main::@1] b1_from_b25: - //SEG39 [19] phi (byte) current_movedown_counter#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#0] -- vbuz1=vbuc1 + //SEG39 [19] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#0] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter //SEG40 [19] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#1] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG41 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#15 [phi:main::@25->main::@1#2] -- register_copy - //SEG42 [19] phi (byte) current_ypos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#3] -- vbuz1=vbuc1 + //SEG41 [19] phi (byte) current_piece_color#16 = (byte) current_piece_color#13 [phi:main::@25->main::@1#2] -- register_copy + //SEG42 [19] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#3] -- vbuz1=vbuc1 lda #0 sta current_ypos - //SEG43 [19] phi (byte) current_xpos#16 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->main::@1#4] -- vbuz1=vbuc1 + //SEG43 [19] phi (byte) current_xpos#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->main::@1#4] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG44 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#10 [phi:main::@25->main::@1#5] -- register_copy - //SEG45 [19] phi (byte) current_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 + //SEG44 [19] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#17 [phi:main::@25->main::@1#5] -- register_copy + //SEG45 [19] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG46 [19] phi (byte*) current_piece#11 = (byte*~) current_piece#71 [phi:main::@25->main::@1#7] -- register_copy + //SEG46 [19] phi (byte*) current_piece#16 = (byte*~) current_piece#70 [phi:main::@25->main::@1#7] -- register_copy jmp b1 //SEG47 main::@1 b1: @@ -10055,13 +10050,13 @@ main: { lda key_event //SEG63 [29] call play_move_down jsr play_move_down - //SEG64 [30] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx + //SEG64 [30] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 -- vbuaa=vbuxx txa jmp b29 //SEG65 main::@29 b29: - //SEG66 [31] (byte~) main::$10 ← (byte) play_move_down::return#0 - // (byte~) main::$10 = (byte) play_move_down::return#0 // register copy reg byte a + //SEG66 [31] (byte~) main::$10 ← (byte) play_move_down::return#3 + // (byte~) main::$10 = (byte) play_move_down::return#3 // register copy reg byte a //SEG67 [32] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 -- vbuz1=vbuc1_plus_vbuaa clc adc #0 @@ -10070,13 +10065,13 @@ main: { lda key_event //SEG69 [34] call play_move_leftright jsr play_move_leftright - //SEG70 [35] (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 + //SEG70 [35] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 + // (byte) play_move_leftright::return#4 = (byte) play_move_leftright::return#1 // register copy reg byte a jmp b30 //SEG71 main::@30 b30: - //SEG72 [36] (byte~) main::$11 ← (byte) play_move_leftright::return#0 - // (byte~) main::$11 = (byte) play_move_leftright::return#0 // register copy reg byte a + //SEG72 [36] (byte~) main::$11 ← (byte) play_move_leftright::return#4 + // (byte~) main::$11 = (byte) play_move_leftright::return#4 // register copy reg byte a //SEG73 [37] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 -- vbuz1=vbuz1_plus_vbuaa clc adc render @@ -10085,13 +10080,13 @@ main: { lda key_event //SEG75 [39] call play_move_rotate jsr play_move_rotate - //SEG76 [40] (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 + //SEG76 [40] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 + // (byte) play_move_rotate::return#4 = (byte) play_move_rotate::return#1 // register copy reg byte a jmp b31 //SEG77 main::@31 b31: - //SEG78 [41] (byte~) main::$12 ← (byte) play_move_rotate::return#0 - // (byte~) main::$12 = (byte) play_move_rotate::return#0 // register copy reg byte a + //SEG78 [41] (byte~) main::$12 ← (byte) play_move_rotate::return#4 + // (byte~) main::$12 = (byte) play_move_rotate::return#4 // register copy reg byte a //SEG79 [42] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 -- vbuaa=vbuz1_plus_vbuaa clc adc render @@ -10110,26 +10105,26 @@ main: { jmp b32 //SEG85 main::@32 b32: - //SEG86 [46] (byte~) current_ypos#71 ← (byte) current_ypos#16 -- vbuxx=vbuz1 + //SEG86 [46] (byte~) current_ypos#71 ← (byte) current_ypos#14 -- vbuxx=vbuz1 ldx current_ypos - //SEG87 [47] (byte~) current_xpos#96 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG87 [47] (byte~) current_xpos#96 ← (byte) current_xpos#20 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_96 - //SEG88 [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + //SEG88 [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#15 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_88 lda current_piece_gfx+1 sta current_piece_gfx_88+1 - //SEG89 [49] (byte~) current_piece_color#76 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 + //SEG89 [49] (byte~) current_piece_color#76 ← (byte) current_piece_color#11 -- vbuz1=vbuz2 lda current_piece_color sta current_piece_color_76 //SEG90 [50] call render_current //SEG91 [52] phi from main::@32 to render_current [phi:main::@32->render_current] render_current_from_b32: - //SEG92 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#76 [phi:main::@32->render_current#0] -- register_copy - //SEG93 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy - //SEG94 [52] phi (byte) current_xpos#63 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy - //SEG95 [52] phi (byte) current_ypos#22 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy + //SEG92 [52] phi (byte) current_piece_color#62 = (byte~) current_piece_color#76 [phi:main::@32->render_current#0] -- register_copy + //SEG93 [52] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy + //SEG94 [52] phi (byte) current_xpos#48 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy + //SEG95 [52] phi (byte) current_ypos#10 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy jsr render_current jmp b10 //SEG96 main::@10 @@ -10138,14 +10133,14 @@ main: { dec BORDERCOL //SEG98 [19] phi from main::@10 to main::@1 [phi:main::@10->main::@1] b1_from_b10: - //SEG99 [19] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy + //SEG99 [19] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@10->main::@1#0] -- register_copy //SEG100 [19] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy - //SEG101 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#2] -- register_copy - //SEG102 [19] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#3] -- register_copy - //SEG103 [19] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#4] -- register_copy - //SEG104 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy - //SEG105 [19] phi (byte) current_orientation#15 = (byte) current_orientation#23 [phi:main::@10->main::@1#6] -- register_copy - //SEG106 [19] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy + //SEG101 [19] phi (byte) current_piece_color#16 = (byte) current_piece_color#11 [phi:main::@10->main::@1#2] -- register_copy + //SEG102 [19] phi (byte) current_ypos#22 = (byte) current_ypos#14 [phi:main::@10->main::@1#3] -- register_copy + //SEG103 [19] phi (byte) current_xpos#11 = (byte) current_xpos#20 [phi:main::@10->main::@1#4] -- register_copy + //SEG104 [19] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#15 [phi:main::@10->main::@1#5] -- register_copy + //SEG105 [19] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@10->main::@1#6] -- register_copy + //SEG106 [19] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@10->main::@1#7] -- register_copy jmp b1 } //SEG107 render_current @@ -10155,7 +10150,7 @@ render_current: { .label screen_line = $16 .label xpos = $b .label i = $a - //SEG108 [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG108 [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta ypos2 @@ -10190,8 +10185,8 @@ render_current: { sta screen_line lda screen_lines+1,y sta screen_line+1 - //SEG121 [57] (byte) render_current::xpos#0 ← (byte) current_xpos#63 -- vbuz1=vbuz2 - lda current_xpos_63 + //SEG121 [57] (byte) render_current::xpos#0 ← (byte) current_xpos#48 -- vbuz1=vbuz2 + lda current_xpos_48 sta xpos //SEG122 [58] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] b3_from_b6: @@ -10208,9 +10203,9 @@ render_current: { jmp b3 //SEG130 render_current::@3 b3: - //SEG131 [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG131 [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i - lda (current_piece_gfx_64),y + lda (current_piece_gfx_53),y //SEG132 [60] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 inc i //SEG133 [61] 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 @@ -10226,8 +10221,8 @@ render_current: { jmp b8 //SEG136 render_current::@8 b8: - //SEG137 [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#67 -- pbuz1_derefidx_vbuz2=vbuz3 - lda current_piece_color_67 + //SEG137 [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#62 -- pbuz1_derefidx_vbuz2=vbuz3 + lda current_piece_color_62 ldy xpos sta (screen_line),y jmp b4 @@ -10356,9 +10351,9 @@ play_move_rotate: { //SEG183 [87] 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: - //SEG184 [87] 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 - //SEG185 [87] 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 - //SEG186 [87] 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 + //SEG184 [87] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG185 [87] phi (byte) current_orientation#19 = (byte) current_orientation#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG186 [87] phi (byte) play_move_rotate::return#1 = (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 //SEG187 play_move_rotate::@return @@ -10367,7 +10362,7 @@ play_move_rotate: { rts //SEG189 play_move_rotate::@2 b2: - //SEG190 [89] (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 + //SEG190 [89] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 lda #$10 clc adc current_orientation @@ -10381,43 +10376,43 @@ play_move_rotate: { jmp b4 //SEG194 play_move_rotate::@4 b4: - //SEG195 [92] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG195 [92] (byte) play_collision::xpos#3 ← (byte) current_xpos#20 -- vbuz1=vbuz2 lda current_xpos - sta collision.xpos - //SEG196 [93] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + sta play_collision.xpos + //SEG196 [93] (byte) play_collision::ypos#3 ← (byte) current_ypos#14 -- vbuyy=vbuz1 ldy current_ypos - //SEG197 [94] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG197 [94] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG198 [95] (byte*~) current_piece#75 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG198 [95] (byte*~) current_piece#74 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_75 + sta current_piece_74 lda current_piece+1 - sta current_piece_75+1 - //SEG199 [96] call collision - //SEG200 [104] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] - collision_from_b4: - //SEG201 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy - //SEG202 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy - //SEG203 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy - //SEG204 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#75 [phi:play_move_rotate::@4->collision#3] -- register_copy - jsr collision - //SEG205 [97] (byte) collision::return#13 ← (byte) collision::return#14 - // (byte) collision::return#13 = (byte) collision::return#14 // register copy reg byte a + sta current_piece_74+1 + //SEG199 [96] call play_collision + //SEG200 [104] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] + play_collision_from_b4: + //SEG201 [104] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy + //SEG202 [104] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy + //SEG203 [104] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy + //SEG204 [104] phi (byte*) current_piece#12 = (byte*~) current_piece#74 [phi:play_move_rotate::@4->play_collision#3] -- register_copy + jsr play_collision + //SEG205 [97] (byte) play_collision::return#13 ← (byte) play_collision::return#14 + // (byte) play_collision::return#13 = (byte) play_collision::return#14 // register copy reg byte a jmp b14 //SEG206 play_move_rotate::@14 b14: - //SEG207 [98] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 - // (byte~) play_move_rotate::$6 = (byte) collision::return#13 // register copy reg byte a + //SEG207 [98] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 + // (byte~) play_move_rotate::$6 = (byte) play_collision::return#13 // register copy reg byte a //SEG208 [99] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne breturn_from_b14 jmp b11 //SEG209 play_move_rotate::@11 b11: - //SEG210 [100] (byte) current_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG210 [100] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG211 [101] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 + //SEG211 [101] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 -- pbuz1=pbuz2_plus_vbuz3 lda current_orientation clc adc current_piece @@ -10427,14 +10422,14 @@ play_move_rotate: { sta current_piece_gfx+1 //SEG212 [87] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] breturn_from_b11: - //SEG213 [87] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG214 [87] phi (byte) current_orientation#23 = (byte) current_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG215 [87] 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 + //SEG213 [87] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#4 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG214 [87] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG215 [87] phi (byte) play_move_rotate::return#1 = (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 //SEG216 play_move_rotate::@1 b1: - //SEG217 [102] (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 + //SEG217 [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 lda current_orientation sec sbc #$10 @@ -10443,8 +10438,8 @@ play_move_rotate: { sta orientation jmp b4_from_b1 } -//SEG219 collision -collision: { +//SEG219 play_collision +play_collision: { .label xpos = 7 .label piece_gfx = 5 .label ypos2 = 8 @@ -10456,7 +10451,7 @@ collision: { .label i_3 = $a .label i_11 = $a .label i_13 = $a - //SEG220 [105] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx + //SEG220 [105] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -10464,150 +10459,150 @@ collision: { lda #0 adc piece_gfx+1 sta piece_gfx+1 - //SEG221 [106] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 + //SEG221 [106] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 tya asl sta ypos2 - //SEG222 [107] phi from collision to collision::@1 [phi:collision->collision::@1] - b1_from_collision: - //SEG223 [107] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 + //SEG222 [107] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + b1_from_play_collision: + //SEG223 [107] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG224 [107] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 + //SEG224 [107] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG225 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy + //SEG225 [107] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy jmp b1 - //SEG226 collision::@1 + //SEG226 play_collision::@1 b1: - //SEG227 [108] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG227 [108] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_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 - //SEG228 [109] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 + //SEG228 [109] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 lda xpos sta col - //SEG229 [110] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] + //SEG229 [110] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] b2_from_b1: - //SEG230 [110] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuxx=vbuc1 + //SEG230 [110] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG231 [110] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy - //SEG232 [110] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy + //SEG231 [110] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG232 [110] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy jmp b2 - //SEG233 collision::@2 + //SEG233 play_collision::@2 b2: - //SEG234 [111] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG234 [111] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG235 [112] 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 + //SEG235 [112] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 jmp b8 - //SEG236 collision::@8 + //SEG236 play_collision::@8 b8: - //SEG237 [113] 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 + //SEG237 [113] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG238 [114] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] + //SEG238 [114] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] breturn_from_b8: - //SEG239 [114] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuaa=vbuc1 + //SEG239 [114] phi (byte) play_collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM jmp breturn - //SEG240 collision::@return + //SEG240 play_collision::@return breturn: //SEG241 [115] return rts - //SEG242 collision::@4 + //SEG242 play_collision::@4 b4: - //SEG243 [116] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG243 [116] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and col - //SEG244 [117] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuaa_eq_0_then_la1 + //SEG244 [117] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG245 [114] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] + //SEG245 [114] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] breturn_from_b4: - //SEG246 [114] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuaa=vbuc1 + //SEG246 [114] phi (byte) play_collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT jmp breturn - //SEG247 collision::@5 + //SEG247 play_collision::@5 b5: - //SEG248 [118] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG248 [118] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG249 [114] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] + //SEG249 [114] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] breturn_from_b5: - //SEG250 [114] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuaa=vbuc1 + //SEG250 [114] phi (byte) play_collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT jmp breturn - //SEG251 collision::@6 + //SEG251 play_collision::@6 b6: - //SEG252 [119] 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 + //SEG252 [119] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG253 [114] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] + //SEG253 [114] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] breturn_from_b6: - //SEG254 [114] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuaa=vbuc1 + //SEG254 [114] phi (byte) play_collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD jmp breturn - //SEG255 collision::@3 + //SEG255 play_collision::@3 b3: - //SEG256 [120] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG256 [120] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG257 [121] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuxx=_inc_vbuxx + //SEG257 [121] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG258 [122] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuxx_neq_vbuc1_then_la1 + //SEG258 [122] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b21 jmp b17 - //SEG259 collision::@17 + //SEG259 play_collision::@17 b17: - //SEG260 [123] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG260 [123] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG261 [124] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG261 [124] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG262 [125] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG262 [125] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG263 [114] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] + //SEG263 [114] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] breturn_from_b17: - //SEG264 [114] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuaa=vbuc1 + //SEG264 [114] phi (byte) play_collision::return#14 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE jmp breturn - //SEG265 collision::@20 + //SEG265 play_collision::@20 b20: - //SEG266 [126] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG266 [126] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG267 [107] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] + //SEG267 [107] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] b1_from_b20: - //SEG268 [107] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy - //SEG269 [107] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy - //SEG270 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy + //SEG268 [107] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy + //SEG269 [107] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy + //SEG270 [107] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy jmp b1 - //SEG271 collision::@21 + //SEG271 play_collision::@21 b21: - //SEG272 [127] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG272 [127] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG273 [110] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] + //SEG273 [110] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] b2_from_b21: - //SEG274 [110] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy - //SEG275 [110] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy - //SEG276 [110] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy + //SEG274 [110] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy + //SEG275 [110] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy + //SEG276 [110] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy jmp b2 } //SEG277 play_move_leftright @@ -10624,55 +10619,55 @@ play_move_leftright: { jmp b7 //SEG281 play_move_leftright::@7 b7: - //SEG282 [130] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG282 [130] (byte) play_collision::xpos#2 ← (byte) current_xpos#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny - sty collision.xpos - //SEG283 [131] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + sty play_collision.xpos + //SEG283 [131] (byte) play_collision::ypos#2 ← (byte) current_ypos#14 -- vbuyy=vbuz1 ldy current_ypos - //SEG284 [132] (byte) collision::orientation#2 ← (byte) current_orientation#18 -- vbuxx=vbuz1 + //SEG284 [132] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuxx=vbuz1 ldx current_orientation - //SEG285 [133] (byte*~) current_piece#74 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG285 [133] (byte*~) current_piece#73 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_74 + sta current_piece_73 lda current_piece+1 - sta current_piece_74+1 - //SEG286 [134] call collision - //SEG287 [104] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] - collision_from_b7: - //SEG288 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy - //SEG289 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy - //SEG290 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy - //SEG291 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#74 [phi:play_move_leftright::@7->collision#3] -- register_copy - jsr collision - //SEG292 [135] (byte) collision::return#12 ← (byte) collision::return#14 - // (byte) collision::return#12 = (byte) collision::return#14 // register copy reg byte a + sta current_piece_73+1 + //SEG286 [134] call play_collision + //SEG287 [104] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] + play_collision_from_b7: + //SEG288 [104] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy + //SEG289 [104] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy + //SEG290 [104] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy + //SEG291 [104] phi (byte*) current_piece#12 = (byte*~) current_piece#73 [phi:play_move_leftright::@7->play_collision#3] -- register_copy + jsr play_collision + //SEG292 [135] (byte) play_collision::return#12 ← (byte) play_collision::return#14 + // (byte) play_collision::return#12 = (byte) play_collision::return#14 // register copy reg byte a jmp b15 //SEG293 play_move_leftright::@15 b15: - //SEG294 [136] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 - // (byte~) play_move_leftright::$4 = (byte) collision::return#12 // register copy reg byte a + //SEG294 [136] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 + // (byte~) play_move_leftright::$4 = (byte) play_collision::return#12 // register copy reg byte a //SEG295 [137] 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 //SEG296 play_move_leftright::@8 b8: - //SEG297 [138] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 + //SEG297 [138] (byte) current_xpos#3 ← ++ (byte) current_xpos#16 -- vbuz1=_inc_vbuz1 inc current_xpos //SEG298 [139] 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: - //SEG299 [139] 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 - //SEG300 [139] 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 + //SEG299 [139] phi (byte) current_xpos#20 = (byte) current_xpos#5 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG300 [139] phi (byte) play_move_leftright::return#1 = (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 //SEG301 [139] 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: - //SEG302 [139] 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 - //SEG303 [139] 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 + //SEG302 [139] phi (byte) current_xpos#20 = (byte) current_xpos#16 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG303 [139] phi (byte) play_move_leftright::return#1 = (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 //SEG304 play_move_leftright::@return @@ -10681,47 +10676,47 @@ play_move_leftright: { rts //SEG306 play_move_leftright::@1 b1: - //SEG307 [141] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG307 [141] (byte) play_collision::xpos#1 ← (byte) current_xpos#16 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex - stx collision.xpos - //SEG308 [142] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + stx play_collision.xpos + //SEG308 [142] (byte) play_collision::ypos#1 ← (byte) current_ypos#14 -- vbuyy=vbuz1 ldy current_ypos - //SEG309 [143] (byte) collision::orientation#1 ← (byte) current_orientation#18 -- vbuxx=vbuz1 + //SEG309 [143] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuxx=vbuz1 ldx current_orientation - //SEG310 [144] (byte*~) current_piece#73 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG310 [144] (byte*~) current_piece#72 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_73 + sta current_piece_72 lda current_piece+1 - sta current_piece_73+1 - //SEG311 [145] call collision - //SEG312 [104] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] - collision_from_b1: - //SEG313 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy - //SEG314 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy - //SEG315 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy - //SEG316 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#73 [phi:play_move_leftright::@1->collision#3] -- register_copy - jsr collision - //SEG317 [146] (byte) collision::return#1 ← (byte) collision::return#14 - // (byte) collision::return#1 = (byte) collision::return#14 // register copy reg byte a + sta current_piece_72+1 + //SEG311 [145] call play_collision + //SEG312 [104] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + play_collision_from_b1: + //SEG313 [104] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG314 [104] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG315 [104] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG316 [104] phi (byte*) current_piece#12 = (byte*~) current_piece#72 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + jsr play_collision + //SEG317 [146] (byte) play_collision::return#1 ← (byte) play_collision::return#14 + // (byte) play_collision::return#1 = (byte) play_collision::return#14 // register copy reg byte a jmp b14 //SEG318 play_move_leftright::@14 b14: - //SEG319 [147] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 - // (byte~) play_move_leftright::$8 = (byte) collision::return#1 // register copy reg byte a + //SEG319 [147] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + // (byte~) play_move_leftright::$8 = (byte) play_collision::return#1 // register copy reg byte a //SEG320 [148] 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 //SEG321 play_move_leftright::@11 b11: - //SEG322 [149] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 + //SEG322 [149] (byte) current_xpos#5 ← -- (byte) current_xpos#16 -- vbuz1=_dec_vbuz1 dec current_xpos jmp breturn_from_b11 } //SEG323 play_move_down play_move_down: { - //SEG324 [150] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 + //SEG324 [150] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 inc current_movedown_counter //SEG325 [151] 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 @@ -10763,7 +10758,7 @@ play_move_down: { jmp b9 //SEG340 play_move_down::@9 b9: - //SEG341 [158] if((byte) current_movedown_counter#10<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG341 [158] if((byte) current_movedown_counter#1<(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 @@ -10780,7 +10775,7 @@ play_move_down: { jmp b2 //SEG346 play_move_down::@2 b2: - //SEG347 [161] if((byte) current_movedown_counter#10<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG347 [161] if((byte) current_movedown_counter#1<(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 @@ -10802,34 +10797,34 @@ play_move_down: { jmp b12 //SEG354 play_move_down::@12 b12: - //SEG355 [165] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 + //SEG355 [165] (byte) play_collision::ypos#0 ← (byte) current_ypos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 ldy current_ypos iny - //SEG356 [166] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG356 [166] (byte) play_collision::xpos#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 lda current_xpos - sta collision.xpos - //SEG357 [167] (byte) collision::orientation#0 ← (byte) current_orientation#15 -- vbuxx=vbuz1 + sta play_collision.xpos + //SEG357 [167] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuxx=vbuz1 ldx current_orientation - //SEG358 [168] (byte*~) current_piece#72 ← (byte*) current_piece#11 -- pbuz1=pbuz2 + //SEG358 [168] (byte*~) current_piece#71 ← (byte*) current_piece#16 -- pbuz1=pbuz2 lda current_piece - sta current_piece_72 + sta current_piece_71 lda current_piece+1 - sta current_piece_72+1 - //SEG359 [169] call collision - //SEG360 [104] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] - collision_from_b12: - //SEG361 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy - //SEG362 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy - //SEG363 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy - //SEG364 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_down::@12->collision#3] -- register_copy - jsr collision - //SEG365 [170] (byte) collision::return#0 ← (byte) collision::return#14 - // (byte) collision::return#0 = (byte) collision::return#14 // register copy reg byte a + sta current_piece_71+1 + //SEG359 [169] call play_collision + //SEG360 [104] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] + play_collision_from_b12: + //SEG361 [104] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy + //SEG362 [104] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy + //SEG363 [104] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy + //SEG364 [104] phi (byte*) current_piece#12 = (byte*~) current_piece#71 [phi:play_move_down::@12->play_collision#3] -- register_copy + jsr play_collision + //SEG365 [170] (byte) play_collision::return#0 ← (byte) play_collision::return#14 + // (byte) play_collision::return#0 = (byte) play_collision::return#14 // register copy reg byte a jmp b18 //SEG366 play_move_down::@18 b18: - //SEG367 [171] (byte~) play_move_down::$12 ← (byte) collision::return#0 - // (byte~) play_move_down::$12 = (byte) collision::return#0 // register copy reg byte a + //SEG367 [171] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + // (byte~) play_move_down::$12 = (byte) play_collision::return#0 // register copy reg byte a //SEG368 [172] 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 @@ -10838,44 +10833,44 @@ play_move_down: { jmp b13 //SEG370 play_move_down::@13 b13: - //SEG371 [174] call lock_current - jsr lock_current + //SEG371 [174] call play_lock_current + jsr play_lock_current //SEG372 [175] 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 //SEG373 play_move_down::@19 b19: - //SEG374 [176] call remove_lines - //SEG375 [198] phi from play_move_down::@19 to remove_lines [phi:play_move_down::@19->remove_lines] - remove_lines_from_b19: - jsr remove_lines + //SEG374 [176] call play_remove_lines + //SEG375 [198] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] + play_remove_lines_from_b19: + jsr play_remove_lines //SEG376 [177] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] b20_from_b19: jmp b20 //SEG377 play_move_down::@20 b20: - //SEG378 [178] call spawn_current - //SEG379 [184] phi from play_move_down::@20 to spawn_current [phi:play_move_down::@20->spawn_current] - spawn_current_from_b20: - jsr spawn_current - //SEG380 [179] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 - ldy spawn_current._3 + //SEG378 [178] call play_spawn_current + //SEG379 [184] phi from play_move_down::@20 to play_spawn_current [phi:play_move_down::@20->play_spawn_current] + play_spawn_current_from_b20: + jsr play_spawn_current + //SEG380 [179] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 //SEG381 [180] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] b7_from_b20: - //SEG382 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#15 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy - //SEG383 [180] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 + //SEG382 [180] phi (byte) current_piece_color#21 = (byte) current_piece_color#13 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy + //SEG383 [180] phi (byte) current_xpos#34 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG384 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#10 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy - //SEG385 [180] phi (byte) current_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 + //SEG384 [180] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#17 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy + //SEG385 [180] phi (byte) current_orientation#29 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG386 [180] phi (byte*) current_piece#23 = (byte*~) current_piece#76 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy - //SEG387 [180] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 + //SEG386 [180] phi (byte*) current_piece#20 = (byte*~) current_piece#75 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy + //SEG387 [180] phi (byte) current_ypos#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 lda #0 sta current_ypos jmp b7 @@ -10883,28 +10878,28 @@ play_move_down: { b7: //SEG389 [181] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] breturn_from_b7: - //SEG390 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG391 [181] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG392 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG393 [181] phi (byte) current_orientation#18 = (byte) current_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG394 [181] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG395 [181] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG396 [181] 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 + //SEG390 [181] phi (byte) current_piece_color#11 = (byte) current_piece_color#21 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG391 [181] phi (byte) current_xpos#16 = (byte) current_xpos#34 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG392 [181] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#27 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG393 [181] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG394 [181] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG395 [181] phi (byte) current_ypos#14 = (byte) current_ypos#30 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG396 [181] phi (byte) current_movedown_counter#10 = (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 - //SEG397 [181] 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 + //SEG397 [181] phi (byte) play_move_down::return#2 = (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 //SEG398 [181] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] breturn_from_b4: - //SEG399 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG400 [181] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG401 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG402 [181] phi (byte) current_orientation#18 = (byte) current_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG403 [181] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG404 [181] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG405 [181] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG406 [181] 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 + //SEG399 [181] phi (byte) current_piece_color#11 = (byte) current_piece_color#16 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG400 [181] phi (byte) current_xpos#16 = (byte) current_xpos#11 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG401 [181] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#10 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG402 [181] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG403 [181] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG404 [181] phi (byte) current_ypos#14 = (byte) current_ypos#22 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG405 [181] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG406 [181] phi (byte) play_move_down::return#2 = (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 //SEG407 play_move_down::@return @@ -10913,72 +10908,72 @@ play_move_down: { rts //SEG409 play_move_down::@6 b6: - //SEG410 [183] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 + //SEG410 [183] (byte) current_ypos#1 ← ++ (byte) current_ypos#22 -- vbuz1=_inc_vbuz1 inc current_ypos //SEG411 [180] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] b7_from_b6: - //SEG412 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG413 [180] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG414 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG415 [180] phi (byte) current_orientation#33 = (byte) current_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG416 [180] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG417 [180] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG412 [180] phi (byte) current_piece_color#21 = (byte) current_piece_color#16 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG413 [180] phi (byte) current_xpos#34 = (byte) current_xpos#11 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG414 [180] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#10 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG415 [180] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG416 [180] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG417 [180] phi (byte) current_ypos#30 = (byte) current_ypos#1 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG418 spawn_current -spawn_current: { +//SEG418 play_spawn_current +play_spawn_current: { .label _3 = 2 - //SEG419 [185] phi from spawn_current to spawn_current::@1 [phi:spawn_current->spawn_current::@1] - b1_from_spawn_current: - //SEG420 [185] 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 + //SEG419 [185] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] + b1_from_play_spawn_current: + //SEG420 [185] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current->play_spawn_current::@1#0] -- vbuxx=vbuc1 ldx #7 jmp b1 - //SEG421 spawn_current::@1 + //SEG421 play_spawn_current::@1 b1: - //SEG422 [186] 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 + //SEG422 [186] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 -- vbuxx_eq_vbuc1_then_la1 cpx #7 beq b2_from_b1 jmp b3 - //SEG423 spawn_current::@3 + //SEG423 play_spawn_current::@3 b3: - //SEG424 [187] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG424 [187] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta _3 - //SEG425 [188] (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 + //SEG425 [188] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_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 - //SEG426 [189] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG426 [189] (byte) current_piece_color#13 ← *((const byte[]) PIECES_COLORS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_COLORS,x sta current_piece_color jmp breturn - //SEG427 spawn_current::@return + //SEG427 play_spawn_current::@return breturn: //SEG428 [190] return rts - //SEG429 [191] phi from spawn_current::@1 to spawn_current::@2 [phi:spawn_current::@1->spawn_current::@2] + //SEG429 [191] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] b2_from_b1: jmp b2 - //SEG430 spawn_current::@2 + //SEG430 play_spawn_current::@2 b2: //SEG431 [192] call sid_rnd jsr sid_rnd //SEG432 [193] (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 - //SEG433 spawn_current::@7 + //SEG433 play_spawn_current::@7 b7: - //SEG434 [194] (byte~) spawn_current::$1 ← (byte) sid_rnd::return#2 - // (byte~) spawn_current::$1 = (byte) sid_rnd::return#2 // register copy reg byte a - //SEG435 [195] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 + //SEG434 [194] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 + // (byte~) play_spawn_current::$1 = (byte) sid_rnd::return#2 // register copy reg byte a + //SEG435 [195] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 and #7 tax - //SEG436 [185] phi from spawn_current::@7 to spawn_current::@1 [phi:spawn_current::@7->spawn_current::@1] + //SEG436 [185] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] b1_from_b7: - //SEG437 [185] phi (byte) spawn_current::piece_idx#2 = (byte) spawn_current::piece_idx#1 [phi:spawn_current::@7->spawn_current::@1#0] -- register_copy + //SEG437 [185] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@7->play_spawn_current::@1#0] -- register_copy jmp b1 } //SEG438 sid_rnd @@ -10991,141 +10986,141 @@ sid_rnd: { //SEG441 [197] return rts } -//SEG442 remove_lines -remove_lines: { +//SEG442 play_remove_lines +play_remove_lines: { .label c = 7 .label x = 3 .label y = 2 .label full = 4 - //SEG443 [199] phi from remove_lines to remove_lines::@1 [phi:remove_lines->remove_lines::@1] - b1_from_remove_lines: - //SEG444 [199] phi (byte) remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines->remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG443 [199] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + b1_from_play_remove_lines: + //SEG444 [199] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG445 [199] phi (byte) remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#1] -- vbuxx=vbuc1 + //SEG445 [199] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuxx=vbuc1 ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG446 [199] phi (byte) remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#2] -- vbuyy=vbuc1 + //SEG446 [199] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuyy=vbuc1 ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1 jmp b1 - //SEG447 [199] phi from remove_lines::@4 to remove_lines::@1 [phi:remove_lines::@4->remove_lines::@1] + //SEG447 [199] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] b1_from_b4: - //SEG448 [199] phi (byte) remove_lines::y#8 = (byte) remove_lines::y#1 [phi:remove_lines::@4->remove_lines::@1#0] -- register_copy - //SEG449 [199] phi (byte) remove_lines::w#12 = (byte) remove_lines::w#11 [phi:remove_lines::@4->remove_lines::@1#1] -- register_copy - //SEG450 [199] phi (byte) remove_lines::r#3 = (byte) remove_lines::r#1 [phi:remove_lines::@4->remove_lines::@1#2] -- register_copy + //SEG448 [199] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy + //SEG449 [199] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy + //SEG450 [199] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy jmp b1 - //SEG451 remove_lines::@1 + //SEG451 play_remove_lines::@1 b1: - //SEG452 [200] phi from remove_lines::@1 to remove_lines::@2 [phi:remove_lines::@1->remove_lines::@2] + //SEG452 [200] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] b2_from_b1: - //SEG453 [200] phi (byte) remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines::@1->remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG453 [200] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG454 [200] phi (byte) remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@1->remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG454 [200] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG455 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#12 [phi:remove_lines::@1->remove_lines::@2#2] -- register_copy - //SEG456 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#3 [phi:remove_lines::@1->remove_lines::@2#3] -- register_copy + //SEG455 [200] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy + //SEG456 [200] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG457 [200] phi from remove_lines::@3 to remove_lines::@2 [phi:remove_lines::@3->remove_lines::@2] + //SEG457 [200] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] b2_from_b3: - //SEG458 [200] phi (byte) remove_lines::full#4 = (byte) remove_lines::full#2 [phi:remove_lines::@3->remove_lines::@2#0] -- register_copy - //SEG459 [200] phi (byte) remove_lines::x#2 = (byte) remove_lines::x#1 [phi:remove_lines::@3->remove_lines::@2#1] -- register_copy - //SEG460 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#1 [phi:remove_lines::@3->remove_lines::@2#2] -- register_copy - //SEG461 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#1 [phi:remove_lines::@3->remove_lines::@2#3] -- register_copy + //SEG458 [200] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy + //SEG459 [200] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy + //SEG460 [200] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy + //SEG461 [200] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy jmp b2 - //SEG462 remove_lines::@2 + //SEG462 play_remove_lines::@2 b2: - //SEG463 [201] (byte) remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG463 [201] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy lda playfield,y sta c - //SEG464 [202] (byte) remove_lines::r#1 ← -- (byte) remove_lines::r#2 -- vbuyy=_dec_vbuyy + //SEG464 [202] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy dey - //SEG465 [203] if((byte) remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@17 -- vbuz1_neq_0_then_la1 + //SEG465 [203] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@17 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b17_from_b2 - //SEG466 [204] phi from remove_lines::@2 to remove_lines::@3 [phi:remove_lines::@2->remove_lines::@3] + //SEG466 [204] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] b3_from_b2: - //SEG467 [204] phi (byte) remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@2->remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG467 [204] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full jmp b3 - //SEG468 remove_lines::@3 + //SEG468 play_remove_lines::@3 b3: - //SEG469 [205] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#4) ← (byte) remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG469 [205] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda c sta playfield,x - //SEG470 [206] (byte) remove_lines::w#1 ← -- (byte) remove_lines::w#4 -- vbuxx=_dec_vbuxx + //SEG470 [206] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx dex - //SEG471 [207] (byte) remove_lines::x#1 ← ++ (byte) remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG471 [207] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG472 [208] if((byte) remove_lines::x#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 remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG472 [208] if((byte) play_remove_lines::x#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 play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #PLAYFIELD_COLS-1+1 bne b2_from_b3 jmp b9 - //SEG473 remove_lines::@9 + //SEG473 play_remove_lines::@9 b9: - //SEG474 [209] if((byte) remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG474 [209] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 lda full cmp #1 bne b4_from_b9 jmp b10 - //SEG475 remove_lines::@10 + //SEG475 play_remove_lines::@10 b10: - //SEG476 [210] (byte) remove_lines::w#2 ← (byte) remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG476 [210] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 txa clc adc #PLAYFIELD_COLS tax - //SEG477 [211] phi from remove_lines::@10 remove_lines::@9 to remove_lines::@4 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4] + //SEG477 [211] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] b4_from_b10: b4_from_b9: - //SEG478 [211] phi (byte) remove_lines::w#11 = (byte) remove_lines::w#2 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4#0] -- register_copy + //SEG478 [211] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy jmp b4 - //SEG479 remove_lines::@4 + //SEG479 play_remove_lines::@4 b4: - //SEG480 [212] (byte) remove_lines::y#1 ← ++ (byte) remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG480 [212] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG481 [213] if((byte) remove_lines::y#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 remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG481 [213] if((byte) play_remove_lines::y#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 play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #PLAYFIELD_LINES-1+1 bne b1_from_b4 - //SEG482 [214] phi from remove_lines::@4 remove_lines::@6 to remove_lines::@5 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5] + //SEG482 [214] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] b5_from_b4: b5_from_b6: - //SEG483 [214] phi (byte) remove_lines::w#6 = (byte) remove_lines::w#11 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5#0] -- register_copy + //SEG483 [214] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy jmp b5 - //SEG484 remove_lines::@5 + //SEG484 play_remove_lines::@5 b5: - //SEG485 [215] if((byte) remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG485 [215] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b6 jmp breturn - //SEG486 remove_lines::@return + //SEG486 play_remove_lines::@return breturn: //SEG487 [216] return rts - //SEG488 remove_lines::@6 + //SEG488 play_remove_lines::@6 b6: - //SEG489 [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG489 [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta playfield,x - //SEG490 [218] (byte) remove_lines::w#3 ← -- (byte) remove_lines::w#6 -- vbuxx=_dec_vbuxx + //SEG490 [218] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx dex jmp b5_from_b6 - //SEG491 [219] phi from remove_lines::@2 to remove_lines::@17 [phi:remove_lines::@2->remove_lines::@17] + //SEG491 [219] phi from play_remove_lines::@2 to play_remove_lines::@17 [phi:play_remove_lines::@2->play_remove_lines::@17] b17_from_b2: jmp b17 - //SEG492 remove_lines::@17 + //SEG492 play_remove_lines::@17 b17: - //SEG493 [204] phi from remove_lines::@17 to remove_lines::@3 [phi:remove_lines::@17->remove_lines::@3] + //SEG493 [204] phi from play_remove_lines::@17 to play_remove_lines::@3 [phi:play_remove_lines::@17->play_remove_lines::@3] b3_from_b17: - //SEG494 [204] phi (byte) remove_lines::full#2 = (byte) remove_lines::full#4 [phi:remove_lines::@17->remove_lines::@3#0] -- register_copy + //SEG494 [204] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@17->play_remove_lines::@3#0] -- register_copy jmp b3 } -//SEG495 lock_current -lock_current: { +//SEG495 play_lock_current +play_lock_current: { .label ypos2 = 2 .label playfield_line = 5 .label col = 7 @@ -11135,104 +11130,104 @@ lock_current: { .label i_3 = 4 .label i_7 = 4 .label i_9 = 4 - //SEG496 [220] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG496 [220] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl ypos2 - //SEG497 [221] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] - b1_from_lock_current: - //SEG498 [221] 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 + //SEG497 [221] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + b1_from_play_lock_current: + //SEG498 [221] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG499 [221] 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 + //SEG499 [221] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG500 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy + //SEG500 [221] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG501 lock_current::@1 + //SEG501 play_lock_current::@1 b1: - //SEG502 [222] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG502 [222] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_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 - //SEG503 [223] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG503 [223] (byte) play_lock_current::col#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG504 [224] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] + //SEG504 [224] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] b2_from_b1: - //SEG505 [224] 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 + //SEG505 [224] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG506 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy - //SEG507 [224] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy + //SEG506 [224] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy + //SEG507 [224] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy jmp b2 - //SEG508 lock_current::@2 + //SEG508 play_lock_current::@2 b2: - //SEG509 [225] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG509 [225] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG510 [226] 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 + //SEG510 [226] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 jmp b4 - //SEG511 lock_current::@4 + //SEG511 play_lock_current::@4 b4: - //SEG512 [227] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG512 [227] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_color#16 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_color ldy col sta (playfield_line),y jmp b3 - //SEG513 lock_current::@3 + //SEG513 play_lock_current::@3 b3: - //SEG514 [228] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG514 [228] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG515 [229] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG515 [229] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG516 [230] 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 + //SEG516 [230] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b8 jmp b5 - //SEG517 lock_current::@5 + //SEG517 play_lock_current::@5 b5: - //SEG518 [231] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG518 [231] (byte) play_lock_current::ypos2#1 ← (byte) play_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 - //SEG519 [232] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG519 [232] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG520 [233] 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 + //SEG520 [233] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 jmp breturn - //SEG521 lock_current::@return + //SEG521 play_lock_current::@return breturn: //SEG522 [234] return rts - //SEG523 lock_current::@7 + //SEG523 play_lock_current::@7 b7: - //SEG524 [235] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG524 [235] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG525 [221] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] + //SEG525 [221] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] b1_from_b7: - //SEG526 [221] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy - //SEG527 [221] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy - //SEG528 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy + //SEG526 [221] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy + //SEG527 [221] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy + //SEG528 [221] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG529 lock_current::@8 + //SEG529 play_lock_current::@8 b8: - //SEG530 [236] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG530 [236] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG531 [224] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] + //SEG531 [224] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] b2_from_b8: - //SEG532 [224] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy - //SEG533 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy - //SEG534 [224] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy + //SEG532 [224] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy + //SEG533 [224] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy + //SEG534 [224] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy jmp b2 } //SEG535 keyboard_event_pressed @@ -11580,44 +11575,44 @@ keyboard_matrix_read: { //SEG666 [303] return rts } -//SEG667 tables_init -tables_init: { +//SEG667 play_init +play_init: { .label pli = 5 .label idx = 2 - //SEG668 [305] phi from tables_init to tables_init::@1 [phi:tables_init->tables_init::@1] - b1_from_tables_init: - //SEG669 [305] phi (byte) tables_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#0] -- vbuz1=vbuc1 + //SEG668 [305] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + b1_from_play_init: + //SEG669 [305] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG670 [305] phi (byte*) tables_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:tables_init->tables_init::@1#1] -- pbuz1=pbuc1 + //SEG670 [305] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG671 [305] phi (byte) tables_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#2] -- vbuxx=vbuc1 + //SEG671 [305] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG672 [305] phi from tables_init::@1 to tables_init::@1 [phi:tables_init::@1->tables_init::@1] + //SEG672 [305] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] b1_from_b1: - //SEG673 [305] phi (byte) tables_init::idx#2 = (byte) tables_init::idx#1 [phi:tables_init::@1->tables_init::@1#0] -- register_copy - //SEG674 [305] phi (byte*) tables_init::pli#2 = (byte*) tables_init::pli#1 [phi:tables_init::@1->tables_init::@1#1] -- register_copy - //SEG675 [305] phi (byte) tables_init::j#2 = (byte) tables_init::j#1 [phi:tables_init::@1->tables_init::@1#2] -- register_copy + //SEG673 [305] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG674 [305] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG675 [305] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy jmp b1 - //SEG676 tables_init::@1 + //SEG676 play_init::@1 b1: - //SEG677 [306] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG677 [306] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG678 [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG678 [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG679 [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG679 [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda idx sta playfield_lines_idx,x - //SEG680 [309] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG680 [309] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -11625,24 +11620,24 @@ tables_init: { bcc !+ inc pli+1 !: - //SEG681 [310] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG681 [310] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG682 [311] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 -- vbuxx=_inc_vbuxx + //SEG682 [311] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG683 [312] if((byte) tables_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 tables_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG683 [312] if((byte) play_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 play_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp b2 - //SEG684 tables_init::@2 + //SEG684 play_init::@2 b2: //SEG685 [313] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 lda #PLAYFIELD_COLS*PLAYFIELD_LINES sta playfield_lines_idx+PLAYFIELD_LINES jmp breturn - //SEG686 tables_init::@return + //SEG686 play_init::@return breturn: //SEG687 [314] return rts @@ -11661,10 +11656,10 @@ render_init: { fill_from_render_init: //SEG692 [335] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 208 [phi:render_init->fill#0] -- vbuxx=vbuc1 ldx #$d0 - //SEG693 [335] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:render_init->fill#1] -- pbuz1=pbuc1 - lda #fill#1] -- pbuz1=pbuc1 + lda #SCREEN + lda #>PLAYFIELD_SCREEN sta fill.addr+1 jsr fill //SEG694 [317] phi from render_init to render_init::@7 [phi:render_init->render_init::@7] @@ -11868,19 +11863,19 @@ sid_rnd_init: { 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 - playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 screen_lines: .fill 2*(PLAYFIELD_LINES+3), 0 -.pc = CHARSET "Inline" - .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9)) - .for (var c=0; c<16; c++) + PIECES: .word PIECE_T, PIECE_S, PIECE_Z, PIECE_J, PIECE_O, PIECE_I, PIECE_L + playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 +.pc = PLAYFIELD_CHARSET "Inline" + .var charset = LoadPicture("nes-charset.png", List().add($000000, $ffffff)) + .for (var c=0; c<32; c++) .for (var y=0;y<8; y++) - .byte charset.getMulticolorByte(c,y) + .byte charset.getSinglecolorByte(c,y) ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b23 +Removing instruction jmp b14 Removing instruction jmp b26 Removing instruction jmp bend Removing instruction jmp b21 @@ -12053,15 +12048,15 @@ Replacing label b3_from_b3 with b3 Replacing label b2_from_b5 with b2 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 -Removing instruction b23: -Removing instruction b26_from_b23: +Removing instruction b14: +Removing instruction b26_from_b14: Removing instruction b26: Removing instruction main_from_b26: Removing instruction bend_from_b26: Removing instruction b22_from_b21: -Removing instruction tables_init_from_b22: +Removing instruction play_init_from_b22: Removing instruction b23_from_b22: -Removing instruction spawn_current_from_b23: +Removing instruction play_spawn_current_from_b23: Removing instruction b24_from_b23: Removing instruction render_playfield_from_b24: Removing instruction b1: @@ -12090,9 +12085,9 @@ Removing instruction b4_from_b11: Removing instruction b4_from_b2: Removing instruction b13_from_b18: Removing instruction b19_from_b13: -Removing instruction remove_lines_from_b19: +Removing instruction play_remove_lines_from_b19: Removing instruction b20_from_b19: -Removing instruction spawn_current_from_b20: +Removing instruction play_spawn_current_from_b20: Removing instruction breturn_from_b7: Removing instruction b2_from_b1: Removing instruction b1_from_b4: @@ -12163,11 +12158,11 @@ Removing instruction b2_from_b1: Removing instruction b3: Removing instruction breturn: Removing instruction b6: -Removing instruction collision_from_b4: +Removing instruction play_collision_from_b4: Removing instruction b14: Removing instruction b11: Removing instruction breturn_from_b11: -Removing instruction b1_from_collision: +Removing instruction b1_from_play_collision: Removing instruction b2_from_b1: Removing instruction b8: Removing instruction breturn_from_b8: @@ -12180,10 +12175,10 @@ Removing instruction b1_from_b20: Removing instruction b2_from_b21: Removing instruction b6: Removing instruction b7: -Removing instruction collision_from_b7: +Removing instruction play_collision_from_b7: Removing instruction b15: Removing instruction b8: -Removing instruction collision_from_b1: +Removing instruction play_collision_from_b1: Removing instruction b14: Removing instruction b11: Removing instruction b8: @@ -12192,25 +12187,25 @@ Removing instruction b9: Removing instruction b10: Removing instruction b11: Removing instruction b12: -Removing instruction collision_from_b12: +Removing instruction play_collision_from_b12: Removing instruction b18: Removing instruction b13: Removing instruction b19: Removing instruction b20: Removing instruction b7_from_b20: Removing instruction b7_from_b6: -Removing instruction b1_from_spawn_current: +Removing instruction b1_from_play_spawn_current: Removing instruction b3: Removing instruction breturn: Removing instruction b7: Removing instruction b1_from_b7: Removing instruction breturn: -Removing instruction b1_from_remove_lines: +Removing instruction b1_from_play_remove_lines: Removing instruction b3_from_b2: Removing instruction b9: Removing instruction b10: Removing instruction breturn: -Removing instruction b1_from_lock_current: +Removing instruction b1_from_play_lock_current: Removing instruction b2_from_b1: Removing instruction b4: Removing instruction b5: @@ -12237,7 +12232,7 @@ Removing instruction b16: Removing instruction b17: Removing instruction b19: Removing instruction breturn: -Removing instruction b1_from_tables_init: +Removing instruction b1_from_play_init: Removing instruction b2: Removing instruction breturn: Removing instruction fill_from_render_init: @@ -12284,7 +12279,7 @@ Removing unreachable instruction jmp b3 Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @23 +(label) @14 (label) @26 (label) @begin (label) @end @@ -12301,8 +12296,6 @@ FINAL SYMBOL TABLE (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 (byte) BROWN (byte*) CHARGEN -(byte*) CHARSET -(const byte*) CHARSET#0 CHARSET = ((byte*))(word/signed word/dword/signed dword) 10240 (byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 @@ -12453,10 +12446,16 @@ FINAL SYMBOL TABLE (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) PINK +(byte*) PLAYFIELD_CHARSET +(const byte*) PLAYFIELD_CHARSET#0 PLAYFIELD_CHARSET = ((byte*))(word/signed word/dword/signed dword) 10240 (byte) PLAYFIELD_COLS (const byte) PLAYFIELD_COLS#0 PLAYFIELD_COLS = (byte/signed byte/word/signed word/dword/signed dword) 10 (byte) PLAYFIELD_LINES (const byte) PLAYFIELD_LINES#0 PLAYFIELD_LINES = (byte/signed byte/word/signed word/dword/signed dword) 22 +(byte*) PLAYFIELD_SCREEN +(const byte*) PLAYFIELD_SCREEN#0 PLAYFIELD_SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) PLAYFIELD_SPRITES +(byte*) PLAYFIELD_SPRITE_PTRS (byte*) PROCPORT (byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR @@ -12469,8 +12468,6 @@ FINAL SYMBOL TABLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 (byte) RED -(byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte) SID_CONTROL_GATE (byte) SID_CONTROL_NOISE (const byte) SID_CONTROL_NOISE#0 SID_CONTROL_NOISE = (byte/word/signed word/dword/signed dword) 128 @@ -12513,125 +12510,64 @@ FINAL SYMBOL TABLE (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) YELLOW -(byte()) collision((byte) collision::xpos , (byte) collision::ypos , (byte) collision::orientation) -(byte~) collision::$7 reg byte a 2002.0 -(label) collision::@1 -(label) collision::@17 -(label) collision::@2 -(label) collision::@20 -(label) collision::@21 -(label) collision::@3 -(label) collision::@4 -(label) collision::@5 -(label) collision::@6 -(label) collision::@8 -(label) collision::@return -(byte) collision::c -(byte) collision::c#1 reg byte x 1001.0 -(byte) collision::c#2 reg byte x 222.44444444444446 -(byte) collision::col -(byte) collision::col#1 col zp ZP_BYTE:11 500.5 -(byte) collision::col#2 col zp ZP_BYTE:11 638.25 -(byte~) collision::col#9 col zp ZP_BYTE:11 202.0 -(byte) collision::i -(byte) collision::i#1 i zp ZP_BYTE:24 161.76923076923077 -(byte~) collision::i#11 i#11 zp ZP_BYTE:10 202.0 -(byte~) collision::i#13 i#13 zp ZP_BYTE:10 2002.0 -(byte) collision::i#2 i#2 zp ZP_BYTE:10 1552.0 -(byte) collision::i#3 i#3 zp ZP_BYTE:10 67.33333333333333 -(byte) collision::l -(byte) collision::l#1 l zp ZP_BYTE:9 101.0 -(byte) collision::l#6 l zp ZP_BYTE:9 12.625 -(byte) collision::orientation -(byte) collision::orientation#0 reg byte x 2.0 -(byte) collision::orientation#1 reg byte x 2.0 -(byte) collision::orientation#2 reg byte x 2.0 -(byte) collision::orientation#3 reg byte x 2.0 -(byte) collision::orientation#4 reg byte x 10.0 -(byte*) collision::piece_gfx -(byte*) collision::piece_gfx#0 piece_gfx zp ZP_WORD:5 47.76190476190476 -(byte*) collision::playfield_line -(byte*) collision::playfield_line#0 playfield_line zp ZP_WORD:22 78.71428571428571 -(byte) collision::return -(byte) collision::return#0 reg byte a 4.0 -(byte) collision::return#1 reg byte a 4.0 -(byte) collision::return#12 reg byte a 4.0 -(byte) collision::return#13 reg byte a 4.0 -(byte) collision::return#14 reg byte a 1.3333333333333333 -(byte) collision::xpos -(byte) collision::xpos#0 xpos zp ZP_BYTE:7 1.3333333333333333 -(byte) collision::xpos#1 xpos zp ZP_BYTE:7 1.0 -(byte) collision::xpos#2 xpos zp ZP_BYTE:7 1.0 -(byte) collision::xpos#3 xpos zp ZP_BYTE:7 1.0 -(byte) collision::xpos#5 xpos zp ZP_BYTE:7 4.954545454545454 -(byte) collision::ypos -(byte) collision::ypos#0 reg byte y 1.0 -(byte) collision::ypos#1 reg byte y 1.3333333333333333 -(byte) collision::ypos#2 reg byte y 1.3333333333333333 -(byte) collision::ypos#3 reg byte y 1.3333333333333333 -(byte) collision::ypos#4 reg byte y 5.0 -(byte) collision::ypos2 -(byte) collision::ypos2#0 ypos2 zp ZP_BYTE:8 4.0 -(byte) collision::ypos2#1 ypos2 zp ZP_BYTE:8 50.5 -(byte) collision::ypos2#2 ypos2 zp ZP_BYTE:8 87.06666666666668 (byte) current_movedown_counter -(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.52 -(byte) current_movedown_counter#15 current_movedown_counter zp ZP_BYTE:3 1.3 +(byte) current_movedown_counter#1 current_movedown_counter zp ZP_BYTE:3 0.5333333333333333 +(byte) current_movedown_counter#10 current_movedown_counter zp ZP_BYTE:3 0.52 +(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:3 1.3 (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.1333333333333333 -(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_orientation#10 current_orientation zp ZP_BYTE:14 0.5 +(byte) current_orientation#14 current_orientation zp ZP_BYTE:14 0.32653061224489793 +(byte) current_orientation#19 current_orientation zp ZP_BYTE:14 1.1333333333333333 +(byte) current_orientation#29 current_orientation zp ZP_BYTE:14 4.0 +(byte) current_orientation#4 current_orientation zp ZP_BYTE:14 3.0 (byte*) current_piece -(byte*) current_piece#11 current_piece zp ZP_WORD:12 0.5588235294117647 -(byte*) current_piece#13 current_piece zp ZP_WORD:12 0.3484848484848484 -(byte*) current_piece#15 current_piece#15 zp ZP_WORD:5 10.0 -(byte*) current_piece#23 current_piece zp ZP_WORD:12 6.0 -(byte*~) current_piece#71 current_piece zp ZP_WORD:12 4.0 +(byte*) current_piece#10 current_piece zp ZP_WORD:12 0.3484848484848484 +(byte*) current_piece#12 current_piece#12 zp ZP_WORD:5 10.0 +(byte*) current_piece#16 current_piece zp ZP_WORD:12 0.5588235294117647 +(byte*) current_piece#20 current_piece zp ZP_WORD:12 6.0 +(byte*~) current_piece#70 current_piece zp ZP_WORD:12 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#73 zp ZP_WORD:5 4.0 (byte*~) current_piece#74 current_piece#74 zp ZP_WORD:5 4.0 -(byte*~) current_piece#75 current_piece#75 zp ZP_WORD:5 4.0 -(byte*~) current_piece#76 current_piece zp ZP_WORD:12 4.0 +(byte*~) current_piece#75 current_piece zp ZP_WORD:12 4.0 (byte) current_piece_color -(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.04 -(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#67 current_piece_color#67 zp ZP_BYTE:7 53.368421052631575 +(byte) current_piece_color#11 current_piece_color zp ZP_BYTE:18 1.04 +(byte) current_piece_color#13 current_piece_color zp ZP_BYTE:18 0.7272727272727273 +(byte) current_piece_color#16 current_piece_color zp ZP_BYTE:18 19.96078431372549 +(byte) current_piece_color#21 current_piece_color zp ZP_BYTE:18 6.0 +(byte) current_piece_color#62 current_piece_color#62 zp ZP_BYTE:7 53.368421052631575 (byte~) current_piece_color#75 current_piece_color#75 zp ZP_BYTE:7 4.0 (byte~) current_piece_color#76 current_piece_color#76 zp ZP_BYTE:7 22.0 (byte*) current_piece_gfx -(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.8666666666666665 -(byte*) current_piece_gfx#29 current_piece_gfx zp ZP_WORD:15 6.0 -(byte*) current_piece_gfx#64 current_piece_gfx#64 zp ZP_WORD:5 53.368421052631575 -(byte*) current_piece_gfx#8 current_piece_gfx zp ZP_WORD:15 4.0 +(byte*) current_piece_gfx#10 current_piece_gfx zp ZP_WORD:15 19.96078431372549 +(byte*) current_piece_gfx#14 current_piece_gfx zp ZP_WORD:15 0.2962962962962963 +(byte*) current_piece_gfx#15 current_piece_gfx zp ZP_WORD:15 1.8666666666666665 +(byte*) current_piece_gfx#17 current_piece_gfx zp ZP_WORD:15 0.6666666666666666 +(byte*) current_piece_gfx#27 current_piece_gfx zp ZP_WORD:15 6.0 +(byte*) current_piece_gfx#4 current_piece_gfx zp ZP_WORD:15 4.0 +(byte*) current_piece_gfx#53 current_piece_gfx#53 zp ZP_WORD:5 53.368421052631575 (byte*~) current_piece_gfx#87 current_piece_gfx#87 zp ZP_WORD:5 2.0 (byte*~) current_piece_gfx#88 current_piece_gfx#88 zp ZP_WORD:5 11.0 (byte) current_xpos -(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.871794871794872 -(byte) current_xpos#36 current_xpos zp ZP_BYTE:17 4.0 -(byte) current_xpos#63 current_xpos#63 zp ZP_BYTE:4 5.894736842105264 -(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#11 current_xpos zp ZP_BYTE:17 2.313725490196078 +(byte) current_xpos#16 current_xpos zp ZP_BYTE:17 0.72 +(byte) current_xpos#20 current_xpos zp ZP_BYTE:17 0.871794871794872 +(byte) current_xpos#3 current_xpos zp ZP_BYTE:17 4.0 +(byte) current_xpos#34 current_xpos zp ZP_BYTE:17 4.0 +(byte) current_xpos#48 current_xpos#48 zp ZP_BYTE:4 5.894736842105264 +(byte) current_xpos#5 current_xpos zp ZP_BYTE:17 4.0 (byte~) current_xpos#96 current_xpos#96 zp ZP_BYTE:4 7.333333333333333 (byte) current_ypos -(byte) current_ypos#12 current_ypos zp ZP_BYTE:2 0.5588235294117647 -(byte) current_ypos#16 current_ypos zp ZP_BYTE:2 0.48484848484848475 -(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#1 current_ypos zp ZP_BYTE:2 4.0 +(byte) current_ypos#10 reg byte x 13.0 +(byte) current_ypos#14 current_ypos zp ZP_BYTE:2 0.48484848484848475 +(byte) current_ypos#22 current_ypos zp ZP_BYTE:2 0.5588235294117647 +(byte) current_ypos#30 current_ypos zp ZP_BYTE:2 4.0 (byte~) current_ypos#71 reg byte x 5.5 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (label) fill::@1 @@ -12750,37 +12686,6 @@ FINAL SYMBOL TABLE (byte) keyboard_modifiers#5 reg byte a 20.0 (byte[8]) keyboard_scan_values (const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) } -(void()) lock_current() -(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 1001.0 -(byte) lock_current::c#2 reg byte x 400.4 -(byte) lock_current::col -(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: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 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 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::$11 reg byte a 22.0 @@ -12808,6 +12713,112 @@ 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()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) +(byte~) play_collision::$7 reg byte a 2002.0 +(label) play_collision::@1 +(label) play_collision::@17 +(label) play_collision::@2 +(label) play_collision::@20 +(label) play_collision::@21 +(label) play_collision::@3 +(label) play_collision::@4 +(label) play_collision::@5 +(label) play_collision::@6 +(label) play_collision::@8 +(label) play_collision::@return +(byte) play_collision::c +(byte) play_collision::c#1 reg byte x 1001.0 +(byte) play_collision::c#2 reg byte x 222.44444444444446 +(byte) play_collision::col +(byte) play_collision::col#1 col zp ZP_BYTE:11 500.5 +(byte) play_collision::col#2 col zp ZP_BYTE:11 638.25 +(byte~) play_collision::col#9 col zp ZP_BYTE:11 202.0 +(byte) play_collision::i +(byte) play_collision::i#1 i zp ZP_BYTE:24 161.76923076923077 +(byte~) play_collision::i#11 i#11 zp ZP_BYTE:10 202.0 +(byte~) play_collision::i#13 i#13 zp ZP_BYTE:10 2002.0 +(byte) play_collision::i#2 i#2 zp ZP_BYTE:10 1552.0 +(byte) play_collision::i#3 i#3 zp ZP_BYTE:10 67.33333333333333 +(byte) play_collision::l +(byte) play_collision::l#1 l zp ZP_BYTE:9 101.0 +(byte) play_collision::l#6 l zp ZP_BYTE:9 12.625 +(byte) play_collision::orientation +(byte) play_collision::orientation#0 reg byte x 2.0 +(byte) play_collision::orientation#1 reg byte x 2.0 +(byte) play_collision::orientation#2 reg byte x 2.0 +(byte) play_collision::orientation#3 reg byte x 2.0 +(byte) play_collision::orientation#4 reg byte x 10.0 +(byte*) play_collision::piece_gfx +(byte*) play_collision::piece_gfx#0 piece_gfx zp ZP_WORD:5 47.76190476190476 +(byte*) play_collision::playfield_line +(byte*) play_collision::playfield_line#0 playfield_line zp ZP_WORD:22 78.71428571428571 +(byte) play_collision::return +(byte) play_collision::return#0 reg byte a 4.0 +(byte) play_collision::return#1 reg byte a 4.0 +(byte) play_collision::return#12 reg byte a 4.0 +(byte) play_collision::return#13 reg byte a 4.0 +(byte) play_collision::return#14 reg byte a 1.3333333333333333 +(byte) play_collision::xpos +(byte) play_collision::xpos#0 xpos zp ZP_BYTE:7 1.3333333333333333 +(byte) play_collision::xpos#1 xpos zp ZP_BYTE:7 1.0 +(byte) play_collision::xpos#2 xpos zp ZP_BYTE:7 1.0 +(byte) play_collision::xpos#3 xpos zp ZP_BYTE:7 1.0 +(byte) play_collision::xpos#5 xpos zp ZP_BYTE:7 4.954545454545454 +(byte) play_collision::ypos +(byte) play_collision::ypos#0 reg byte y 1.0 +(byte) play_collision::ypos#1 reg byte y 1.3333333333333333 +(byte) play_collision::ypos#2 reg byte y 1.3333333333333333 +(byte) play_collision::ypos#3 reg byte y 1.3333333333333333 +(byte) play_collision::ypos#4 reg byte y 5.0 +(byte) play_collision::ypos2 +(byte) play_collision::ypos2#0 ypos2 zp ZP_BYTE:8 4.0 +(byte) play_collision::ypos2#1 ypos2 zp ZP_BYTE:8 50.5 +(byte) play_collision::ypos2#2 ypos2 zp ZP_BYTE:8 87.06666666666668 +(void()) play_init() +(byte~) play_init::$1 reg byte a 22.0 +(label) play_init::@1 +(label) play_init::@2 +(label) play_init::@return +(byte) play_init::idx +(byte) play_init::idx#1 idx zp ZP_BYTE:2 7.333333333333333 +(byte) play_init::idx#2 idx zp ZP_BYTE:2 6.6000000000000005 +(byte) play_init::j +(byte) play_init::j#1 reg byte x 16.5 +(byte) play_init::j#2 reg byte x 7.333333333333333 +(byte*) play_init::pli +(byte*) play_init::pli#1 pli zp ZP_WORD:5 5.5 +(byte*) play_init::pli#2 pli zp ZP_WORD:5 8.25 +(void()) play_lock_current() +(label) play_lock_current::@1 +(label) play_lock_current::@2 +(label) play_lock_current::@3 +(label) play_lock_current::@4 +(label) play_lock_current::@5 +(label) play_lock_current::@7 +(label) play_lock_current::@8 +(label) play_lock_current::@return +(byte) play_lock_current::c +(byte) play_lock_current::c#1 reg byte x 1001.0 +(byte) play_lock_current::c#2 reg byte x 400.4 +(byte) play_lock_current::col +(byte) play_lock_current::col#0 col zp ZP_BYTE:7 202.0 +(byte) play_lock_current::col#1 col zp ZP_BYTE:7 500.5 +(byte) play_lock_current::col#2 col zp ZP_BYTE:7 776.0 +(byte) play_lock_current::i +(byte) play_lock_current::i#1 i zp ZP_BYTE:8 233.66666666666669 +(byte) play_lock_current::i#2 i#2 zp ZP_BYTE:4 1552.0 +(byte) play_lock_current::i#3 i#3 zp ZP_BYTE:4 67.33333333333333 +(byte~) play_lock_current::i#7 i#7 zp ZP_BYTE:4 202.0 +(byte~) play_lock_current::i#9 i#9 zp ZP_BYTE:4 2002.0 +(byte) play_lock_current::l +(byte) play_lock_current::l#1 l zp ZP_BYTE:3 101.0 +(byte) play_lock_current::l#6 l zp ZP_BYTE:3 16.833333333333332 +(byte*) play_lock_current::playfield_line +(byte*) play_lock_current::playfield_line#0 playfield_line zp ZP_WORD:5 110.19999999999999 +(byte) play_lock_current::ypos2 +(byte) play_lock_current::ypos2#0 ypos2 zp ZP_BYTE:2 4.0 +(byte) play_lock_current::ypos2#1 ypos2 zp ZP_BYTE:2 50.5 +(byte) play_lock_current::ypos2#2 ypos2 zp ZP_BYTE:2 27.727272727272727 (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 @@ -12836,8 +12847,8 @@ FINAL SYMBOL TABLE (byte) play_move_down::movedown#6 reg byte x 6.0 (byte) play_move_down::movedown#7 reg byte x 5.0 (byte) play_move_down::return -(byte) play_move_down::return#0 reg byte a 22.0 -(byte) play_move_down::return#3 reg byte x 3.6666666666666665 +(byte) play_move_down::return#2 reg byte x 3.6666666666666665 +(byte) play_move_down::return#3 reg byte a 22.0 (byte()) play_move_leftright((byte) play_move_leftright::key_event) (byte~) play_move_leftright::$4 reg byte a 4.0 (byte~) play_move_leftright::$8 reg byte a 4.0 @@ -12852,8 +12863,8 @@ FINAL SYMBOL TABLE (byte) play_move_leftright::key_event (byte) play_move_leftright::key_event#0 reg byte a 7.5 (byte) play_move_leftright::return -(byte) play_move_leftright::return#0 reg byte a 22.0 -(byte) play_move_leftright::return#2 reg byte a 3.6666666666666665 +(byte) play_move_leftright::return#1 reg byte a 3.6666666666666665 +(byte) play_move_leftright::return#4 reg byte a 22.0 (byte()) play_move_rotate((byte) play_move_rotate::key_event) (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 @@ -12872,48 +12883,59 @@ FINAL SYMBOL TABLE (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.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 +(byte) play_move_rotate::return#1 reg byte a 3.6666666666666665 +(byte) play_move_rotate::return#4 reg byte a 22.0 +(void()) play_remove_lines() +(label) play_remove_lines::@1 +(label) play_remove_lines::@10 +(label) play_remove_lines::@17 +(label) play_remove_lines::@2 +(label) play_remove_lines::@3 +(label) play_remove_lines::@4 +(label) play_remove_lines::@5 +(label) play_remove_lines::@6 +(label) play_remove_lines::@9 +(label) play_remove_lines::@return +(byte) play_remove_lines::c +(byte) play_remove_lines::c#0 c zp ZP_BYTE:7 600.5999999999999 +(byte) play_remove_lines::full +(byte) play_remove_lines::full#2 full zp ZP_BYTE:4 420.59999999999997 +(byte) play_remove_lines::full#4 full zp ZP_BYTE:4 400.4 +(byte) play_remove_lines::r +(byte) play_remove_lines::r#1 reg byte y 161.76923076923077 +(byte) play_remove_lines::r#2 reg byte y 1552.0 +(byte) play_remove_lines::r#3 reg byte y 202.0 +(byte) play_remove_lines::w +(byte) play_remove_lines::w#1 reg byte x 551.0 +(byte) play_remove_lines::w#11 reg byte x 134.66666666666666 +(byte) play_remove_lines::w#12 reg byte x 202.0 +(byte) play_remove_lines::w#2 reg byte x 202.0 +(byte) play_remove_lines::w#3 reg byte x 202.0 +(byte) play_remove_lines::w#4 reg byte x 443.42857142857144 +(byte) play_remove_lines::w#6 reg byte x 168.33333333333331 +(byte) play_remove_lines::x +(byte) play_remove_lines::x#1 x zp ZP_BYTE:3 1501.5 +(byte) play_remove_lines::x#2 x zp ZP_BYTE:3 250.25 +(byte) play_remove_lines::y +(byte) play_remove_lines::y#1 y zp ZP_BYTE:2 151.5 +(byte) play_remove_lines::y#8 y zp ZP_BYTE:2 14.428571428571429 +(void()) play_spawn_current() +(byte~) play_spawn_current::$1 reg byte a 202.0 +(byte~) play_spawn_current::$3 $3 zp ZP_BYTE:2 0.18181818181818182 +(label) play_spawn_current::@1 +(label) play_spawn_current::@2 +(label) play_spawn_current::@3 +(label) play_spawn_current::@7 +(label) play_spawn_current::@return +(byte) play_spawn_current::piece_idx +(byte) play_spawn_current::piece_idx#1 reg byte x 202.0 +(byte) play_spawn_current::piece_idx#2 reg byte x 51.5 (byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 playfield = { fill( PLAYFIELD_LINES#0*PLAYFIELD_COLS#0, 0) } (byte*[PLAYFIELD_LINES#0]) playfield_lines (const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 playfield_lines = { fill( PLAYFIELD_LINES#0, 0) } (byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx (const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 playfield_lines_idx = { fill( PLAYFIELD_LINES#0+1, 0) } -(void()) remove_lines() -(label) remove_lines::@1 -(label) remove_lines::@10 -(label) remove_lines::@17 -(label) remove_lines::@2 -(label) remove_lines::@3 -(label) remove_lines::@4 -(label) remove_lines::@5 -(label) remove_lines::@6 -(label) remove_lines::@9 -(label) remove_lines::@return -(byte) remove_lines::c -(byte) remove_lines::c#0 c zp ZP_BYTE:7 600.5999999999999 -(byte) remove_lines::full -(byte) remove_lines::full#2 full zp ZP_BYTE:4 420.59999999999997 -(byte) remove_lines::full#4 full zp ZP_BYTE:4 400.4 -(byte) remove_lines::r -(byte) remove_lines::r#1 reg byte y 161.76923076923077 -(byte) remove_lines::r#2 reg byte y 1552.0 -(byte) remove_lines::r#3 reg byte y 202.0 -(byte) remove_lines::w -(byte) remove_lines::w#1 reg byte x 551.0 -(byte) remove_lines::w#11 reg byte x 134.66666666666666 -(byte) remove_lines::w#12 reg byte x 202.0 -(byte) remove_lines::w#2 reg byte x 202.0 -(byte) remove_lines::w#3 reg byte x 202.0 -(byte) remove_lines::w#4 reg byte x 443.42857142857144 -(byte) remove_lines::w#6 reg byte x 168.33333333333331 -(byte) remove_lines::x -(byte) remove_lines::x#1 x zp ZP_BYTE:3 1501.5 -(byte) remove_lines::x#2 x zp ZP_BYTE:3 250.25 -(byte) remove_lines::y -(byte) remove_lines::y#1 y zp ZP_BYTE:2 151.5 -(byte) remove_lines::y#8 y zp ZP_BYTE:2 14.428571428571429 (void()) render_current() (label) render_current::@1 (label) render_current::@2 @@ -12999,101 +13021,76 @@ FINAL SYMBOL TABLE (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 51.5 -(void()) tables_init() -(byte~) tables_init::$1 reg byte a 22.0 -(label) tables_init::@1 -(label) tables_init::@2 -(label) tables_init::@return -(byte) tables_init::idx -(byte) tables_init::idx#1 idx zp ZP_BYTE:2 7.333333333333333 -(byte) tables_init::idx#2 idx zp ZP_BYTE:2 6.6000000000000005 -(byte) tables_init::j -(byte) tables_init::j#1 reg byte x 16.5 -(byte) tables_init::j#2 reg byte x 7.333333333333333 -(byte*) tables_init::pli -(byte*) tables_init::pli#1 pli zp ZP_WORD:5 5.5 -(byte*) tables_init::pli#2 pli zp ZP_WORD:5 8.25 -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 remove_lines::y#8 remove_lines::y#1 tables_init::idx#2 tables_init::idx#1 render_init::l#4 render_init::l#1 spawn_current::$3 ] -zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 remove_lines::x#2 remove_lines::x#1 lock_current::l#6 lock_current::l#1 ] -reg byte x [ current_ypos#22 current_ypos#71 ] -zp ZP_BYTE:4 [ current_xpos#63 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 remove_lines::full#4 remove_lines::full#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#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 lock_current::playfield_line#0 ] -zp ZP_BYTE:7 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 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 remove_lines::c#0 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 ] +zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 play_remove_lines::y#8 play_remove_lines::y#1 play_init::idx#2 play_init::idx#1 render_init::l#4 render_init::l#1 play_spawn_current::$3 ] +zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::l#6 play_lock_current::l#1 ] +reg byte x [ current_ypos#10 current_ypos#71 ] +zp ZP_BYTE:4 [ current_xpos#48 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +zp ZP_WORD:5 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 play_lock_current::playfield_line#0 ] +zp ZP_BYTE:7 [ current_piece_color#62 current_piece_color#75 current_piece_color#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 play_remove_lines::c#0 keyboard_event_pressed::row_bits#0 ] +zp ZP_BYTE:8 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] +zp ZP_BYTE:9 [ render_current::l#3 render_current::l#1 play_collision::l#6 play_collision::l#1 ] +zp ZP_BYTE:10 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +zp ZP_BYTE:11 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] reg byte x [ render_current::c#2 render_current::c#1 ] reg byte x [ render_playfield::c#2 render_playfield::c#1 ] -reg byte a [ play_move_rotate::return#2 ] -reg byte x [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] -reg byte y [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] -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 a [ play_move_rotate::return#1 ] +reg byte x [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +reg byte y [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] +reg byte x [ play_collision::c#2 play_collision::c#1 ] +reg byte a [ play_collision::return#14 ] +reg byte a [ play_move_leftright::return#1 ] reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -zp ZP_WORD:12 [ current_piece#23 current_piece#76 current_piece#11 current_piece#13 current_piece#71 render_init::$10 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 y [ remove_lines::r#2 remove_lines::r#3 remove_lines::r#1 ] -reg byte x [ remove_lines::w#6 remove_lines::w#4 remove_lines::w#12 remove_lines::w#11 remove_lines::w#1 remove_lines::w#2 remove_lines::w#3 ] -reg byte x [ lock_current::c#2 lock_current::c#1 ] +zp ZP_WORD:12 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 render_init::$10 fill::end#0 ] +zp ZP_BYTE:14 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] +zp ZP_WORD:15 [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] +zp ZP_BYTE:17 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] +zp ZP_BYTE:18 [ current_piece_color#21 current_piece_color#16 current_piece_color#11 current_piece_color#13 ] +reg byte x [ play_move_down::return#2 ] +reg byte x [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] +reg byte x [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] +reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 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 ] -reg byte x [ tables_init::j#2 tables_init::j#1 ] +reg byte x [ play_init::j#2 play_init::j#1 ] reg byte x [ render_init::i#2 render_init::i#1 ] reg byte x [ render_init::c#2 render_init::c#1 ] reg byte x [ fill::val#3 ] 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 [ play_move_down::return#3 ] reg byte a [ main::$10 ] 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 [ play_move_leftright::return#4 ] reg byte a [ main::$11 ] reg byte a [ play_move_rotate::key_event#0 ] -reg byte a [ play_move_rotate::return#0 ] +reg byte a [ play_move_rotate::return#4 ] reg byte a [ main::$12 ] reg byte a [ main::render#3 ] -zp ZP_WORD:22 [ render_current::screen_line#0 collision::playfield_line#0 ] +zp ZP_WORD:22 [ render_current::screen_line#0 play_collision::playfield_line#0 ] reg byte a [ render_current::current_cell#0 ] reg byte a [ render_playfield::$1 ] reg byte a [ play_move_rotate::$2 ] -reg byte a [ collision::return#13 ] +reg byte a [ play_collision::return#13 ] reg byte a [ play_move_rotate::$6 ] reg byte a [ play_move_rotate::$4 ] -zp ZP_BYTE:24 [ collision::i#1 ] -reg byte a [ collision::$7 ] -reg byte a [ collision::return#12 ] +zp ZP_BYTE:24 [ play_collision::i#1 ] +reg byte a [ play_collision::$7 ] +reg byte a [ play_collision::return#12 ] reg byte a [ play_move_leftright::$4 ] -reg byte a [ collision::return#1 ] +reg byte a [ play_collision::return#1 ] reg byte a [ play_move_leftright::$8 ] 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_collision::return#0 ] reg byte a [ play_move_down::$12 ] reg byte a [ sid_rnd::return#2 ] -reg byte a [ spawn_current::$1 ] +reg byte a [ play_spawn_current::$1 ] reg byte a [ sid_rnd::return#0 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] @@ -13114,7 +13111,7 @@ reg byte a [ keyboard_event_scan::$4 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$11 ] reg byte a [ keyboard_matrix_read::return#0 ] -reg byte a [ tables_init::$1 ] +reg byte a [ play_init::$1 ] reg byte a [ render_init::$5 ] @@ -13154,6 +13151,8 @@ Score: 416960 .label SID_VOICE3_CONTROL = $d412 .const SID_CONTROL_NOISE = $80 .label SID_VOICE3_OSC = $d41b + .label PLAYFIELD_SCREEN = $400 + .label PLAYFIELD_CHARSET = $2800 .const PLAYFIELD_LINES = $16 .const PLAYFIELD_COLS = $a .const current_movedown_slow = $32 @@ -13163,33 +13162,31 @@ Score: 416960 .const COLLISION_BOTTOM = 2 .const COLLISION_LEFT = 4 .const COLLISION_RIGHT = 8 - .label SCREEN = $400 - .label CHARSET = $2800 .label keyboard_events_size = $13 + .label current_movedown_counter = 3 .label current_ypos = 2 .label current_xpos = $11 .label current_orientation = $e .label current_piece_gfx = $f .label current_piece = $c .label current_piece_color = $12 - .label current_movedown_counter = 3 - .label current_piece_15 = 5 - .label current_xpos_63 = 4 - .label current_piece_gfx_64 = 5 - .label current_piece_color_67 = 7 + .label current_piece_12 = 5 + .label current_xpos_48 = 4 + .label current_piece_gfx_53 = 5 + .label current_piece_color_62 = 7 .label current_xpos_96 = 4 .label current_piece_gfx_87 = 5 .label current_piece_gfx_88 = 5 .label current_piece_color_75 = 7 .label current_piece_color_76 = 7 + .label current_piece_71 = 5 .label current_piece_72 = 5 .label current_piece_73 = 5 .label current_piece_74 = 5 - .label current_piece_75 = 5 //SEG2 @begin -//SEG3 @23 -//SEG4 kickasm(location (const byte*) CHARSET#0) {{ .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9)) .for (var c=0; c<16; c++) .for (var y=0;y<8; y++) .byte charset.getMulticolorByte(c,y) }} -//SEG5 [2] phi from @23 to @26 [phi:@23->@26] +//SEG3 @14 +//SEG4 kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .var charset = LoadPicture("nes-charset.png", List().add($000000, $ffffff)) .for (var c=0; c<32; c++) .for (var y=0;y<8; y++) .byte charset.getSinglecolorByte(c,y) }} +//SEG5 [2] phi from @14 to @26 [phi:@14->@26] //SEG6 @26 //SEG7 [3] call main //SEG8 [5] phi from @26 to main [phi:@26->main] @@ -13208,61 +13205,61 @@ main: { jsr render_init //SEG16 [9] phi from main::@21 to main::@22 [phi:main::@21->main::@22] //SEG17 main::@22 - //SEG18 [10] call tables_init - //SEG19 [304] phi from main::@22 to tables_init [phi:main::@22->tables_init] - jsr tables_init + //SEG18 [10] call play_init + //SEG19 [304] phi from main::@22 to play_init [phi:main::@22->play_init] + jsr play_init //SEG20 [11] phi from main::@22 to main::@23 [phi:main::@22->main::@23] //SEG21 main::@23 - //SEG22 [12] call spawn_current - //SEG23 [184] phi from main::@23 to spawn_current [phi:main::@23->spawn_current] - jsr spawn_current + //SEG22 [12] call play_spawn_current + //SEG23 [184] phi from main::@23 to play_spawn_current [phi:main::@23->play_spawn_current] + jsr play_spawn_current //SEG24 [13] phi from main::@23 to main::@24 [phi:main::@23->main::@24] //SEG25 main::@24 //SEG26 [14] call render_playfield //SEG27 [72] phi from main::@24 to render_playfield [phi:main::@24->render_playfield] jsr render_playfield //SEG28 main::@25 - //SEG29 [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 + //SEG29 [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#17 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_87 lda current_piece_gfx+1 sta current_piece_gfx_87+1 - //SEG30 [16] (byte~) current_piece_color#75 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 + //SEG30 [16] (byte~) current_piece_color#75 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 lda current_piece_color sta current_piece_color_75 //SEG31 [17] call render_current //SEG32 [52] phi from main::@25 to render_current [phi:main::@25->render_current] - //SEG33 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#75 [phi:main::@25->render_current#0] -- register_copy - //SEG34 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy - //SEG35 [52] phi (byte) current_xpos#63 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 + //SEG33 [52] phi (byte) current_piece_color#62 = (byte~) current_piece_color#75 [phi:main::@25->render_current#0] -- register_copy + //SEG34 [52] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy + //SEG35 [52] phi (byte) current_xpos#48 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 lda #3 - sta current_xpos_63 - //SEG36 [52] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->render_current#3] -- vbuxx=vbuc1 + sta current_xpos_48 + //SEG36 [52] phi (byte) current_ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->render_current#3] -- vbuxx=vbuc1 ldx #0 jsr render_current - //SEG37 [18] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 - ldy spawn_current._3 + //SEG37 [18] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 //SEG38 [19] phi from main::@25 to main::@1 [phi:main::@25->main::@1] - //SEG39 [19] phi (byte) current_movedown_counter#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#0] -- vbuz1=vbuc1 + //SEG39 [19] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#0] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter //SEG40 [19] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#1] -- vbuz1=vbuc1 sta keyboard_events_size - //SEG41 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#15 [phi:main::@25->main::@1#2] -- register_copy - //SEG42 [19] phi (byte) current_ypos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#3] -- vbuz1=vbuc1 + //SEG41 [19] phi (byte) current_piece_color#16 = (byte) current_piece_color#13 [phi:main::@25->main::@1#2] -- register_copy + //SEG42 [19] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#3] -- vbuz1=vbuc1 sta current_ypos - //SEG43 [19] phi (byte) current_xpos#16 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->main::@1#4] -- vbuz1=vbuc1 + //SEG43 [19] phi (byte) current_xpos#11 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->main::@1#4] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG44 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#10 [phi:main::@25->main::@1#5] -- register_copy - //SEG45 [19] phi (byte) current_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 + //SEG44 [19] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#17 [phi:main::@25->main::@1#5] -- register_copy + //SEG45 [19] phi (byte) current_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG46 [19] phi (byte*) current_piece#11 = (byte*~) current_piece#71 [phi:main::@25->main::@1#7] -- register_copy + //SEG46 [19] phi (byte*) current_piece#16 = (byte*~) current_piece#70 [phi:main::@25->main::@1#7] -- register_copy //SEG47 main::@1 //SEG48 main::@4 b4: @@ -13294,11 +13291,11 @@ main: { //SEG62 [28] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 //SEG63 [29] call play_move_down jsr play_move_down - //SEG64 [30] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx + //SEG64 [30] (byte) play_move_down::return#3 ← (byte) play_move_down::return#2 -- vbuaa=vbuxx txa //SEG65 main::@29 - //SEG66 [31] (byte~) main::$10 ← (byte) play_move_down::return#0 - // (byte~) main::$10 = (byte) play_move_down::return#0 // register copy reg byte a + //SEG66 [31] (byte~) main::$10 ← (byte) play_move_down::return#3 + // (byte~) main::$10 = (byte) play_move_down::return#3 // register copy reg byte a //SEG67 [32] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 -- vbuz1=vbuc1_plus_vbuaa clc adc #0 @@ -13307,11 +13304,11 @@ main: { lda key_event //SEG69 [34] call play_move_leftright jsr play_move_leftright - //SEG70 [35] (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 + //SEG70 [35] (byte) play_move_leftright::return#4 ← (byte) play_move_leftright::return#1 + // (byte) play_move_leftright::return#4 = (byte) play_move_leftright::return#1 // register copy reg byte a //SEG71 main::@30 - //SEG72 [36] (byte~) main::$11 ← (byte) play_move_leftright::return#0 - // (byte~) main::$11 = (byte) play_move_leftright::return#0 // register copy reg byte a + //SEG72 [36] (byte~) main::$11 ← (byte) play_move_leftright::return#4 + // (byte~) main::$11 = (byte) play_move_leftright::return#4 // register copy reg byte a //SEG73 [37] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 -- vbuz1=vbuz1_plus_vbuaa clc adc render @@ -13320,11 +13317,11 @@ main: { lda key_event //SEG75 [39] call play_move_rotate jsr play_move_rotate - //SEG76 [40] (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 + //SEG76 [40] (byte) play_move_rotate::return#4 ← (byte) play_move_rotate::return#1 + // (byte) play_move_rotate::return#4 = (byte) play_move_rotate::return#1 // register copy reg byte a //SEG77 main::@31 - //SEG78 [41] (byte~) main::$12 ← (byte) play_move_rotate::return#0 - // (byte~) main::$12 = (byte) play_move_rotate::return#0 // register copy reg byte a + //SEG78 [41] (byte~) main::$12 ← (byte) play_move_rotate::return#4 + // (byte~) main::$12 = (byte) play_move_rotate::return#4 // register copy reg byte a //SEG79 [42] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 -- vbuaa=vbuz1_plus_vbuaa clc adc render @@ -13337,39 +13334,39 @@ main: { //SEG84 [72] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] jsr render_playfield //SEG85 main::@32 - //SEG86 [46] (byte~) current_ypos#71 ← (byte) current_ypos#16 -- vbuxx=vbuz1 + //SEG86 [46] (byte~) current_ypos#71 ← (byte) current_ypos#14 -- vbuxx=vbuz1 ldx current_ypos - //SEG87 [47] (byte~) current_xpos#96 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG87 [47] (byte~) current_xpos#96 ← (byte) current_xpos#20 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_96 - //SEG88 [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + //SEG88 [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#15 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_88 lda current_piece_gfx+1 sta current_piece_gfx_88+1 - //SEG89 [49] (byte~) current_piece_color#76 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 + //SEG89 [49] (byte~) current_piece_color#76 ← (byte) current_piece_color#11 -- vbuz1=vbuz2 lda current_piece_color sta current_piece_color_76 //SEG90 [50] call render_current //SEG91 [52] phi from main::@32 to render_current [phi:main::@32->render_current] - //SEG92 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#76 [phi:main::@32->render_current#0] -- register_copy - //SEG93 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy - //SEG94 [52] phi (byte) current_xpos#63 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy - //SEG95 [52] phi (byte) current_ypos#22 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy + //SEG92 [52] phi (byte) current_piece_color#62 = (byte~) current_piece_color#76 [phi:main::@32->render_current#0] -- register_copy + //SEG93 [52] phi (byte*) current_piece_gfx#53 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy + //SEG94 [52] phi (byte) current_xpos#48 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy + //SEG95 [52] phi (byte) current_ypos#10 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy jsr render_current //SEG96 main::@10 b10: //SEG97 [51] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL //SEG98 [19] phi from main::@10 to main::@1 [phi:main::@10->main::@1] - //SEG99 [19] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy + //SEG99 [19] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:main::@10->main::@1#0] -- register_copy //SEG100 [19] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy - //SEG101 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#2] -- register_copy - //SEG102 [19] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#3] -- register_copy - //SEG103 [19] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#4] -- register_copy - //SEG104 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy - //SEG105 [19] phi (byte) current_orientation#15 = (byte) current_orientation#23 [phi:main::@10->main::@1#6] -- register_copy - //SEG106 [19] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy + //SEG101 [19] phi (byte) current_piece_color#16 = (byte) current_piece_color#11 [phi:main::@10->main::@1#2] -- register_copy + //SEG102 [19] phi (byte) current_ypos#22 = (byte) current_ypos#14 [phi:main::@10->main::@1#3] -- register_copy + //SEG103 [19] phi (byte) current_xpos#11 = (byte) current_xpos#20 [phi:main::@10->main::@1#4] -- register_copy + //SEG104 [19] phi (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#15 [phi:main::@10->main::@1#5] -- register_copy + //SEG105 [19] phi (byte) current_orientation#10 = (byte) current_orientation#19 [phi:main::@10->main::@1#6] -- register_copy + //SEG106 [19] phi (byte*) current_piece#16 = (byte*) current_piece#10 [phi:main::@10->main::@1#7] -- register_copy jmp b4 } //SEG107 render_current @@ -13379,7 +13376,7 @@ render_current: { .label screen_line = $16 .label xpos = $b .label i = $a - //SEG108 [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG108 [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta ypos2 @@ -13407,8 +13404,8 @@ render_current: { sta screen_line lda screen_lines+1,y sta screen_line+1 - //SEG121 [57] (byte) render_current::xpos#0 ← (byte) current_xpos#63 -- vbuz1=vbuz2 - lda current_xpos_63 + //SEG121 [57] (byte) render_current::xpos#0 ← (byte) current_xpos#48 -- vbuz1=vbuz2 + lda current_xpos_48 sta xpos //SEG122 [58] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] //SEG123 [58] 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 @@ -13421,9 +13418,9 @@ render_current: { //SEG129 [58] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy //SEG130 render_current::@3 b3: - //SEG131 [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG131 [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#53 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i - lda (current_piece_gfx_64),y + lda (current_piece_gfx_53),y //SEG132 [60] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 inc i //SEG133 [61] 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 @@ -13435,8 +13432,8 @@ render_current: { cmp #PLAYFIELD_COLS bcs b4 //SEG136 render_current::@8 - //SEG137 [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#67 -- pbuz1_derefidx_vbuz2=vbuz3 - lda current_piece_color_67 + //SEG137 [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#62 -- pbuz1_derefidx_vbuz2=vbuz3 + lda current_piece_color_62 ldy xpos sta (screen_line),y //SEG138 render_current::@4 @@ -13543,9 +13540,9 @@ play_move_rotate: { beq b2 //SEG183 [87] 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: - //SEG184 [87] 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 - //SEG185 [87] 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 - //SEG186 [87] 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 + //SEG184 [87] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG185 [87] phi (byte) current_orientation#19 = (byte) current_orientation#14 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG186 [87] phi (byte) play_move_rotate::return#1 = (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 //SEG187 play_move_rotate::@return breturn: @@ -13553,7 +13550,7 @@ play_move_rotate: { rts //SEG189 play_move_rotate::@2 b2: - //SEG190 [89] (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 + //SEG190 [89] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#14 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 lda #$10 clc adc current_orientation @@ -13564,38 +13561,38 @@ play_move_rotate: { //SEG193 [91] 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 //SEG194 play_move_rotate::@4 b4: - //SEG195 [92] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG195 [92] (byte) play_collision::xpos#3 ← (byte) current_xpos#20 -- vbuz1=vbuz2 lda current_xpos - sta collision.xpos - //SEG196 [93] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + sta play_collision.xpos + //SEG196 [93] (byte) play_collision::ypos#3 ← (byte) current_ypos#14 -- vbuyy=vbuz1 ldy current_ypos - //SEG197 [94] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG197 [94] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG198 [95] (byte*~) current_piece#75 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG198 [95] (byte*~) current_piece#74 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_75 + sta current_piece_74 lda current_piece+1 - sta current_piece_75+1 - //SEG199 [96] call collision - //SEG200 [104] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] - //SEG201 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy - //SEG202 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy - //SEG203 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy - //SEG204 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#75 [phi:play_move_rotate::@4->collision#3] -- register_copy - jsr collision - //SEG205 [97] (byte) collision::return#13 ← (byte) collision::return#14 - // (byte) collision::return#13 = (byte) collision::return#14 // register copy reg byte a + sta current_piece_74+1 + //SEG199 [96] call play_collision + //SEG200 [104] phi from play_move_rotate::@4 to play_collision [phi:play_move_rotate::@4->play_collision] + //SEG201 [104] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#3 [phi:play_move_rotate::@4->play_collision#0] -- register_copy + //SEG202 [104] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#3 [phi:play_move_rotate::@4->play_collision#1] -- register_copy + //SEG203 [104] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#3 [phi:play_move_rotate::@4->play_collision#2] -- register_copy + //SEG204 [104] phi (byte*) current_piece#12 = (byte*~) current_piece#74 [phi:play_move_rotate::@4->play_collision#3] -- register_copy + jsr play_collision + //SEG205 [97] (byte) play_collision::return#13 ← (byte) play_collision::return#14 + // (byte) play_collision::return#13 = (byte) play_collision::return#14 // register copy reg byte a //SEG206 play_move_rotate::@14 - //SEG207 [98] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 - // (byte~) play_move_rotate::$6 = (byte) collision::return#13 // register copy reg byte a + //SEG207 [98] (byte~) play_move_rotate::$6 ← (byte) play_collision::return#13 + // (byte~) play_move_rotate::$6 = (byte) play_collision::return#13 // register copy reg byte a //SEG208 [99] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne b3 //SEG209 play_move_rotate::@11 - //SEG210 [100] (byte) current_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG210 [100] (byte) current_orientation#4 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG211 [101] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 + //SEG211 [101] (byte*) current_piece_gfx#4 ← (byte*) current_piece#10 + (byte) current_orientation#4 -- pbuz1=pbuz2_plus_vbuz3 clc adc current_piece sta current_piece_gfx @@ -13603,14 +13600,14 @@ play_move_rotate: { adc current_piece+1 sta current_piece_gfx+1 //SEG212 [87] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] - //SEG213 [87] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG214 [87] phi (byte) current_orientation#23 = (byte) current_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG215 [87] 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 + //SEG213 [87] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#4 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG214 [87] phi (byte) current_orientation#19 = (byte) current_orientation#4 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG215 [87] phi (byte) play_move_rotate::return#1 = (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 //SEG216 play_move_rotate::@1 b1: - //SEG217 [102] (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 + //SEG217 [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#14 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 lda current_orientation sec sbc #$10 @@ -13619,8 +13616,8 @@ play_move_rotate: { sta orientation jmp b4 } -//SEG219 collision -collision: { +//SEG219 play_collision +play_collision: { .label xpos = 7 .label piece_gfx = 5 .label ypos2 = 8 @@ -13632,7 +13629,7 @@ collision: { .label i_3 = $a .label i_11 = $a .label i_13 = $a - //SEG220 [105] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx + //SEG220 [105] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#12 + (byte) play_collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -13640,133 +13637,133 @@ collision: { lda #0 adc piece_gfx+1 sta piece_gfx+1 - //SEG221 [106] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 + //SEG221 [106] (byte) play_collision::ypos2#0 ← (byte) play_collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 tya asl sta ypos2 - //SEG222 [107] phi from collision to collision::@1 [phi:collision->collision::@1] - //SEG223 [107] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 + //SEG222 [107] phi from play_collision to play_collision::@1 [phi:play_collision->play_collision::@1] + //SEG223 [107] phi (byte) play_collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG224 [107] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 + //SEG224 [107] phi (byte) play_collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision->play_collision::@1#1] -- vbuz1=vbuc1 sta i_3 - //SEG225 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy - //SEG226 collision::@1 + //SEG225 [107] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#0 [phi:play_collision->play_collision::@1#2] -- register_copy + //SEG226 play_collision::@1 b1: - //SEG227 [108] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG227 [108] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_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 - //SEG228 [109] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 + //SEG228 [109] (byte~) play_collision::col#9 ← (byte) play_collision::xpos#5 -- vbuz1=vbuz2 lda xpos sta col - //SEG229 [110] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] - //SEG230 [110] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuxx=vbuc1 + //SEG229 [110] phi from play_collision::@1 to play_collision::@2 [phi:play_collision::@1->play_collision::@2] + //SEG230 [110] phi (byte) play_collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_collision::@1->play_collision::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG231 [110] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy - //SEG232 [110] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy - //SEG233 collision::@2 + //SEG231 [110] phi (byte) play_collision::col#2 = (byte~) play_collision::col#9 [phi:play_collision::@1->play_collision::@2#1] -- register_copy + //SEG232 [110] phi (byte) play_collision::i#2 = (byte) play_collision::i#3 [phi:play_collision::@1->play_collision::@2#2] -- register_copy + //SEG233 play_collision::@2 b2: - //SEG234 [111] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG234 [111] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG235 [112] 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 + //SEG235 [112] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 - //SEG236 collision::@8 - //SEG237 [113] 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 + //SEG236 play_collision::@8 + //SEG237 [113] if((byte) play_collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto play_collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG238 [114] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] - //SEG239 [114] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuaa=vbuc1 + //SEG238 [114] phi from play_collision::@8 to play_collision::@return [phi:play_collision::@8->play_collision::@return] + //SEG239 [114] phi (byte) play_collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:play_collision::@8->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM - //SEG240 collision::@return + //SEG240 play_collision::@return breturn: //SEG241 [115] return rts - //SEG242 collision::@4 + //SEG242 play_collision::@4 b4: - //SEG243 [116] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG243 [116] (byte~) play_collision::$7 ← (byte) play_collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and col - //SEG244 [117] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuaa_eq_0_then_la1 + //SEG244 [117] if((byte~) play_collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG245 [114] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] - //SEG246 [114] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuaa=vbuc1 + //SEG245 [114] phi from play_collision::@4 to play_collision::@return [phi:play_collision::@4->play_collision::@return] + //SEG246 [114] phi (byte) play_collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:play_collision::@4->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT jmp breturn - //SEG247 collision::@5 + //SEG247 play_collision::@5 b5: - //SEG248 [118] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG248 [118] if((byte) play_collision::col#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG249 [114] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] - //SEG250 [114] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuaa=vbuc1 + //SEG249 [114] phi from play_collision::@5 to play_collision::@return [phi:play_collision::@5->play_collision::@return] + //SEG250 [114] phi (byte) play_collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:play_collision::@5->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT jmp breturn - //SEG251 collision::@6 + //SEG251 play_collision::@6 b6: - //SEG252 [119] 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 + //SEG252 [119] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG253 [114] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] - //SEG254 [114] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuaa=vbuc1 + //SEG253 [114] phi from play_collision::@6 to play_collision::@return [phi:play_collision::@6->play_collision::@return] + //SEG254 [114] phi (byte) play_collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:play_collision::@6->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD jmp breturn - //SEG255 collision::@3 + //SEG255 play_collision::@3 b3: - //SEG256 [120] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG256 [120] (byte) play_collision::col#1 ← ++ (byte) play_collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG257 [121] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuxx=_inc_vbuxx + //SEG257 [121] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG258 [122] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuxx_neq_vbuc1_then_la1 + //SEG258 [122] if((byte) play_collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@21 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b21 - //SEG259 collision::@17 - //SEG260 [123] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG259 play_collision::@17 + //SEG260 [123] (byte) play_collision::ypos2#1 ← (byte) play_collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG261 [124] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG261 [124] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG262 [125] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG262 [125] if((byte) play_collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG263 [114] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] - //SEG264 [114] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuaa=vbuc1 + //SEG263 [114] phi from play_collision::@17 to play_collision::@return [phi:play_collision::@17->play_collision::@return] + //SEG264 [114] phi (byte) play_collision::return#14 = (const byte) COLLISION_NONE#0 [phi:play_collision::@17->play_collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE jmp breturn - //SEG265 collision::@20 + //SEG265 play_collision::@20 b20: - //SEG266 [126] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG266 [126] (byte~) play_collision::i#11 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG267 [107] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] - //SEG268 [107] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy - //SEG269 [107] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy - //SEG270 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy + //SEG267 [107] phi from play_collision::@20 to play_collision::@1 [phi:play_collision::@20->play_collision::@1] + //SEG268 [107] phi (byte) play_collision::l#6 = (byte) play_collision::l#1 [phi:play_collision::@20->play_collision::@1#0] -- register_copy + //SEG269 [107] phi (byte) play_collision::i#3 = (byte~) play_collision::i#11 [phi:play_collision::@20->play_collision::@1#1] -- register_copy + //SEG270 [107] phi (byte) play_collision::ypos2#2 = (byte) play_collision::ypos2#1 [phi:play_collision::@20->play_collision::@1#2] -- register_copy jmp b1 - //SEG271 collision::@21 + //SEG271 play_collision::@21 b21: - //SEG272 [127] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG272 [127] (byte~) play_collision::i#13 ← (byte) play_collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG273 [110] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] - //SEG274 [110] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy - //SEG275 [110] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy - //SEG276 [110] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy + //SEG273 [110] phi from play_collision::@21 to play_collision::@2 [phi:play_collision::@21->play_collision::@2] + //SEG274 [110] phi (byte) play_collision::c#2 = (byte) play_collision::c#1 [phi:play_collision::@21->play_collision::@2#0] -- register_copy + //SEG275 [110] phi (byte) play_collision::col#2 = (byte) play_collision::col#1 [phi:play_collision::@21->play_collision::@2#1] -- register_copy + //SEG276 [110] phi (byte) play_collision::i#2 = (byte~) play_collision::i#13 [phi:play_collision::@21->play_collision::@2#2] -- register_copy jmp b2 } //SEG277 play_move_leftright @@ -13779,47 +13776,47 @@ play_move_leftright: { cmp #KEY_DOT bne b3 //SEG281 play_move_leftright::@7 - //SEG282 [130] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG282 [130] (byte) play_collision::xpos#2 ← (byte) current_xpos#16 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny - sty collision.xpos - //SEG283 [131] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + sty play_collision.xpos + //SEG283 [131] (byte) play_collision::ypos#2 ← (byte) current_ypos#14 -- vbuyy=vbuz1 ldy current_ypos - //SEG284 [132] (byte) collision::orientation#2 ← (byte) current_orientation#18 -- vbuxx=vbuz1 + //SEG284 [132] (byte) play_collision::orientation#2 ← (byte) current_orientation#14 -- vbuxx=vbuz1 ldx current_orientation - //SEG285 [133] (byte*~) current_piece#74 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG285 [133] (byte*~) current_piece#73 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_74 + sta current_piece_73 lda current_piece+1 - sta current_piece_74+1 - //SEG286 [134] call collision - //SEG287 [104] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] - //SEG288 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy - //SEG289 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy - //SEG290 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy - //SEG291 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#74 [phi:play_move_leftright::@7->collision#3] -- register_copy - jsr collision - //SEG292 [135] (byte) collision::return#12 ← (byte) collision::return#14 - // (byte) collision::return#12 = (byte) collision::return#14 // register copy reg byte a + sta current_piece_73+1 + //SEG286 [134] call play_collision + //SEG287 [104] phi from play_move_leftright::@7 to play_collision [phi:play_move_leftright::@7->play_collision] + //SEG288 [104] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#2 [phi:play_move_leftright::@7->play_collision#0] -- register_copy + //SEG289 [104] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#2 [phi:play_move_leftright::@7->play_collision#1] -- register_copy + //SEG290 [104] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#2 [phi:play_move_leftright::@7->play_collision#2] -- register_copy + //SEG291 [104] phi (byte*) current_piece#12 = (byte*~) current_piece#73 [phi:play_move_leftright::@7->play_collision#3] -- register_copy + jsr play_collision + //SEG292 [135] (byte) play_collision::return#12 ← (byte) play_collision::return#14 + // (byte) play_collision::return#12 = (byte) play_collision::return#14 // register copy reg byte a //SEG293 play_move_leftright::@15 - //SEG294 [136] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 - // (byte~) play_move_leftright::$4 = (byte) collision::return#12 // register copy reg byte a + //SEG294 [136] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#12 + // (byte~) play_move_leftright::$4 = (byte) play_collision::return#12 // register copy reg byte a //SEG295 [137] 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 //SEG296 play_move_leftright::@8 - //SEG297 [138] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 + //SEG297 [138] (byte) current_xpos#3 ← ++ (byte) current_xpos#16 -- vbuz1=_inc_vbuz1 inc current_xpos //SEG298 [139] 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: - //SEG299 [139] 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 - //SEG300 [139] 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 + //SEG299 [139] phi (byte) current_xpos#20 = (byte) current_xpos#5 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG300 [139] phi (byte) play_move_leftright::return#1 = (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 //SEG301 [139] 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: - //SEG302 [139] 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 - //SEG303 [139] 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 + //SEG302 [139] phi (byte) current_xpos#20 = (byte) current_xpos#16 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG303 [139] phi (byte) play_move_leftright::return#1 = (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 //SEG304 play_move_leftright::@return breturn: @@ -13827,42 +13824,42 @@ play_move_leftright: { rts //SEG306 play_move_leftright::@1 b1: - //SEG307 [141] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG307 [141] (byte) play_collision::xpos#1 ← (byte) current_xpos#16 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex - stx collision.xpos - //SEG308 [142] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + stx play_collision.xpos + //SEG308 [142] (byte) play_collision::ypos#1 ← (byte) current_ypos#14 -- vbuyy=vbuz1 ldy current_ypos - //SEG309 [143] (byte) collision::orientation#1 ← (byte) current_orientation#18 -- vbuxx=vbuz1 + //SEG309 [143] (byte) play_collision::orientation#1 ← (byte) current_orientation#14 -- vbuxx=vbuz1 ldx current_orientation - //SEG310 [144] (byte*~) current_piece#73 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG310 [144] (byte*~) current_piece#72 ← (byte*) current_piece#10 -- pbuz1=pbuz2 lda current_piece - sta current_piece_73 + sta current_piece_72 lda current_piece+1 - sta current_piece_73+1 - //SEG311 [145] call collision - //SEG312 [104] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] - //SEG313 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy - //SEG314 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy - //SEG315 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy - //SEG316 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#73 [phi:play_move_leftright::@1->collision#3] -- register_copy - jsr collision - //SEG317 [146] (byte) collision::return#1 ← (byte) collision::return#14 - // (byte) collision::return#1 = (byte) collision::return#14 // register copy reg byte a + sta current_piece_72+1 + //SEG311 [145] call play_collision + //SEG312 [104] phi from play_move_leftright::@1 to play_collision [phi:play_move_leftright::@1->play_collision] + //SEG313 [104] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#1 [phi:play_move_leftright::@1->play_collision#0] -- register_copy + //SEG314 [104] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#1 [phi:play_move_leftright::@1->play_collision#1] -- register_copy + //SEG315 [104] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#1 [phi:play_move_leftright::@1->play_collision#2] -- register_copy + //SEG316 [104] phi (byte*) current_piece#12 = (byte*~) current_piece#72 [phi:play_move_leftright::@1->play_collision#3] -- register_copy + jsr play_collision + //SEG317 [146] (byte) play_collision::return#1 ← (byte) play_collision::return#14 + // (byte) play_collision::return#1 = (byte) play_collision::return#14 // register copy reg byte a //SEG318 play_move_leftright::@14 - //SEG319 [147] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 - // (byte~) play_move_leftright::$8 = (byte) collision::return#1 // register copy reg byte a + //SEG319 [147] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1 + // (byte~) play_move_leftright::$8 = (byte) play_collision::return#1 // register copy reg byte a //SEG320 [148] 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 //SEG321 play_move_leftright::@11 - //SEG322 [149] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 + //SEG322 [149] (byte) current_xpos#5 ← -- (byte) current_xpos#16 -- vbuz1=_dec_vbuz1 dec current_xpos jmp b2 } //SEG323 play_move_down play_move_down: { - //SEG324 [150] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 + //SEG324 [150] (byte) current_movedown_counter#1 ← ++ (byte) current_movedown_counter#12 -- vbuz1=_inc_vbuz1 inc current_movedown_counter //SEG325 [151] 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 @@ -13894,7 +13891,7 @@ play_move_down: { cmp #0 beq b2 //SEG340 play_move_down::@9 - //SEG341 [158] if((byte) current_movedown_counter#10<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG341 [158] if((byte) current_movedown_counter#1<(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 @@ -13905,7 +13902,7 @@ play_move_down: { //SEG345 [160] 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 //SEG346 play_move_down::@2 b2: - //SEG347 [161] if((byte) current_movedown_counter#10<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG347 [161] if((byte) current_movedown_counter#1<(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 @@ -13920,91 +13917,91 @@ play_move_down: { cpx #0 beq b5 //SEG354 play_move_down::@12 - //SEG355 [165] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 + //SEG355 [165] (byte) play_collision::ypos#0 ← (byte) current_ypos#22 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 ldy current_ypos iny - //SEG356 [166] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG356 [166] (byte) play_collision::xpos#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 lda current_xpos - sta collision.xpos - //SEG357 [167] (byte) collision::orientation#0 ← (byte) current_orientation#15 -- vbuxx=vbuz1 + sta play_collision.xpos + //SEG357 [167] (byte) play_collision::orientation#0 ← (byte) current_orientation#10 -- vbuxx=vbuz1 ldx current_orientation - //SEG358 [168] (byte*~) current_piece#72 ← (byte*) current_piece#11 -- pbuz1=pbuz2 + //SEG358 [168] (byte*~) current_piece#71 ← (byte*) current_piece#16 -- pbuz1=pbuz2 lda current_piece - sta current_piece_72 + sta current_piece_71 lda current_piece+1 - sta current_piece_72+1 - //SEG359 [169] call collision - //SEG360 [104] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] - //SEG361 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy - //SEG362 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy - //SEG363 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy - //SEG364 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_down::@12->collision#3] -- register_copy - jsr collision - //SEG365 [170] (byte) collision::return#0 ← (byte) collision::return#14 - // (byte) collision::return#0 = (byte) collision::return#14 // register copy reg byte a + sta current_piece_71+1 + //SEG359 [169] call play_collision + //SEG360 [104] phi from play_move_down::@12 to play_collision [phi:play_move_down::@12->play_collision] + //SEG361 [104] phi (byte) play_collision::xpos#5 = (byte) play_collision::xpos#0 [phi:play_move_down::@12->play_collision#0] -- register_copy + //SEG362 [104] phi (byte) play_collision::ypos#4 = (byte) play_collision::ypos#0 [phi:play_move_down::@12->play_collision#1] -- register_copy + //SEG363 [104] phi (byte) play_collision::orientation#4 = (byte) play_collision::orientation#0 [phi:play_move_down::@12->play_collision#2] -- register_copy + //SEG364 [104] phi (byte*) current_piece#12 = (byte*~) current_piece#71 [phi:play_move_down::@12->play_collision#3] -- register_copy + jsr play_collision + //SEG365 [170] (byte) play_collision::return#0 ← (byte) play_collision::return#14 + // (byte) play_collision::return#0 = (byte) play_collision::return#14 // register copy reg byte a //SEG366 play_move_down::@18 - //SEG367 [171] (byte~) play_move_down::$12 ← (byte) collision::return#0 - // (byte~) play_move_down::$12 = (byte) collision::return#0 // register copy reg byte a + //SEG367 [171] (byte~) play_move_down::$12 ← (byte) play_collision::return#0 + // (byte~) play_move_down::$12 = (byte) play_collision::return#0 // register copy reg byte a //SEG368 [172] 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 //SEG369 [173] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] //SEG370 play_move_down::@13 - //SEG371 [174] call lock_current - jsr lock_current + //SEG371 [174] call play_lock_current + jsr play_lock_current //SEG372 [175] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] //SEG373 play_move_down::@19 - //SEG374 [176] call remove_lines - //SEG375 [198] phi from play_move_down::@19 to remove_lines [phi:play_move_down::@19->remove_lines] - jsr remove_lines + //SEG374 [176] call play_remove_lines + //SEG375 [198] phi from play_move_down::@19 to play_remove_lines [phi:play_move_down::@19->play_remove_lines] + jsr play_remove_lines //SEG376 [177] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] //SEG377 play_move_down::@20 - //SEG378 [178] call spawn_current - //SEG379 [184] phi from play_move_down::@20 to spawn_current [phi:play_move_down::@20->spawn_current] - jsr spawn_current - //SEG380 [179] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 - ldy spawn_current._3 + //SEG378 [178] call play_spawn_current + //SEG379 [184] phi from play_move_down::@20 to play_spawn_current [phi:play_move_down::@20->play_spawn_current] + jsr play_spawn_current + //SEG380 [179] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + ldy play_spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 //SEG381 [180] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] - //SEG382 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#15 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy - //SEG383 [180] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 + //SEG382 [180] phi (byte) current_piece_color#21 = (byte) current_piece_color#13 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy + //SEG383 [180] phi (byte) current_xpos#34 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG384 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#10 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy - //SEG385 [180] phi (byte) current_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 + //SEG384 [180] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#17 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy + //SEG385 [180] phi (byte) current_orientation#29 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG386 [180] phi (byte*) current_piece#23 = (byte*~) current_piece#76 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy - //SEG387 [180] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 + //SEG386 [180] phi (byte*) current_piece#20 = (byte*~) current_piece#75 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy + //SEG387 [180] phi (byte) current_ypos#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 sta current_ypos //SEG388 play_move_down::@7 b7: //SEG389 [181] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] - //SEG390 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG391 [181] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG392 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG393 [181] phi (byte) current_orientation#18 = (byte) current_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG394 [181] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG395 [181] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG396 [181] 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 + //SEG390 [181] phi (byte) current_piece_color#11 = (byte) current_piece_color#21 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG391 [181] phi (byte) current_xpos#16 = (byte) current_xpos#34 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG392 [181] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#27 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG393 [181] phi (byte) current_orientation#14 = (byte) current_orientation#29 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG394 [181] phi (byte*) current_piece#10 = (byte*) current_piece#20 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG395 [181] phi (byte) current_ypos#14 = (byte) current_ypos#30 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG396 [181] phi (byte) current_movedown_counter#10 = (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 - //SEG397 [181] 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 + //SEG397 [181] phi (byte) play_move_down::return#2 = (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 //SEG398 [181] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] b5: - //SEG399 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG400 [181] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG401 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG402 [181] phi (byte) current_orientation#18 = (byte) current_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG403 [181] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG404 [181] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG405 [181] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG406 [181] 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 + //SEG399 [181] phi (byte) current_piece_color#11 = (byte) current_piece_color#16 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG400 [181] phi (byte) current_xpos#16 = (byte) current_xpos#11 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG401 [181] phi (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#10 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG402 [181] phi (byte) current_orientation#14 = (byte) current_orientation#10 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG403 [181] phi (byte*) current_piece#10 = (byte*) current_piece#16 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG404 [181] phi (byte) current_ypos#14 = (byte) current_ypos#22 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG405 [181] phi (byte) current_movedown_counter#10 = (byte) current_movedown_counter#1 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG406 [181] phi (byte) play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuxx=vbuc1 ldx #0 //SEG407 play_move_down::@return breturn: @@ -14012,60 +14009,60 @@ play_move_down: { rts //SEG409 play_move_down::@6 b6: - //SEG410 [183] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 + //SEG410 [183] (byte) current_ypos#1 ← ++ (byte) current_ypos#22 -- vbuz1=_inc_vbuz1 inc current_ypos //SEG411 [180] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] - //SEG412 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG413 [180] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG414 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG415 [180] phi (byte) current_orientation#33 = (byte) current_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG416 [180] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG417 [180] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG412 [180] phi (byte) current_piece_color#21 = (byte) current_piece_color#16 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG413 [180] phi (byte) current_xpos#34 = (byte) current_xpos#11 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG414 [180] phi (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#10 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG415 [180] phi (byte) current_orientation#29 = (byte) current_orientation#10 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG416 [180] phi (byte*) current_piece#20 = (byte*) current_piece#16 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG417 [180] phi (byte) current_ypos#30 = (byte) current_ypos#1 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG418 spawn_current -spawn_current: { +//SEG418 play_spawn_current +play_spawn_current: { .label _3 = 2 - //SEG419 [185] phi from spawn_current to spawn_current::@1 [phi:spawn_current->spawn_current::@1] - //SEG420 [185] 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 + //SEG419 [185] phi from play_spawn_current to play_spawn_current::@1 [phi:play_spawn_current->play_spawn_current::@1] + //SEG420 [185] phi (byte) play_spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:play_spawn_current->play_spawn_current::@1#0] -- vbuxx=vbuc1 ldx #7 - //SEG421 spawn_current::@1 + //SEG421 play_spawn_current::@1 b1: - //SEG422 [186] 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 + //SEG422 [186] if((byte) play_spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto play_spawn_current::@2 -- vbuxx_eq_vbuc1_then_la1 cpx #7 beq b2 - //SEG423 spawn_current::@3 - //SEG424 [187] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG423 play_spawn_current::@3 + //SEG424 [187] (byte~) play_spawn_current::$3 ← (byte) play_spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta _3 - //SEG425 [188] (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 + //SEG425 [188] (byte*) current_piece_gfx#17 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_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 - //SEG426 [189] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG426 [189] (byte) current_piece_color#13 ← *((const byte[]) PIECES_COLORS#0 + (byte) play_spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_COLORS,x sta current_piece_color - //SEG427 spawn_current::@return + //SEG427 play_spawn_current::@return //SEG428 [190] return rts - //SEG429 [191] phi from spawn_current::@1 to spawn_current::@2 [phi:spawn_current::@1->spawn_current::@2] - //SEG430 spawn_current::@2 + //SEG429 [191] phi from play_spawn_current::@1 to play_spawn_current::@2 [phi:play_spawn_current::@1->play_spawn_current::@2] + //SEG430 play_spawn_current::@2 b2: //SEG431 [192] call sid_rnd jsr sid_rnd //SEG432 [193] (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 - //SEG433 spawn_current::@7 - //SEG434 [194] (byte~) spawn_current::$1 ← (byte) sid_rnd::return#2 - // (byte~) spawn_current::$1 = (byte) sid_rnd::return#2 // register copy reg byte a - //SEG435 [195] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 + //SEG433 play_spawn_current::@7 + //SEG434 [194] (byte~) play_spawn_current::$1 ← (byte) sid_rnd::return#2 + // (byte~) play_spawn_current::$1 = (byte) sid_rnd::return#2 // register copy reg byte a + //SEG435 [195] (byte) play_spawn_current::piece_idx#1 ← (byte~) play_spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 and #7 tax - //SEG436 [185] phi from spawn_current::@7 to spawn_current::@1 [phi:spawn_current::@7->spawn_current::@1] - //SEG437 [185] phi (byte) spawn_current::piece_idx#2 = (byte) spawn_current::piece_idx#1 [phi:spawn_current::@7->spawn_current::@1#0] -- register_copy + //SEG436 [185] phi from play_spawn_current::@7 to play_spawn_current::@1 [phi:play_spawn_current::@7->play_spawn_current::@1] + //SEG437 [185] phi (byte) play_spawn_current::piece_idx#2 = (byte) play_spawn_current::piece_idx#1 [phi:play_spawn_current::@7->play_spawn_current::@1#0] -- register_copy jmp b1 } //SEG438 sid_rnd @@ -14076,113 +14073,113 @@ sid_rnd: { //SEG441 [197] return rts } -//SEG442 remove_lines -remove_lines: { +//SEG442 play_remove_lines +play_remove_lines: { .label c = 7 .label x = 3 .label y = 2 .label full = 4 - //SEG443 [199] phi from remove_lines to remove_lines::@1 [phi:remove_lines->remove_lines::@1] - //SEG444 [199] phi (byte) remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines->remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG443 [199] phi from play_remove_lines to play_remove_lines::@1 [phi:play_remove_lines->play_remove_lines::@1] + //SEG444 [199] phi (byte) play_remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines->play_remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG445 [199] phi (byte) remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#1] -- vbuxx=vbuc1 + //SEG445 [199] phi (byte) play_remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#1] -- vbuxx=vbuc1 ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG446 [199] phi (byte) remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#2] -- vbuyy=vbuc1 + //SEG446 [199] phi (byte) play_remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines->play_remove_lines::@1#2] -- vbuyy=vbuc1 ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG447 [199] phi from remove_lines::@4 to remove_lines::@1 [phi:remove_lines::@4->remove_lines::@1] - //SEG448 [199] phi (byte) remove_lines::y#8 = (byte) remove_lines::y#1 [phi:remove_lines::@4->remove_lines::@1#0] -- register_copy - //SEG449 [199] phi (byte) remove_lines::w#12 = (byte) remove_lines::w#11 [phi:remove_lines::@4->remove_lines::@1#1] -- register_copy - //SEG450 [199] phi (byte) remove_lines::r#3 = (byte) remove_lines::r#1 [phi:remove_lines::@4->remove_lines::@1#2] -- register_copy - //SEG451 remove_lines::@1 + //SEG447 [199] phi from play_remove_lines::@4 to play_remove_lines::@1 [phi:play_remove_lines::@4->play_remove_lines::@1] + //SEG448 [199] phi (byte) play_remove_lines::y#8 = (byte) play_remove_lines::y#1 [phi:play_remove_lines::@4->play_remove_lines::@1#0] -- register_copy + //SEG449 [199] phi (byte) play_remove_lines::w#12 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4->play_remove_lines::@1#1] -- register_copy + //SEG450 [199] phi (byte) play_remove_lines::r#3 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@4->play_remove_lines::@1#2] -- register_copy + //SEG451 play_remove_lines::@1 b1: - //SEG452 [200] phi from remove_lines::@1 to remove_lines::@2 [phi:remove_lines::@1->remove_lines::@2] - //SEG453 [200] phi (byte) remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines::@1->remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG452 [200] phi from play_remove_lines::@1 to play_remove_lines::@2 [phi:play_remove_lines::@1->play_remove_lines::@2] + //SEG453 [200] phi (byte) play_remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_remove_lines::@1->play_remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG454 [200] phi (byte) remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@1->remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG454 [200] phi (byte) play_remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@1->play_remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG455 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#12 [phi:remove_lines::@1->remove_lines::@2#2] -- register_copy - //SEG456 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#3 [phi:remove_lines::@1->remove_lines::@2#3] -- register_copy - //SEG457 [200] phi from remove_lines::@3 to remove_lines::@2 [phi:remove_lines::@3->remove_lines::@2] - //SEG458 [200] phi (byte) remove_lines::full#4 = (byte) remove_lines::full#2 [phi:remove_lines::@3->remove_lines::@2#0] -- register_copy - //SEG459 [200] phi (byte) remove_lines::x#2 = (byte) remove_lines::x#1 [phi:remove_lines::@3->remove_lines::@2#1] -- register_copy - //SEG460 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#1 [phi:remove_lines::@3->remove_lines::@2#2] -- register_copy - //SEG461 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#1 [phi:remove_lines::@3->remove_lines::@2#3] -- register_copy - //SEG462 remove_lines::@2 + //SEG455 [200] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#12 [phi:play_remove_lines::@1->play_remove_lines::@2#2] -- register_copy + //SEG456 [200] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#3 [phi:play_remove_lines::@1->play_remove_lines::@2#3] -- register_copy + //SEG457 [200] phi from play_remove_lines::@3 to play_remove_lines::@2 [phi:play_remove_lines::@3->play_remove_lines::@2] + //SEG458 [200] phi (byte) play_remove_lines::full#4 = (byte) play_remove_lines::full#2 [phi:play_remove_lines::@3->play_remove_lines::@2#0] -- register_copy + //SEG459 [200] phi (byte) play_remove_lines::x#2 = (byte) play_remove_lines::x#1 [phi:play_remove_lines::@3->play_remove_lines::@2#1] -- register_copy + //SEG460 [200] phi (byte) play_remove_lines::w#4 = (byte) play_remove_lines::w#1 [phi:play_remove_lines::@3->play_remove_lines::@2#2] -- register_copy + //SEG461 [200] phi (byte) play_remove_lines::r#2 = (byte) play_remove_lines::r#1 [phi:play_remove_lines::@3->play_remove_lines::@2#3] -- register_copy + //SEG462 play_remove_lines::@2 b2: - //SEG463 [201] (byte) remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG463 [201] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy lda playfield,y sta c - //SEG464 [202] (byte) remove_lines::r#1 ← -- (byte) remove_lines::r#2 -- vbuyy=_dec_vbuyy + //SEG464 [202] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2 -- vbuyy=_dec_vbuyy dey - //SEG465 [203] if((byte) remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@17 -- vbuz1_neq_0_then_la1 + //SEG465 [203] if((byte) play_remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_remove_lines::@17 -- vbuz1_neq_0_then_la1 cmp #0 bne b3 - //SEG466 [204] phi from remove_lines::@2 to remove_lines::@3 [phi:remove_lines::@2->remove_lines::@3] - //SEG467 [204] phi (byte) remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@2->remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG466 [204] phi from play_remove_lines::@2 to play_remove_lines::@3 [phi:play_remove_lines::@2->play_remove_lines::@3] + //SEG467 [204] phi (byte) play_remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_remove_lines::@2->play_remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full - //SEG468 remove_lines::@3 + //SEG468 play_remove_lines::@3 b3: - //SEG469 [205] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#4) ← (byte) remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG469 [205] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda c sta playfield,x - //SEG470 [206] (byte) remove_lines::w#1 ← -- (byte) remove_lines::w#4 -- vbuxx=_dec_vbuxx + //SEG470 [206] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4 -- vbuxx=_dec_vbuxx dex - //SEG471 [207] (byte) remove_lines::x#1 ← ++ (byte) remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG471 [207] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG472 [208] if((byte) remove_lines::x#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 remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG472 [208] if((byte) play_remove_lines::x#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 play_remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #PLAYFIELD_COLS-1+1 bne b2 - //SEG473 remove_lines::@9 - //SEG474 [209] if((byte) remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG473 play_remove_lines::@9 + //SEG474 [209] if((byte) play_remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto play_remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 lda full cmp #1 bne b4 - //SEG475 remove_lines::@10 - //SEG476 [210] (byte) remove_lines::w#2 ← (byte) remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG475 play_remove_lines::@10 + //SEG476 [210] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 txa clc adc #PLAYFIELD_COLS tax - //SEG477 [211] phi from remove_lines::@10 remove_lines::@9 to remove_lines::@4 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4] - //SEG478 [211] phi (byte) remove_lines::w#11 = (byte) remove_lines::w#2 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4#0] -- register_copy - //SEG479 remove_lines::@4 + //SEG477 [211] phi from play_remove_lines::@10 play_remove_lines::@9 to play_remove_lines::@4 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4] + //SEG478 [211] phi (byte) play_remove_lines::w#11 = (byte) play_remove_lines::w#2 [phi:play_remove_lines::@10/play_remove_lines::@9->play_remove_lines::@4#0] -- register_copy + //SEG479 play_remove_lines::@4 b4: - //SEG480 [212] (byte) remove_lines::y#1 ← ++ (byte) remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG480 [212] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG481 [213] if((byte) remove_lines::y#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 remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG481 [213] if((byte) play_remove_lines::y#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 play_remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #PLAYFIELD_LINES-1+1 bne b1 - //SEG482 [214] phi from remove_lines::@4 remove_lines::@6 to remove_lines::@5 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5] - //SEG483 [214] phi (byte) remove_lines::w#6 = (byte) remove_lines::w#11 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5#0] -- register_copy - //SEG484 remove_lines::@5 + //SEG482 [214] phi from play_remove_lines::@4 play_remove_lines::@6 to play_remove_lines::@5 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5] + //SEG483 [214] phi (byte) play_remove_lines::w#6 = (byte) play_remove_lines::w#11 [phi:play_remove_lines::@4/play_remove_lines::@6->play_remove_lines::@5#0] -- register_copy + //SEG484 play_remove_lines::@5 b5: - //SEG485 [215] if((byte) remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG485 [215] if((byte) play_remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto play_remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b6 - //SEG486 remove_lines::@return + //SEG486 play_remove_lines::@return //SEG487 [216] return rts - //SEG488 remove_lines::@6 + //SEG488 play_remove_lines::@6 b6: - //SEG489 [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG489 [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta playfield,x - //SEG490 [218] (byte) remove_lines::w#3 ← -- (byte) remove_lines::w#6 -- vbuxx=_dec_vbuxx + //SEG490 [218] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6 -- vbuxx=_dec_vbuxx dex jmp b5 - //SEG491 [219] phi from remove_lines::@2 to remove_lines::@17 [phi:remove_lines::@2->remove_lines::@17] - //SEG492 remove_lines::@17 - //SEG493 [204] phi from remove_lines::@17 to remove_lines::@3 [phi:remove_lines::@17->remove_lines::@3] - //SEG494 [204] phi (byte) remove_lines::full#2 = (byte) remove_lines::full#4 [phi:remove_lines::@17->remove_lines::@3#0] -- register_copy + //SEG491 [219] phi from play_remove_lines::@2 to play_remove_lines::@17 [phi:play_remove_lines::@2->play_remove_lines::@17] + //SEG492 play_remove_lines::@17 + //SEG493 [204] phi from play_remove_lines::@17 to play_remove_lines::@3 [phi:play_remove_lines::@17->play_remove_lines::@3] + //SEG494 [204] phi (byte) play_remove_lines::full#2 = (byte) play_remove_lines::full#4 [phi:play_remove_lines::@17->play_remove_lines::@3#0] -- register_copy } -//SEG495 lock_current -lock_current: { +//SEG495 play_lock_current +play_lock_current: { .label ypos2 = 2 .label playfield_line = 5 .label col = 7 @@ -14192,90 +14189,90 @@ lock_current: { .label i_3 = 4 .label i_7 = 4 .label i_9 = 4 - //SEG496 [220] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG496 [220] (byte) play_lock_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl ypos2 - //SEG497 [221] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] - //SEG498 [221] 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 + //SEG497 [221] phi from play_lock_current to play_lock_current::@1 [phi:play_lock_current->play_lock_current::@1] + //SEG498 [221] phi (byte) play_lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG499 [221] 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 + //SEG499 [221] phi (byte) play_lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current->play_lock_current::@1#1] -- vbuz1=vbuc1 sta i_3 - //SEG500 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy - //SEG501 lock_current::@1 + //SEG500 [221] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#0 [phi:play_lock_current->play_lock_current::@1#2] -- register_copy + //SEG501 play_lock_current::@1 b1: - //SEG502 [222] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG502 [222] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) play_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 - //SEG503 [223] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG503 [223] (byte) play_lock_current::col#0 ← (byte) current_xpos#11 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG504 [224] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] - //SEG505 [224] 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 + //SEG504 [224] phi from play_lock_current::@1 to play_lock_current::@2 [phi:play_lock_current::@1->play_lock_current::@2] + //SEG505 [224] phi (byte) play_lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_lock_current::@1->play_lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG506 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy - //SEG507 [224] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy - //SEG508 lock_current::@2 + //SEG506 [224] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#0 [phi:play_lock_current::@1->play_lock_current::@2#1] -- register_copy + //SEG507 [224] phi (byte) play_lock_current::i#2 = (byte) play_lock_current::i#3 [phi:play_lock_current::@1->play_lock_current::@2#2] -- register_copy + //SEG508 play_lock_current::@2 b2: - //SEG509 [225] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG509 [225] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG510 [226] 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 + //SEG510 [226] if(*((byte*) current_piece_gfx#10 + (byte) play_lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 - //SEG511 lock_current::@4 - //SEG512 [227] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG511 play_lock_current::@4 + //SEG512 [227] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::col#2) ← (byte) current_piece_color#16 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_color ldy col sta (playfield_line),y - //SEG513 lock_current::@3 + //SEG513 play_lock_current::@3 b3: - //SEG514 [228] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG514 [228] (byte) play_lock_current::col#1 ← ++ (byte) play_lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG515 [229] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG515 [229] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG516 [230] 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 + //SEG516 [230] if((byte) play_lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b8 - //SEG517 lock_current::@5 - //SEG518 [231] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG517 play_lock_current::@5 + //SEG518 [231] (byte) play_lock_current::ypos2#1 ← (byte) play_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 - //SEG519 [232] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG519 [232] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG520 [233] 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 + //SEG520 [233] if((byte) play_lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto play_lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 - //SEG521 lock_current::@return + //SEG521 play_lock_current::@return //SEG522 [234] return rts - //SEG523 lock_current::@7 + //SEG523 play_lock_current::@7 b7: - //SEG524 [235] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG524 [235] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG525 [221] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] - //SEG526 [221] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy - //SEG527 [221] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy - //SEG528 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy + //SEG525 [221] phi from play_lock_current::@7 to play_lock_current::@1 [phi:play_lock_current::@7->play_lock_current::@1] + //SEG526 [221] phi (byte) play_lock_current::l#6 = (byte) play_lock_current::l#1 [phi:play_lock_current::@7->play_lock_current::@1#0] -- register_copy + //SEG527 [221] phi (byte) play_lock_current::i#3 = (byte~) play_lock_current::i#7 [phi:play_lock_current::@7->play_lock_current::@1#1] -- register_copy + //SEG528 [221] phi (byte) play_lock_current::ypos2#2 = (byte) play_lock_current::ypos2#1 [phi:play_lock_current::@7->play_lock_current::@1#2] -- register_copy jmp b1 - //SEG529 lock_current::@8 + //SEG529 play_lock_current::@8 b8: - //SEG530 [236] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG530 [236] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG531 [224] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] - //SEG532 [224] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy - //SEG533 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy - //SEG534 [224] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy + //SEG531 [224] phi from play_lock_current::@8 to play_lock_current::@2 [phi:play_lock_current::@8->play_lock_current::@2] + //SEG532 [224] phi (byte) play_lock_current::c#2 = (byte) play_lock_current::c#1 [phi:play_lock_current::@8->play_lock_current::@2#0] -- register_copy + //SEG533 [224] phi (byte) play_lock_current::col#2 = (byte) play_lock_current::col#1 [phi:play_lock_current::@8->play_lock_current::@2#1] -- register_copy + //SEG534 [224] phi (byte) play_lock_current::i#2 = (byte~) play_lock_current::i#9 [phi:play_lock_current::@8->play_lock_current::@2#2] -- register_copy jmp b2 } //SEG535 keyboard_event_pressed @@ -14553,40 +14550,40 @@ keyboard_matrix_read: { //SEG666 [303] return rts } -//SEG667 tables_init -tables_init: { +//SEG667 play_init +play_init: { .label pli = 5 .label idx = 2 - //SEG668 [305] phi from tables_init to tables_init::@1 [phi:tables_init->tables_init::@1] - //SEG669 [305] phi (byte) tables_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#0] -- vbuz1=vbuc1 + //SEG668 [305] phi from play_init to play_init::@1 [phi:play_init->play_init::@1] + //SEG669 [305] phi (byte) play_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG670 [305] phi (byte*) tables_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:tables_init->tables_init::@1#1] -- pbuz1=pbuc1 + //SEG670 [305] phi (byte*) play_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:play_init->play_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG671 [305] phi (byte) tables_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#2] -- vbuxx=vbuc1 + //SEG671 [305] phi (byte) play_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_init->play_init::@1#2] -- vbuxx=vbuc1 ldx #0 - //SEG672 [305] phi from tables_init::@1 to tables_init::@1 [phi:tables_init::@1->tables_init::@1] - //SEG673 [305] phi (byte) tables_init::idx#2 = (byte) tables_init::idx#1 [phi:tables_init::@1->tables_init::@1#0] -- register_copy - //SEG674 [305] phi (byte*) tables_init::pli#2 = (byte*) tables_init::pli#1 [phi:tables_init::@1->tables_init::@1#1] -- register_copy - //SEG675 [305] phi (byte) tables_init::j#2 = (byte) tables_init::j#1 [phi:tables_init::@1->tables_init::@1#2] -- register_copy - //SEG676 tables_init::@1 + //SEG672 [305] phi from play_init::@1 to play_init::@1 [phi:play_init::@1->play_init::@1] + //SEG673 [305] phi (byte) play_init::idx#2 = (byte) play_init::idx#1 [phi:play_init::@1->play_init::@1#0] -- register_copy + //SEG674 [305] phi (byte*) play_init::pli#2 = (byte*) play_init::pli#1 [phi:play_init::@1->play_init::@1#1] -- register_copy + //SEG675 [305] phi (byte) play_init::j#2 = (byte) play_init::j#1 [phi:play_init::@1->play_init::@1#2] -- register_copy + //SEG676 play_init::@1 b1: - //SEG677 [306] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG677 [306] (byte~) play_init::$1 ← (byte) play_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG678 [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG678 [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$1) ← (byte*) play_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG679 [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG679 [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda idx sta playfield_lines_idx,x - //SEG680 [309] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG680 [309] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -14594,21 +14591,21 @@ tables_init: { bcc !+ inc pli+1 !: - //SEG681 [310] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG681 [310] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG682 [311] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 -- vbuxx=_inc_vbuxx + //SEG682 [311] (byte) play_init::j#1 ← ++ (byte) play_init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG683 [312] if((byte) tables_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 tables_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG683 [312] if((byte) play_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 play_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b1 - //SEG684 tables_init::@2 + //SEG684 play_init::@2 //SEG685 [313] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 lda #PLAYFIELD_COLS*PLAYFIELD_LINES sta playfield_lines_idx+PLAYFIELD_LINES - //SEG686 tables_init::@return + //SEG686 play_init::@return //SEG687 [314] return rts } @@ -14625,10 +14622,10 @@ render_init: { //SEG691 [335] phi from render_init to fill [phi:render_init->fill] //SEG692 [335] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 208 [phi:render_init->fill#0] -- vbuxx=vbuc1 ldx #$d0 - //SEG693 [335] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:render_init->fill#1] -- pbuz1=pbuc1 - lda #fill#1] -- pbuz1=pbuc1 + lda #SCREEN + lda #>PLAYFIELD_SCREEN sta fill.addr+1 jsr fill //SEG694 [317] phi from render_init to render_init::@7 [phi:render_init->render_init::@7] @@ -14805,14 +14802,14 @@ sid_rnd_init: { 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 - playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 screen_lines: .fill 2*(PLAYFIELD_LINES+3), 0 -.pc = CHARSET "Inline" - .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9)) - .for (var c=0; c<16; c++) + PIECES: .word PIECE_T, PIECE_S, PIECE_Z, PIECE_J, PIECE_O, PIECE_I, PIECE_L + playfield_lines_idx: .fill PLAYFIELD_LINES+1, 0 +.pc = PLAYFIELD_CHARSET "Inline" + .var charset = LoadPicture("nes-charset.png", List().add($000000, $ffffff)) + .for (var c=0; c<32; c++) .for (var y=0;y<8; y++) - .byte charset.getMulticolorByte(c,y) + .byte charset.getSinglecolorByte(c,y) diff --git a/src/test/ref/examples/tetris/tetris.sym b/src/test/ref/examples/tetris/tetris.sym index 91ce0ecb2..f1a700007 100644 --- a/src/test/ref/examples/tetris/tetris.sym +++ b/src/test/ref/examples/tetris/tetris.sym @@ -1,4 +1,4 @@ -(label) @23 +(label) @14 (label) @26 (label) @begin (label) @end @@ -15,8 +15,6 @@ (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 (byte) BROWN (byte*) CHARGEN -(byte*) CHARSET -(const byte*) CHARSET#0 CHARSET = ((byte*))(word/signed word/dword/signed dword) 10240 (byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 @@ -167,10 +165,16 @@ (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) PINK +(byte*) PLAYFIELD_CHARSET +(const byte*) PLAYFIELD_CHARSET#0 PLAYFIELD_CHARSET = ((byte*))(word/signed word/dword/signed dword) 10240 (byte) PLAYFIELD_COLS (const byte) PLAYFIELD_COLS#0 PLAYFIELD_COLS = (byte/signed byte/word/signed word/dword/signed dword) 10 (byte) PLAYFIELD_LINES (const byte) PLAYFIELD_LINES#0 PLAYFIELD_LINES = (byte/signed byte/word/signed word/dword/signed dword) 22 +(byte*) PLAYFIELD_SCREEN +(const byte*) PLAYFIELD_SCREEN#0 PLAYFIELD_SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) PLAYFIELD_SPRITES +(byte*) PLAYFIELD_SPRITE_PTRS (byte*) PROCPORT (byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR @@ -183,8 +187,6 @@ (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 (byte) RED -(byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte) SID_CONTROL_GATE (byte) SID_CONTROL_NOISE (const byte) SID_CONTROL_NOISE#0 SID_CONTROL_NOISE = (byte/word/signed word/dword/signed dword) 128 @@ -227,125 +229,64 @@ (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) YELLOW -(byte()) collision((byte) collision::xpos , (byte) collision::ypos , (byte) collision::orientation) -(byte~) collision::$7 reg byte a 2002.0 -(label) collision::@1 -(label) collision::@17 -(label) collision::@2 -(label) collision::@20 -(label) collision::@21 -(label) collision::@3 -(label) collision::@4 -(label) collision::@5 -(label) collision::@6 -(label) collision::@8 -(label) collision::@return -(byte) collision::c -(byte) collision::c#1 reg byte x 1001.0 -(byte) collision::c#2 reg byte x 222.44444444444446 -(byte) collision::col -(byte) collision::col#1 col zp ZP_BYTE:11 500.5 -(byte) collision::col#2 col zp ZP_BYTE:11 638.25 -(byte~) collision::col#9 col zp ZP_BYTE:11 202.0 -(byte) collision::i -(byte) collision::i#1 i zp ZP_BYTE:24 161.76923076923077 -(byte~) collision::i#11 i#11 zp ZP_BYTE:10 202.0 -(byte~) collision::i#13 i#13 zp ZP_BYTE:10 2002.0 -(byte) collision::i#2 i#2 zp ZP_BYTE:10 1552.0 -(byte) collision::i#3 i#3 zp ZP_BYTE:10 67.33333333333333 -(byte) collision::l -(byte) collision::l#1 l zp ZP_BYTE:9 101.0 -(byte) collision::l#6 l zp ZP_BYTE:9 12.625 -(byte) collision::orientation -(byte) collision::orientation#0 reg byte x 2.0 -(byte) collision::orientation#1 reg byte x 2.0 -(byte) collision::orientation#2 reg byte x 2.0 -(byte) collision::orientation#3 reg byte x 2.0 -(byte) collision::orientation#4 reg byte x 10.0 -(byte*) collision::piece_gfx -(byte*) collision::piece_gfx#0 piece_gfx zp ZP_WORD:5 47.76190476190476 -(byte*) collision::playfield_line -(byte*) collision::playfield_line#0 playfield_line zp ZP_WORD:22 78.71428571428571 -(byte) collision::return -(byte) collision::return#0 reg byte a 4.0 -(byte) collision::return#1 reg byte a 4.0 -(byte) collision::return#12 reg byte a 4.0 -(byte) collision::return#13 reg byte a 4.0 -(byte) collision::return#14 reg byte a 1.3333333333333333 -(byte) collision::xpos -(byte) collision::xpos#0 xpos zp ZP_BYTE:7 1.3333333333333333 -(byte) collision::xpos#1 xpos zp ZP_BYTE:7 1.0 -(byte) collision::xpos#2 xpos zp ZP_BYTE:7 1.0 -(byte) collision::xpos#3 xpos zp ZP_BYTE:7 1.0 -(byte) collision::xpos#5 xpos zp ZP_BYTE:7 4.954545454545454 -(byte) collision::ypos -(byte) collision::ypos#0 reg byte y 1.0 -(byte) collision::ypos#1 reg byte y 1.3333333333333333 -(byte) collision::ypos#2 reg byte y 1.3333333333333333 -(byte) collision::ypos#3 reg byte y 1.3333333333333333 -(byte) collision::ypos#4 reg byte y 5.0 -(byte) collision::ypos2 -(byte) collision::ypos2#0 ypos2 zp ZP_BYTE:8 4.0 -(byte) collision::ypos2#1 ypos2 zp ZP_BYTE:8 50.5 -(byte) collision::ypos2#2 ypos2 zp ZP_BYTE:8 87.06666666666668 (byte) current_movedown_counter -(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.52 -(byte) current_movedown_counter#15 current_movedown_counter zp ZP_BYTE:3 1.3 +(byte) current_movedown_counter#1 current_movedown_counter zp ZP_BYTE:3 0.5333333333333333 +(byte) current_movedown_counter#10 current_movedown_counter zp ZP_BYTE:3 0.52 +(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:3 1.3 (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.1333333333333333 -(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_orientation#10 current_orientation zp ZP_BYTE:14 0.5 +(byte) current_orientation#14 current_orientation zp ZP_BYTE:14 0.32653061224489793 +(byte) current_orientation#19 current_orientation zp ZP_BYTE:14 1.1333333333333333 +(byte) current_orientation#29 current_orientation zp ZP_BYTE:14 4.0 +(byte) current_orientation#4 current_orientation zp ZP_BYTE:14 3.0 (byte*) current_piece -(byte*) current_piece#11 current_piece zp ZP_WORD:12 0.5588235294117647 -(byte*) current_piece#13 current_piece zp ZP_WORD:12 0.3484848484848484 -(byte*) current_piece#15 current_piece#15 zp ZP_WORD:5 10.0 -(byte*) current_piece#23 current_piece zp ZP_WORD:12 6.0 -(byte*~) current_piece#71 current_piece zp ZP_WORD:12 4.0 +(byte*) current_piece#10 current_piece zp ZP_WORD:12 0.3484848484848484 +(byte*) current_piece#12 current_piece#12 zp ZP_WORD:5 10.0 +(byte*) current_piece#16 current_piece zp ZP_WORD:12 0.5588235294117647 +(byte*) current_piece#20 current_piece zp ZP_WORD:12 6.0 +(byte*~) current_piece#70 current_piece zp ZP_WORD:12 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#73 zp ZP_WORD:5 4.0 (byte*~) current_piece#74 current_piece#74 zp ZP_WORD:5 4.0 -(byte*~) current_piece#75 current_piece#75 zp ZP_WORD:5 4.0 -(byte*~) current_piece#76 current_piece zp ZP_WORD:12 4.0 +(byte*~) current_piece#75 current_piece zp ZP_WORD:12 4.0 (byte) current_piece_color -(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.04 -(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#67 current_piece_color#67 zp ZP_BYTE:7 53.368421052631575 +(byte) current_piece_color#11 current_piece_color zp ZP_BYTE:18 1.04 +(byte) current_piece_color#13 current_piece_color zp ZP_BYTE:18 0.7272727272727273 +(byte) current_piece_color#16 current_piece_color zp ZP_BYTE:18 19.96078431372549 +(byte) current_piece_color#21 current_piece_color zp ZP_BYTE:18 6.0 +(byte) current_piece_color#62 current_piece_color#62 zp ZP_BYTE:7 53.368421052631575 (byte~) current_piece_color#75 current_piece_color#75 zp ZP_BYTE:7 4.0 (byte~) current_piece_color#76 current_piece_color#76 zp ZP_BYTE:7 22.0 (byte*) current_piece_gfx -(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.8666666666666665 -(byte*) current_piece_gfx#29 current_piece_gfx zp ZP_WORD:15 6.0 -(byte*) current_piece_gfx#64 current_piece_gfx#64 zp ZP_WORD:5 53.368421052631575 -(byte*) current_piece_gfx#8 current_piece_gfx zp ZP_WORD:15 4.0 +(byte*) current_piece_gfx#10 current_piece_gfx zp ZP_WORD:15 19.96078431372549 +(byte*) current_piece_gfx#14 current_piece_gfx zp ZP_WORD:15 0.2962962962962963 +(byte*) current_piece_gfx#15 current_piece_gfx zp ZP_WORD:15 1.8666666666666665 +(byte*) current_piece_gfx#17 current_piece_gfx zp ZP_WORD:15 0.6666666666666666 +(byte*) current_piece_gfx#27 current_piece_gfx zp ZP_WORD:15 6.0 +(byte*) current_piece_gfx#4 current_piece_gfx zp ZP_WORD:15 4.0 +(byte*) current_piece_gfx#53 current_piece_gfx#53 zp ZP_WORD:5 53.368421052631575 (byte*~) current_piece_gfx#87 current_piece_gfx#87 zp ZP_WORD:5 2.0 (byte*~) current_piece_gfx#88 current_piece_gfx#88 zp ZP_WORD:5 11.0 (byte) current_xpos -(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.871794871794872 -(byte) current_xpos#36 current_xpos zp ZP_BYTE:17 4.0 -(byte) current_xpos#63 current_xpos#63 zp ZP_BYTE:4 5.894736842105264 -(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#11 current_xpos zp ZP_BYTE:17 2.313725490196078 +(byte) current_xpos#16 current_xpos zp ZP_BYTE:17 0.72 +(byte) current_xpos#20 current_xpos zp ZP_BYTE:17 0.871794871794872 +(byte) current_xpos#3 current_xpos zp ZP_BYTE:17 4.0 +(byte) current_xpos#34 current_xpos zp ZP_BYTE:17 4.0 +(byte) current_xpos#48 current_xpos#48 zp ZP_BYTE:4 5.894736842105264 +(byte) current_xpos#5 current_xpos zp ZP_BYTE:17 4.0 (byte~) current_xpos#96 current_xpos#96 zp ZP_BYTE:4 7.333333333333333 (byte) current_ypos -(byte) current_ypos#12 current_ypos zp ZP_BYTE:2 0.5588235294117647 -(byte) current_ypos#16 current_ypos zp ZP_BYTE:2 0.48484848484848475 -(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#1 current_ypos zp ZP_BYTE:2 4.0 +(byte) current_ypos#10 reg byte x 13.0 +(byte) current_ypos#14 current_ypos zp ZP_BYTE:2 0.48484848484848475 +(byte) current_ypos#22 current_ypos zp ZP_BYTE:2 0.5588235294117647 +(byte) current_ypos#30 current_ypos zp ZP_BYTE:2 4.0 (byte~) current_ypos#71 reg byte x 5.5 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (label) fill::@1 @@ -464,37 +405,6 @@ (byte) keyboard_modifiers#5 reg byte a 20.0 (byte[8]) keyboard_scan_values (const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) } -(void()) lock_current() -(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 1001.0 -(byte) lock_current::c#2 reg byte x 400.4 -(byte) lock_current::col -(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: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 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 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::$11 reg byte a 22.0 @@ -522,6 +432,112 @@ (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()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation) +(byte~) play_collision::$7 reg byte a 2002.0 +(label) play_collision::@1 +(label) play_collision::@17 +(label) play_collision::@2 +(label) play_collision::@20 +(label) play_collision::@21 +(label) play_collision::@3 +(label) play_collision::@4 +(label) play_collision::@5 +(label) play_collision::@6 +(label) play_collision::@8 +(label) play_collision::@return +(byte) play_collision::c +(byte) play_collision::c#1 reg byte x 1001.0 +(byte) play_collision::c#2 reg byte x 222.44444444444446 +(byte) play_collision::col +(byte) play_collision::col#1 col zp ZP_BYTE:11 500.5 +(byte) play_collision::col#2 col zp ZP_BYTE:11 638.25 +(byte~) play_collision::col#9 col zp ZP_BYTE:11 202.0 +(byte) play_collision::i +(byte) play_collision::i#1 i zp ZP_BYTE:24 161.76923076923077 +(byte~) play_collision::i#11 i#11 zp ZP_BYTE:10 202.0 +(byte~) play_collision::i#13 i#13 zp ZP_BYTE:10 2002.0 +(byte) play_collision::i#2 i#2 zp ZP_BYTE:10 1552.0 +(byte) play_collision::i#3 i#3 zp ZP_BYTE:10 67.33333333333333 +(byte) play_collision::l +(byte) play_collision::l#1 l zp ZP_BYTE:9 101.0 +(byte) play_collision::l#6 l zp ZP_BYTE:9 12.625 +(byte) play_collision::orientation +(byte) play_collision::orientation#0 reg byte x 2.0 +(byte) play_collision::orientation#1 reg byte x 2.0 +(byte) play_collision::orientation#2 reg byte x 2.0 +(byte) play_collision::orientation#3 reg byte x 2.0 +(byte) play_collision::orientation#4 reg byte x 10.0 +(byte*) play_collision::piece_gfx +(byte*) play_collision::piece_gfx#0 piece_gfx zp ZP_WORD:5 47.76190476190476 +(byte*) play_collision::playfield_line +(byte*) play_collision::playfield_line#0 playfield_line zp ZP_WORD:22 78.71428571428571 +(byte) play_collision::return +(byte) play_collision::return#0 reg byte a 4.0 +(byte) play_collision::return#1 reg byte a 4.0 +(byte) play_collision::return#12 reg byte a 4.0 +(byte) play_collision::return#13 reg byte a 4.0 +(byte) play_collision::return#14 reg byte a 1.3333333333333333 +(byte) play_collision::xpos +(byte) play_collision::xpos#0 xpos zp ZP_BYTE:7 1.3333333333333333 +(byte) play_collision::xpos#1 xpos zp ZP_BYTE:7 1.0 +(byte) play_collision::xpos#2 xpos zp ZP_BYTE:7 1.0 +(byte) play_collision::xpos#3 xpos zp ZP_BYTE:7 1.0 +(byte) play_collision::xpos#5 xpos zp ZP_BYTE:7 4.954545454545454 +(byte) play_collision::ypos +(byte) play_collision::ypos#0 reg byte y 1.0 +(byte) play_collision::ypos#1 reg byte y 1.3333333333333333 +(byte) play_collision::ypos#2 reg byte y 1.3333333333333333 +(byte) play_collision::ypos#3 reg byte y 1.3333333333333333 +(byte) play_collision::ypos#4 reg byte y 5.0 +(byte) play_collision::ypos2 +(byte) play_collision::ypos2#0 ypos2 zp ZP_BYTE:8 4.0 +(byte) play_collision::ypos2#1 ypos2 zp ZP_BYTE:8 50.5 +(byte) play_collision::ypos2#2 ypos2 zp ZP_BYTE:8 87.06666666666668 +(void()) play_init() +(byte~) play_init::$1 reg byte a 22.0 +(label) play_init::@1 +(label) play_init::@2 +(label) play_init::@return +(byte) play_init::idx +(byte) play_init::idx#1 idx zp ZP_BYTE:2 7.333333333333333 +(byte) play_init::idx#2 idx zp ZP_BYTE:2 6.6000000000000005 +(byte) play_init::j +(byte) play_init::j#1 reg byte x 16.5 +(byte) play_init::j#2 reg byte x 7.333333333333333 +(byte*) play_init::pli +(byte*) play_init::pli#1 pli zp ZP_WORD:5 5.5 +(byte*) play_init::pli#2 pli zp ZP_WORD:5 8.25 +(void()) play_lock_current() +(label) play_lock_current::@1 +(label) play_lock_current::@2 +(label) play_lock_current::@3 +(label) play_lock_current::@4 +(label) play_lock_current::@5 +(label) play_lock_current::@7 +(label) play_lock_current::@8 +(label) play_lock_current::@return +(byte) play_lock_current::c +(byte) play_lock_current::c#1 reg byte x 1001.0 +(byte) play_lock_current::c#2 reg byte x 400.4 +(byte) play_lock_current::col +(byte) play_lock_current::col#0 col zp ZP_BYTE:7 202.0 +(byte) play_lock_current::col#1 col zp ZP_BYTE:7 500.5 +(byte) play_lock_current::col#2 col zp ZP_BYTE:7 776.0 +(byte) play_lock_current::i +(byte) play_lock_current::i#1 i zp ZP_BYTE:8 233.66666666666669 +(byte) play_lock_current::i#2 i#2 zp ZP_BYTE:4 1552.0 +(byte) play_lock_current::i#3 i#3 zp ZP_BYTE:4 67.33333333333333 +(byte~) play_lock_current::i#7 i#7 zp ZP_BYTE:4 202.0 +(byte~) play_lock_current::i#9 i#9 zp ZP_BYTE:4 2002.0 +(byte) play_lock_current::l +(byte) play_lock_current::l#1 l zp ZP_BYTE:3 101.0 +(byte) play_lock_current::l#6 l zp ZP_BYTE:3 16.833333333333332 +(byte*) play_lock_current::playfield_line +(byte*) play_lock_current::playfield_line#0 playfield_line zp ZP_WORD:5 110.19999999999999 +(byte) play_lock_current::ypos2 +(byte) play_lock_current::ypos2#0 ypos2 zp ZP_BYTE:2 4.0 +(byte) play_lock_current::ypos2#1 ypos2 zp ZP_BYTE:2 50.5 +(byte) play_lock_current::ypos2#2 ypos2 zp ZP_BYTE:2 27.727272727272727 (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 @@ -550,8 +566,8 @@ (byte) play_move_down::movedown#6 reg byte x 6.0 (byte) play_move_down::movedown#7 reg byte x 5.0 (byte) play_move_down::return -(byte) play_move_down::return#0 reg byte a 22.0 -(byte) play_move_down::return#3 reg byte x 3.6666666666666665 +(byte) play_move_down::return#2 reg byte x 3.6666666666666665 +(byte) play_move_down::return#3 reg byte a 22.0 (byte()) play_move_leftright((byte) play_move_leftright::key_event) (byte~) play_move_leftright::$4 reg byte a 4.0 (byte~) play_move_leftright::$8 reg byte a 4.0 @@ -566,8 +582,8 @@ (byte) play_move_leftright::key_event (byte) play_move_leftright::key_event#0 reg byte a 7.5 (byte) play_move_leftright::return -(byte) play_move_leftright::return#0 reg byte a 22.0 -(byte) play_move_leftright::return#2 reg byte a 3.6666666666666665 +(byte) play_move_leftright::return#1 reg byte a 3.6666666666666665 +(byte) play_move_leftright::return#4 reg byte a 22.0 (byte()) play_move_rotate((byte) play_move_rotate::key_event) (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 @@ -586,48 +602,59 @@ (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.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 +(byte) play_move_rotate::return#1 reg byte a 3.6666666666666665 +(byte) play_move_rotate::return#4 reg byte a 22.0 +(void()) play_remove_lines() +(label) play_remove_lines::@1 +(label) play_remove_lines::@10 +(label) play_remove_lines::@17 +(label) play_remove_lines::@2 +(label) play_remove_lines::@3 +(label) play_remove_lines::@4 +(label) play_remove_lines::@5 +(label) play_remove_lines::@6 +(label) play_remove_lines::@9 +(label) play_remove_lines::@return +(byte) play_remove_lines::c +(byte) play_remove_lines::c#0 c zp ZP_BYTE:7 600.5999999999999 +(byte) play_remove_lines::full +(byte) play_remove_lines::full#2 full zp ZP_BYTE:4 420.59999999999997 +(byte) play_remove_lines::full#4 full zp ZP_BYTE:4 400.4 +(byte) play_remove_lines::r +(byte) play_remove_lines::r#1 reg byte y 161.76923076923077 +(byte) play_remove_lines::r#2 reg byte y 1552.0 +(byte) play_remove_lines::r#3 reg byte y 202.0 +(byte) play_remove_lines::w +(byte) play_remove_lines::w#1 reg byte x 551.0 +(byte) play_remove_lines::w#11 reg byte x 134.66666666666666 +(byte) play_remove_lines::w#12 reg byte x 202.0 +(byte) play_remove_lines::w#2 reg byte x 202.0 +(byte) play_remove_lines::w#3 reg byte x 202.0 +(byte) play_remove_lines::w#4 reg byte x 443.42857142857144 +(byte) play_remove_lines::w#6 reg byte x 168.33333333333331 +(byte) play_remove_lines::x +(byte) play_remove_lines::x#1 x zp ZP_BYTE:3 1501.5 +(byte) play_remove_lines::x#2 x zp ZP_BYTE:3 250.25 +(byte) play_remove_lines::y +(byte) play_remove_lines::y#1 y zp ZP_BYTE:2 151.5 +(byte) play_remove_lines::y#8 y zp ZP_BYTE:2 14.428571428571429 +(void()) play_spawn_current() +(byte~) play_spawn_current::$1 reg byte a 202.0 +(byte~) play_spawn_current::$3 $3 zp ZP_BYTE:2 0.18181818181818182 +(label) play_spawn_current::@1 +(label) play_spawn_current::@2 +(label) play_spawn_current::@3 +(label) play_spawn_current::@7 +(label) play_spawn_current::@return +(byte) play_spawn_current::piece_idx +(byte) play_spawn_current::piece_idx#1 reg byte x 202.0 +(byte) play_spawn_current::piece_idx#2 reg byte x 51.5 (byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 playfield = { fill( PLAYFIELD_LINES#0*PLAYFIELD_COLS#0, 0) } (byte*[PLAYFIELD_LINES#0]) playfield_lines (const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 playfield_lines = { fill( PLAYFIELD_LINES#0, 0) } (byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx (const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 playfield_lines_idx = { fill( PLAYFIELD_LINES#0+1, 0) } -(void()) remove_lines() -(label) remove_lines::@1 -(label) remove_lines::@10 -(label) remove_lines::@17 -(label) remove_lines::@2 -(label) remove_lines::@3 -(label) remove_lines::@4 -(label) remove_lines::@5 -(label) remove_lines::@6 -(label) remove_lines::@9 -(label) remove_lines::@return -(byte) remove_lines::c -(byte) remove_lines::c#0 c zp ZP_BYTE:7 600.5999999999999 -(byte) remove_lines::full -(byte) remove_lines::full#2 full zp ZP_BYTE:4 420.59999999999997 -(byte) remove_lines::full#4 full zp ZP_BYTE:4 400.4 -(byte) remove_lines::r -(byte) remove_lines::r#1 reg byte y 161.76923076923077 -(byte) remove_lines::r#2 reg byte y 1552.0 -(byte) remove_lines::r#3 reg byte y 202.0 -(byte) remove_lines::w -(byte) remove_lines::w#1 reg byte x 551.0 -(byte) remove_lines::w#11 reg byte x 134.66666666666666 -(byte) remove_lines::w#12 reg byte x 202.0 -(byte) remove_lines::w#2 reg byte x 202.0 -(byte) remove_lines::w#3 reg byte x 202.0 -(byte) remove_lines::w#4 reg byte x 443.42857142857144 -(byte) remove_lines::w#6 reg byte x 168.33333333333331 -(byte) remove_lines::x -(byte) remove_lines::x#1 x zp ZP_BYTE:3 1501.5 -(byte) remove_lines::x#2 x zp ZP_BYTE:3 250.25 -(byte) remove_lines::y -(byte) remove_lines::y#1 y zp ZP_BYTE:2 151.5 -(byte) remove_lines::y#8 y zp ZP_BYTE:2 14.428571428571429 (void()) render_current() (label) render_current::@1 (label) render_current::@2 @@ -713,101 +740,76 @@ (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 51.5 -(void()) tables_init() -(byte~) tables_init::$1 reg byte a 22.0 -(label) tables_init::@1 -(label) tables_init::@2 -(label) tables_init::@return -(byte) tables_init::idx -(byte) tables_init::idx#1 idx zp ZP_BYTE:2 7.333333333333333 -(byte) tables_init::idx#2 idx zp ZP_BYTE:2 6.6000000000000005 -(byte) tables_init::j -(byte) tables_init::j#1 reg byte x 16.5 -(byte) tables_init::j#2 reg byte x 7.333333333333333 -(byte*) tables_init::pli -(byte*) tables_init::pli#1 pli zp ZP_WORD:5 5.5 -(byte*) tables_init::pli#2 pli zp ZP_WORD:5 8.25 -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 remove_lines::y#8 remove_lines::y#1 tables_init::idx#2 tables_init::idx#1 render_init::l#4 render_init::l#1 spawn_current::$3 ] -zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 remove_lines::x#2 remove_lines::x#1 lock_current::l#6 lock_current::l#1 ] -reg byte x [ current_ypos#22 current_ypos#71 ] -zp ZP_BYTE:4 [ current_xpos#63 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 remove_lines::full#4 remove_lines::full#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#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 lock_current::playfield_line#0 ] -zp ZP_BYTE:7 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 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 remove_lines::c#0 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 ] +zp ZP_BYTE:2 [ current_ypos#22 current_ypos#14 current_ypos#30 current_ypos#1 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 play_remove_lines::y#8 play_remove_lines::y#1 play_init::idx#2 play_init::idx#1 render_init::l#4 render_init::l#1 play_spawn_current::$3 ] +zp ZP_BYTE:3 [ current_movedown_counter#12 current_movedown_counter#10 current_movedown_counter#1 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::l#6 play_lock_current::l#1 ] +reg byte x [ current_ypos#10 current_ypos#71 ] +zp ZP_BYTE:4 [ current_xpos#48 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +zp ZP_WORD:5 [ current_piece_gfx#53 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#12 current_piece#71 current_piece#72 current_piece#73 current_piece#74 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 play_lock_current::playfield_line#0 ] +zp ZP_BYTE:7 [ current_piece_color#62 current_piece_color#75 current_piece_color#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_collision::xpos#5 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 play_remove_lines::c#0 keyboard_event_pressed::row_bits#0 ] +zp ZP_BYTE:8 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ] +zp ZP_BYTE:9 [ render_current::l#3 render_current::l#1 play_collision::l#6 play_collision::l#1 ] +zp ZP_BYTE:10 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ] +zp ZP_BYTE:11 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 play_collision::col#2 play_collision::col#9 play_collision::col#1 ] reg byte x [ render_current::c#2 render_current::c#1 ] reg byte x [ render_playfield::c#2 render_playfield::c#1 ] -reg byte a [ play_move_rotate::return#2 ] -reg byte x [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] -reg byte y [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] -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 a [ play_move_rotate::return#1 ] +reg byte x [ play_collision::orientation#4 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] +reg byte y [ play_collision::ypos#4 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 ] +reg byte x [ play_collision::c#2 play_collision::c#1 ] +reg byte a [ play_collision::return#14 ] +reg byte a [ play_move_leftright::return#1 ] reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -zp ZP_WORD:12 [ current_piece#23 current_piece#76 current_piece#11 current_piece#13 current_piece#71 render_init::$10 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 y [ remove_lines::r#2 remove_lines::r#3 remove_lines::r#1 ] -reg byte x [ remove_lines::w#6 remove_lines::w#4 remove_lines::w#12 remove_lines::w#11 remove_lines::w#1 remove_lines::w#2 remove_lines::w#3 ] -reg byte x [ lock_current::c#2 lock_current::c#1 ] +zp ZP_WORD:12 [ current_piece#20 current_piece#75 current_piece#16 current_piece#10 current_piece#70 render_init::$10 fill::end#0 ] +zp ZP_BYTE:14 [ current_orientation#29 current_orientation#10 current_orientation#19 current_orientation#4 current_orientation#14 ] +zp ZP_WORD:15 [ current_piece_gfx#27 current_piece_gfx#10 current_piece_gfx#15 current_piece_gfx#17 current_piece_gfx#4 current_piece_gfx#14 ] +zp ZP_BYTE:17 [ current_xpos#34 current_xpos#11 current_xpos#20 current_xpos#5 current_xpos#16 current_xpos#3 ] +zp ZP_BYTE:18 [ current_piece_color#21 current_piece_color#16 current_piece_color#11 current_piece_color#13 ] +reg byte x [ play_move_down::return#2 ] +reg byte x [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] +reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] +reg byte x [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ] +reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 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 ] -reg byte x [ tables_init::j#2 tables_init::j#1 ] +reg byte x [ play_init::j#2 play_init::j#1 ] reg byte x [ render_init::i#2 render_init::i#1 ] reg byte x [ render_init::c#2 render_init::c#1 ] reg byte x [ fill::val#3 ] 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 [ play_move_down::return#3 ] reg byte a [ main::$10 ] 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 [ play_move_leftright::return#4 ] reg byte a [ main::$11 ] reg byte a [ play_move_rotate::key_event#0 ] -reg byte a [ play_move_rotate::return#0 ] +reg byte a [ play_move_rotate::return#4 ] reg byte a [ main::$12 ] reg byte a [ main::render#3 ] -zp ZP_WORD:22 [ render_current::screen_line#0 collision::playfield_line#0 ] +zp ZP_WORD:22 [ render_current::screen_line#0 play_collision::playfield_line#0 ] reg byte a [ render_current::current_cell#0 ] reg byte a [ render_playfield::$1 ] reg byte a [ play_move_rotate::$2 ] -reg byte a [ collision::return#13 ] +reg byte a [ play_collision::return#13 ] reg byte a [ play_move_rotate::$6 ] reg byte a [ play_move_rotate::$4 ] -zp ZP_BYTE:24 [ collision::i#1 ] -reg byte a [ collision::$7 ] -reg byte a [ collision::return#12 ] +zp ZP_BYTE:24 [ play_collision::i#1 ] +reg byte a [ play_collision::$7 ] +reg byte a [ play_collision::return#12 ] reg byte a [ play_move_leftright::$4 ] -reg byte a [ collision::return#1 ] +reg byte a [ play_collision::return#1 ] reg byte a [ play_move_leftright::$8 ] 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_collision::return#0 ] reg byte a [ play_move_down::$12 ] reg byte a [ sid_rnd::return#2 ] -reg byte a [ spawn_current::$1 ] +reg byte a [ play_spawn_current::$1 ] reg byte a [ sid_rnd::return#0 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] @@ -828,5 +830,5 @@ reg byte a [ keyboard_event_scan::$4 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$11 ] reg byte a [ keyboard_matrix_read::return#0 ] -reg byte a [ tables_init::$1 ] +reg byte a [ play_init::$1 ] reg byte a [ render_init::$5 ]