From 45b03818e46b7b0d67d1c4685ffc604627a0fe6f Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Tue, 18 Dec 2018 23:09:20 +0100 Subject: [PATCH] Improved remove lines implementation --- src/main/fragment/vbuz1_neq_0_then_la1.asm | 1 + src/test/kc/examples/tetris/tetris.kc | 60 +- src/test/ref/examples/tetris/tetris.asm | 164 +- src/test/ref/examples/tetris/tetris.cfg | 454 +- src/test/ref/examples/tetris/tetris.log | 6352 +++++++++----------- src/test/ref/examples/tetris/tetris.sym | 135 +- 6 files changed, 3223 insertions(+), 3943 deletions(-) diff --git a/src/main/fragment/vbuz1_neq_0_then_la1.asm b/src/main/fragment/vbuz1_neq_0_then_la1.asm index 7a2548449..5fe6f7b5e 100644 --- a/src/main/fragment/vbuz1_neq_0_then_la1.asm +++ b/src/main/fragment/vbuz1_neq_0_then_la1.asm @@ -1,2 +1,3 @@ lda {z1} +cmp #0 bne {la1} diff --git a/src/test/kc/examples/tetris/tetris.kc b/src/test/kc/examples/tetris/tetris.kc index 08f3c89b6..f6c5acc5c 100644 --- a/src/test/kc/examples/tetris/tetris.kc +++ b/src/test/kc/examples/tetris/tetris.kc @@ -45,12 +45,6 @@ const byte current_movedown_fast = 5; // Counts up to the next movedown of current piece byte current_movedown_counter = 0; -// The screen -byte* SCREEN = $400; - -// Pointers to the screen address for rendering each playfield line -byte*[PLAYFIELD_LINES+3] screen_lines; - void main() { sid_rnd_init(); asm { sei } @@ -235,44 +229,32 @@ void spawn_current() { } // 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() { - byte done = 0; - do { - byte line_ypos = find_line(); - if(line_ypos!=$ff) { - remove_line(line_ypos); - } else { - done = 1; - } - } while(done==0); -} + // Start both cursors at the end of the playfield + byte r = PLAYFIELD_LINES*PLAYFIELD_COLS-1; + byte w = PLAYFIELD_LINES*PLAYFIELD_COLS-1; -// Look through the playfield for lines - and return the ypos of any filled line. -// Returns $ff if no line was found -byte find_line() { - byte i = 0; + // Read all lines and rewrite them for(byte y:0..PLAYFIELD_LINES-1) { - byte filled = 1; + byte full = 1; for(byte x:0..PLAYFIELD_COLS-1) { - if(playfield[i++]==0) { - filled = 0; + byte c = playfield[r--]; + if(c==0) { + full = 0; } + playfield[w--] = c; } - if(filled==1) { - return y; + // If the line is full then re-write it. + if(full==1) { + w = w + PLAYFIELD_COLS; } - } - return $ff; -} + } -// Remove a single line by scrolling all lines above it down and emptying the top line -void remove_line(byte ypos) { - byte i2 = playfield_lines_idx[ypos+1]-1; - byte i1 = playfield_lines_idx[ypos]-1; - for(byte y=ypos;y!=1;y--) { - for(byte x:0..PLAYFIELD_COLS-1) { - playfield[i2--] = playfield[i1--]; - } + // Write zeros in the rest of the lines + while(w!=$ff) { + playfield[w--] = 0; } } @@ -291,6 +273,12 @@ void tables_init() { } +// The screen +byte* SCREEN = $400; + +// Pointers to the screen address for rendering each playfield line +byte*[PLAYFIELD_LINES+3] screen_lines; + // Initialize rendering void render_init() { // Clear the screen diff --git a/src/test/ref/examples/tetris/tetris.asm b/src/test/ref/examples/tetris/tetris.asm index 3d800e321..f9de66ca5 100644 --- a/src/test/ref/examples/tetris/tetris.asm +++ b/src/test/ref/examples/tetris/tetris.asm @@ -28,12 +28,12 @@ .const PLAYFIELD_COLS = $a .const current_movedown_slow = $32 .const current_movedown_fast = 5 - .label SCREEN = $400 .const COLLISION_NONE = 0 .const COLLISION_PLAYFIELD = 1 .const COLLISION_BOTTOM = 2 .const COLLISION_LEFT = 4 .const COLLISION_RIGHT = 8 + .label SCREEN = $400 .label keyboard_events_size = $13 .label current_ypos = 2 .label current_xpos = $11 @@ -44,17 +44,17 @@ .label current_movedown_counter = 3 .label current_piece_15 = 5 .label current_xpos_63 = 4 - .label current_piece_gfx_63 = 5 - .label current_piece_color_66 = 7 - .label current_xpos_95 = 4 - .label current_piece_gfx_86 = 5 + .label current_piece_gfx_64 = 5 + .label current_piece_color_67 = 7 + .label current_xpos_96 = 4 .label current_piece_gfx_87 = 5 - .label current_piece_color_74 = 7 + .label current_piece_gfx_88 = 5 .label current_piece_color_75 = 7 - .label current_piece_71 = 5 + .label current_piece_color_76 = 7 .label current_piece_72 = 5 .label current_piece_73 = 5 .label current_piece_74 = 5 + .label current_piece_75 = 5 jsr main main: { .label key_event = $14 @@ -66,11 +66,11 @@ main: { jsr spawn_current jsr render_playfield lda current_piece_gfx - sta current_piece_gfx_86 + sta current_piece_gfx_87 lda current_piece_gfx+1 - sta current_piece_gfx_86+1 + sta current_piece_gfx_87+1 lda current_piece_color - sta current_piece_color_74 + sta current_piece_color_75 lda #3 sta current_xpos_63 ldx #0 @@ -119,13 +119,13 @@ main: { jsr render_playfield ldx current_ypos lda current_xpos - sta current_xpos_95 + sta current_xpos_96 lda current_piece_gfx - sta current_piece_gfx_87 + sta current_piece_gfx_88 lda current_piece_gfx+1 - sta current_piece_gfx_87+1 + sta current_piece_gfx_88+1 lda current_piece_color - sta current_piece_color_75 + sta current_piece_color_76 jsr render_current b10: dec BORDERCOL @@ -157,14 +157,14 @@ render_current: { ldx #0 b3: ldy i - lda (current_piece_gfx_63),y + lda (current_piece_gfx_64),y inc i cmp #0 beq b4 lda xpos cmp #PLAYFIELD_COLS bcs b4 - lda current_piece_color_66 + lda current_piece_color_67 ldy xpos sta (screen_line),y b4: @@ -240,9 +240,9 @@ play_move_rotate: { ldy current_ypos ldx orientation lda current_piece - sta current_piece_74 + sta current_piece_75 lda current_piece+1 - sta current_piece_74+1 + sta current_piece_75+1 jsr collision cmp #COLLISION_NONE bne b3 @@ -367,9 +367,9 @@ play_move_leftright: { ldy current_ypos ldx current_orientation lda current_piece - sta current_piece_73 + sta current_piece_74 lda current_piece+1 - sta current_piece_73+1 + sta current_piece_74+1 jsr collision cmp #COLLISION_NONE bne b3 @@ -388,9 +388,9 @@ play_move_leftright: { ldy current_ypos ldx current_orientation lda current_piece - sta current_piece_72 + sta current_piece_73 lda current_piece+1 - sta current_piece_72+1 + sta current_piece_73+1 jsr collision cmp #COLLISION_NONE bne b3 @@ -429,9 +429,9 @@ play_move_down: { sta collision.xpos ldx current_orientation lda current_piece - sta current_piece_71 + sta current_piece_72 lda current_piece+1 - sta current_piece_71+1 + sta current_piece_72+1 jsr collision cmp #COLLISION_NONE beq b6 @@ -489,108 +489,56 @@ sid_rnd: { rts } remove_lines: { - .label done = 2 + .label c = 7 + .label x = 3 + .label y = 2 + .label full = 4 lda #0 - sta done + sta y + ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1 + ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1 b1: - jsr find_line - lda find_line.return - cmp #$ff - bne b2 lda #1 - sta done - b3: - lda done - cmp #0 - beq b1 - rts - b2: - sta remove_line.ypos - jsr remove_line - jmp b3 -} -remove_line: { - .label ypos = 3 - .label x = 4 - .label y = 3 - lda ypos - tay - lda playfield_lines_idx+1,y - tay - dey - ldx ypos - lda playfield_lines_idx,x - tax - dex - b1: + sta full lda #0 sta x b2: - lda playfield,x - sta playfield,y + lda playfield,y + sta c dey + cmp #0 + bne b3 + lda #0 + sta full + b3: + lda c + sta playfield,x dex inc x lda x cmp #PLAYFIELD_COLS-1+1 bne b2 - dec y - lda y - cmp #1 - bne b1 - rts -} -find_line: { - .label i = 8 - .label y = 7 - .label return = 7 - .label i_2 = 3 - .label filled = 4 - .label i_3 = 3 - .label i_8 = 3 - .label i_10 = 3 - lda #0 - sta y - sta i_3 - b1: - lda #1 - sta filled - ldx #0 - b2: - ldy i_2 - iny - sty i - ldy i_2 - lda playfield,y - cmp #0 - bne b3 - lda #0 - sta filled - b3: - inx - cpx #PLAYFIELD_COLS-1+1 - bne b12 - lda filled + lda full cmp #1 bne b4 - breturn: - rts + txa + clc + adc #PLAYFIELD_COLS + tax b4: inc y lda y cmp #PLAYFIELD_LINES-1+1 - bne b11 - lda #$ff - sta return - jmp breturn - b11: - lda i - sta i_8 - jmp b1 - b12: - lda i - sta i_10 - jmp b2 + bne b1 + b5: + cpx #$ff + bne b6 + rts + b6: + lda #0 + sta playfield,x + dex + jmp b5 } lock_current: { .label ypos2 = 2 diff --git a/src/test/ref/examples/tetris/tetris.cfg b/src/test/ref/examples/tetris/tetris.cfg index f41e0fba4..559868957 100644 --- a/src/test/ref/examples/tetris/tetris.cfg +++ b/src/test/ref/examples/tetris/tetris.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() - to:@27 -@27: scope:[] from @begin + to:@25 +@25: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @27 +@end: scope:[] from @25 [3] phi() -main: scope:[main] from @27 +main: scope:[main] from @25 [4] phi() [5] call sid_rnd_init to:main::@21 @@ -28,10 +28,10 @@ main::@24: scope:[main] from main::@23 [13] call render_playfield to:main::@25 main::@25: scope:[main] from main::@24 - [14] (byte*~) current_piece_gfx#86 ← (byte*) current_piece_gfx#10 - [15] (byte~) current_piece_color#74 ← (byte) current_piece_color#15 + [14] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 + [15] (byte~) current_piece_color#75 ← (byte) current_piece_color#15 [16] call render_current - [17] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + [17] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) to:main::@1 main::@1: scope:[main] from main::@10 main::@25 [18] (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 ) @@ -41,7 +41,7 @@ main::@1: scope:[main] from main::@10 main::@25 [18] (byte) current_xpos#16 ← phi( main::@10/(byte) current_xpos#23 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 ) [18] (byte*) current_piece_gfx#15 ← phi( main::@10/(byte*) current_piece_gfx#18 main::@25/(byte*) current_piece_gfx#10 ) [18] (byte) current_orientation#15 ← phi( main::@10/(byte) current_orientation#23 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [18] (byte*) current_piece#11 ← phi( main::@10/(byte*) current_piece#13 main::@25/(byte*~) current_piece#70 ) + [18] (byte*) current_piece#11 ← phi( main::@10/(byte*) current_piece#13 main::@25/(byte*~) current_piece#71 ) to:main::@4 main::@4: scope:[main] from main::@1 main::@4 [19] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 @@ -88,20 +88,20 @@ main::@19: scope:[main] from main::@31 [44] call render_playfield to:main::@32 main::@32: scope:[main] from main::@19 - [45] (byte~) current_ypos#70 ← (byte) current_ypos#16 - [46] (byte~) current_xpos#95 ← (byte) current_xpos#23 - [47] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#18 - [48] (byte~) current_piece_color#75 ← (byte) current_piece_color#13 + [45] (byte~) current_ypos#71 ← (byte) current_ypos#16 + [46] (byte~) current_xpos#96 ← (byte) current_xpos#23 + [47] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#18 + [48] (byte~) current_piece_color#76 ← (byte) current_piece_color#13 [49] call render_current to:main::@10 main::@10: scope:[main] from main::@31 main::@32 [50] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) to:main::@1 render_current: scope:[render_current] from main::@25 main::@32 - [51] (byte) current_piece_color#66 ← phi( main::@25/(byte~) current_piece_color#74 main::@32/(byte~) current_piece_color#75 ) - [51] (byte*) current_piece_gfx#63 ← phi( main::@25/(byte*~) current_piece_gfx#86 main::@32/(byte*~) current_piece_gfx#87 ) - [51] (byte) current_xpos#63 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@32/(byte~) current_xpos#95 ) - [51] (byte) current_ypos#22 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@32/(byte~) current_ypos#70 ) + [51] (byte) current_piece_color#67 ← phi( main::@25/(byte~) current_piece_color#75 main::@32/(byte~) current_piece_color#76 ) + [51] (byte*) current_piece_gfx#64 ← phi( main::@25/(byte*~) current_piece_gfx#87 main::@32/(byte*~) current_piece_gfx#88 ) + [51] (byte) current_xpos#63 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@32/(byte~) current_xpos#96 ) + [51] (byte) current_ypos#22 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@32/(byte~) current_ypos#71 ) [52] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:render_current::@1 render_current::@1: scope:[render_current] from render_current render_current::@2 @@ -118,7 +118,7 @@ render_current::@3: scope:[render_current] from render_current::@4 render_curre [57] (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 ) [57] (byte) render_current::xpos#2 ← phi( render_current::@4/(byte) render_current::xpos#1 render_current::@6/(byte) render_current::xpos#0 ) [57] (byte) render_current::i#2 ← phi( render_current::@4/(byte) render_current::i#1 render_current::@6/(byte) render_current::i#4 ) - [58] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#63 + (byte) render_current::i#2) + [58] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) [59] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 [60] 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 @@ -126,7 +126,7 @@ render_current::@7: scope:[render_current] from render_current::@3 [61] 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 - [62] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#66 + [62] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#67 to:render_current::@4 render_current::@4: scope:[render_current] from render_current::@3 render_current::@7 render_current::@8 [63] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 @@ -189,7 +189,7 @@ play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@1 play_m [91] (byte) collision::xpos#3 ← (byte) current_xpos#23 [92] (byte) collision::ypos#3 ← (byte) current_ypos#16 [93] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 - [94] (byte*~) current_piece#74 ← (byte*) current_piece#13 + [94] (byte*~) current_piece#75 ← (byte*) current_piece#13 [95] call collision [96] (byte) collision::return#13 ← (byte) collision::return#14 to:play_move_rotate::@14 @@ -209,7 +209,7 @@ collision: scope:[collision] from play_move_down::@12 play_move_leftright::@1 p [103] (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 ) [103] (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 ) [103] (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 ) - [103] (byte*) current_piece#15 ← 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 ) + [103] (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 ) [104] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 [105] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:collision::@1 @@ -270,7 +270,7 @@ play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright:: [129] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 [130] (byte) collision::ypos#2 ← (byte) current_ypos#16 [131] (byte) collision::orientation#2 ← (byte) current_orientation#18 - [132] (byte*~) current_piece#73 ← (byte*) current_piece#13 + [132] (byte*~) current_piece#74 ← (byte*) current_piece#13 [133] call collision [134] (byte) collision::return#12 ← (byte) collision::return#14 to:play_move_leftright::@15 @@ -290,7 +290,7 @@ play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright [140] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 [141] (byte) collision::ypos#1 ← (byte) current_ypos#16 [142] (byte) collision::orientation#1 ← (byte) current_orientation#18 - [143] (byte*~) current_piece#72 ← (byte*) current_piece#13 + [143] (byte*~) current_piece#73 ← (byte*) current_piece#13 [144] call collision [145] (byte) collision::return#1 ← (byte) collision::return#14 to:play_move_leftright::@14 @@ -338,7 +338,7 @@ play_move_down::@12: scope:[play_move_down] from play_move_down::@4 [164] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 [165] (byte) collision::xpos#0 ← (byte) current_xpos#16 [166] (byte) collision::orientation#0 ← (byte) current_orientation#15 - [167] (byte*~) current_piece#71 ← (byte*) current_piece#11 + [167] (byte*~) current_piece#72 ← (byte*) current_piece#11 [168] call collision [169] (byte) collision::return#0 ← (byte) collision::return#14 to:play_move_down::@18 @@ -357,14 +357,14 @@ play_move_down::@19: scope:[play_move_down] from play_move_down::@13 play_move_down::@20: scope:[play_move_down] from play_move_down::@19 [176] phi() [177] call spawn_current - [178] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + [178] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) to:play_move_down::@7 play_move_down::@7: scope:[play_move_down] from play_move_down::@20 play_move_down::@6 [179] (byte) current_piece_color#23 ← phi( play_move_down::@20/(byte) current_piece_color#15 play_move_down::@6/(byte) current_piece_color#11 ) [179] (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 ) [179] (byte*) current_piece_gfx#29 ← phi( play_move_down::@20/(byte*) current_piece_gfx#10 play_move_down::@6/(byte*) current_piece_gfx#15 ) [179] (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 ) - [179] (byte*) current_piece#23 ← phi( play_move_down::@20/(byte*~) current_piece#75 play_move_down::@6/(byte*) current_piece#11 ) + [179] (byte*) current_piece#23 ← phi( play_move_down::@20/(byte*~) current_piece#76 play_move_down::@6/(byte*) current_piece#11 ) [179] (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 ) to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@4 play_move_down::@7 @@ -414,343 +414,303 @@ sid_rnd::@return: scope:[sid_rnd] from sid_rnd remove_lines: scope:[remove_lines] from play_move_down::@19 [197] phi() to:remove_lines::@1 -remove_lines::@1: scope:[remove_lines] from remove_lines remove_lines::@3 - [198] (byte) remove_lines::done#3 ← phi( remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 remove_lines::@3/(byte) remove_lines::done#2 ) - [199] call find_line - [200] (byte) find_line::return#0 ← (byte) find_line::return#2 - to:remove_lines::@7 -remove_lines::@7: scope:[remove_lines] from remove_lines::@1 - [201] (byte) remove_lines::line_ypos#0 ← (byte) find_line::return#0 - [202] if((byte) remove_lines::line_ypos#0!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@2 +remove_lines::@1: scope:[remove_lines] from remove_lines remove_lines::@4 + [198] (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 ) + [198] (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 ) + [198] (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 + [199] (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 ) + [199] (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 ) + [199] (byte) remove_lines::w#4 ← phi( remove_lines::@1/(byte) remove_lines::w#12 remove_lines::@3/(byte) remove_lines::w#1 ) + [199] (byte) remove_lines::r#2 ← phi( remove_lines::@1/(byte) remove_lines::r#3 remove_lines::@3/(byte) remove_lines::r#1 ) + [200] (byte) remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::r#2) + [201] (byte) remove_lines::r#1 ← -- (byte) remove_lines::r#2 + [202] 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::@2 remove_lines::@7 - [203] (byte) remove_lines::done#2 ← phi( remove_lines::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 remove_lines::@2/(byte) remove_lines::done#3 ) - [204] if((byte) remove_lines::done#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@1 +remove_lines::@3: scope:[remove_lines] from remove_lines::@17 remove_lines::@2 + [203] (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 ) + [204] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#4) ← (byte) remove_lines::c#0 + [205] (byte) remove_lines::w#1 ← -- (byte) remove_lines::w#4 + [206] (byte) remove_lines::x#1 ← ++ (byte) remove_lines::x#2 + [207] 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 + [208] 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 + [209] (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 + [210] (byte) remove_lines::w#11 ← phi( remove_lines::@10/(byte) remove_lines::w#2 remove_lines::@9/(byte) remove_lines::w#1 ) + [211] (byte) remove_lines::y#1 ← ++ (byte) remove_lines::y#8 + [212] 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 + [213] (byte) remove_lines::w#6 ← phi( remove_lines::@4/(byte) remove_lines::w#11 remove_lines::@6/(byte) remove_lines::w#3 ) + [214] 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::@3 - [205] return +remove_lines::@return: scope:[remove_lines] from remove_lines::@5 + [215] return to:@return -remove_lines::@2: scope:[remove_lines] from remove_lines::@7 - [206] (byte) remove_line::ypos#0 ← (byte) remove_lines::line_ypos#0 - [207] call remove_line +remove_lines::@6: scope:[remove_lines] from remove_lines::@5 + [216] *((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 + [217] (byte) remove_lines::w#3 ← -- (byte) remove_lines::w#6 + to:remove_lines::@5 +remove_lines::@17: scope:[remove_lines] from remove_lines::@2 + [218] phi() to:remove_lines::@3 -remove_line: scope:[remove_line] from remove_lines::@2 - [208] (byte~) remove_line::$0 ← (byte) remove_line::ypos#0 - [209] (byte) remove_line::i2#0 ← *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte~) remove_line::$0) - (byte/signed byte/word/signed word/dword/signed dword) 1 - [210] (byte) remove_line::i1#0 ← *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) remove_line::ypos#0) - (byte/signed byte/word/signed word/dword/signed dword) 1 - to:remove_line::@1 -remove_line::@1: scope:[remove_line] from remove_line remove_line::@3 - [211] (byte) remove_line::y#4 ← phi( remove_line/(byte) remove_line::ypos#0 remove_line::@3/(byte) remove_line::y#1 ) - [211] (byte) remove_line::i2#3 ← phi( remove_line/(byte) remove_line::i2#0 remove_line::@3/(byte) remove_line::i2#1 ) - [211] (byte) remove_line::i1#3 ← phi( remove_line/(byte) remove_line::i1#0 remove_line::@3/(byte) remove_line::i1#1 ) - to:remove_line::@2 -remove_line::@2: scope:[remove_line] from remove_line::@1 remove_line::@2 - [212] (byte) remove_line::x#2 ← phi( remove_line::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 remove_line::@2/(byte) remove_line::x#1 ) - [212] (byte) remove_line::i2#2 ← phi( remove_line::@1/(byte) remove_line::i2#3 remove_line::@2/(byte) remove_line::i2#1 ) - [212] (byte) remove_line::i1#2 ← phi( remove_line::@1/(byte) remove_line::i1#3 remove_line::@2/(byte) remove_line::i1#1 ) - [213] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_line::i2#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_line::i1#2) - [214] (byte) remove_line::i2#1 ← -- (byte) remove_line::i2#2 - [215] (byte) remove_line::i1#1 ← -- (byte) remove_line::i1#2 - [216] (byte) remove_line::x#1 ← ++ (byte) remove_line::x#2 - [217] if((byte) remove_line::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_line::@2 - to:remove_line::@3 -remove_line::@3: scope:[remove_line] from remove_line::@2 - [218] (byte) remove_line::y#1 ← -- (byte) remove_line::y#4 - [219] if((byte) remove_line::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_line::@1 - to:remove_line::@return -remove_line::@return: scope:[remove_line] from remove_line::@3 - [220] return - to:@return -find_line: scope:[find_line] from remove_lines::@1 - [221] phi() - to:find_line::@1 -find_line::@1: scope:[find_line] from find_line find_line::@11 - [222] (byte) find_line::y#8 ← phi( find_line/(byte/signed byte/word/signed word/dword/signed dword) 0 find_line::@11/(byte) find_line::y#1 ) - [222] (byte) find_line::i#3 ← phi( find_line/(byte/signed byte/word/signed word/dword/signed dword) 0 find_line::@11/(byte~) find_line::i#8 ) - to:find_line::@2 -find_line::@2: scope:[find_line] from find_line::@1 find_line::@12 - [223] (byte) find_line::filled#4 ← phi( find_line::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 find_line::@12/(byte) find_line::filled#2 ) - [223] (byte) find_line::x#2 ← phi( find_line::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 find_line::@12/(byte) find_line::x#1 ) - [223] (byte) find_line::i#2 ← phi( find_line::@1/(byte) find_line::i#3 find_line::@12/(byte~) find_line::i#10 ) - [224] (byte) find_line::i#1 ← ++ (byte) find_line::i#2 - [225] if(*((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) find_line::i#2)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto find_line::@13 - to:find_line::@3 -find_line::@3: scope:[find_line] from find_line::@13 find_line::@2 - [226] (byte) find_line::filled#2 ← phi( find_line::@13/(byte) find_line::filled#4 find_line::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [227] (byte) find_line::x#1 ← ++ (byte) find_line::x#2 - [228] if((byte) find_line::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 find_line::@12 - to:find_line::@6 -find_line::@6: scope:[find_line] from find_line::@3 - [229] if((byte) find_line::filled#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto find_line::@4 - to:find_line::@return -find_line::@return: scope:[find_line] from find_line::@4 find_line::@6 - [230] (byte) find_line::return#2 ← phi( find_line::@6/(byte) find_line::y#8 find_line::@4/(byte/word/signed word/dword/signed dword) 255 ) - [231] return - to:@return -find_line::@4: scope:[find_line] from find_line::@6 - [232] (byte) find_line::y#1 ← ++ (byte) find_line::y#8 - [233] if((byte) find_line::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 find_line::@11 - to:find_line::@return -find_line::@11: scope:[find_line] from find_line::@4 - [234] (byte~) find_line::i#8 ← (byte) find_line::i#1 - to:find_line::@1 -find_line::@12: scope:[find_line] from find_line::@3 - [235] (byte~) find_line::i#10 ← (byte) find_line::i#1 - to:find_line::@2 -find_line::@13: scope:[find_line] from find_line::@2 - [236] phi() - to:find_line::@3 lock_current: scope:[lock_current] from play_move_down::@13 - [237] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [219] (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 - [238] (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 ) - [238] (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 ) - [238] (byte) lock_current::ypos2#2 ← phi( lock_current/(byte) lock_current::ypos2#0 lock_current::@7/(byte) lock_current::ypos2#1 ) - [239] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) - [240] (byte) lock_current::col#0 ← (byte) current_xpos#16 + [220] (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 ) + [220] (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 ) + [220] (byte) lock_current::ypos2#2 ← phi( lock_current/(byte) lock_current::ypos2#0 lock_current::@7/(byte) lock_current::ypos2#1 ) + [221] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) + [222] (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 - [241] (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 ) - [241] (byte) lock_current::col#2 ← phi( lock_current::@1/(byte) lock_current::col#0 lock_current::@8/(byte) lock_current::col#1 ) - [241] (byte) lock_current::i#2 ← phi( lock_current::@1/(byte) lock_current::i#3 lock_current::@8/(byte~) lock_current::i#9 ) - [242] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 - [243] 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 + [223] (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 ) + [223] (byte) lock_current::col#2 ← phi( lock_current::@1/(byte) lock_current::col#0 lock_current::@8/(byte) lock_current::col#1 ) + [223] (byte) lock_current::i#2 ← phi( lock_current::@1/(byte) lock_current::i#3 lock_current::@8/(byte~) lock_current::i#9 ) + [224] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 + [225] 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 - [244] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 + [226] *((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 - [245] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 - [246] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 - [247] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@8 + [227] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 + [228] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 + [229] 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 - [248] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [249] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 - [250] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@7 + [230] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [231] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 + [232] 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 - [251] return + [233] return to:@return lock_current::@7: scope:[lock_current] from lock_current::@5 - [252] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 + [234] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 to:lock_current::@1 lock_current::@8: scope:[lock_current] from lock_current::@3 - [253] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 + [235] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 to:lock_current::@2 keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@10 keyboard_event_scan::@11 keyboard_event_scan::@20 keyboard_event_scan::@9 play_move_down::@1 - [254] (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 ) - [255] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 - [256] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) - [257] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [258] (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) + [236] (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 ) + [237] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 + [238] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) + [239] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [240] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) to:keyboard_event_pressed::@return keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed - [259] return + [241] return to:@return keyboard_event_get: scope:[keyboard_event_get] from main::@27 - [260] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return + [242] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return to:keyboard_event_get::@3 keyboard_event_get::@3: scope:[keyboard_event_get] from keyboard_event_get - [261] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 - [262] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) + [243] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 + [244] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) to:keyboard_event_get::@return keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@3 - [263] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) - [263] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) - [264] return + [245] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) + [245] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) + [246] return to:@return keyboard_event_scan: scope:[keyboard_event_scan] from main::@9 - [265] phi() + [247] phi() to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@3 - [266] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) - [266] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) - [266] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) - [267] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 - [268] call keyboard_matrix_read - [269] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + [248] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) + [248] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) + [248] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) + [249] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 + [250] call keyboard_matrix_read + [251] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 to:keyboard_event_scan::@25 keyboard_event_scan::@25: scope:[keyboard_event_scan] from keyboard_event_scan::@1 - [270] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 - [271] 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 + [252] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 + [253] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 to:keyboard_event_scan::@13 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@25 - [272] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 + [254] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 to:keyboard_event_scan::@3 keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@19 - [273] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) - [273] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) - [274] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 - [275] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 + [255] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) + [255] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) + [256] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 + [257] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 to:keyboard_event_scan::@20 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - [276] phi() - [277] call keyboard_event_pressed - [278] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + [258] phi() + [259] call keyboard_event_pressed + [260] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@26 keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - [279] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 - [280] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 + [261] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + [262] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 to:keyboard_event_scan::@21 keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26 - [281] phi() + [263] phi() to:keyboard_event_scan::@9 keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - [282] phi() - [283] call keyboard_event_pressed - [284] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + [264] phi() + [265] call keyboard_event_pressed + [266] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@27 keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - [285] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 - [286] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 + [267] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + [268] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 to:keyboard_event_scan::@22 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 - [287] phi() + [269] phi() to:keyboard_event_scan::@10 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 - [288] phi() - [289] call keyboard_event_pressed - [290] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + [270] phi() + [271] call keyboard_event_pressed + [272] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@28 keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - [291] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 - [292] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 + [273] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + [274] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 to:keyboard_event_scan::@23 keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28 - [293] phi() + [275] phi() to:keyboard_event_scan::@11 keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28 - [294] phi() - [295] call keyboard_event_pressed - [296] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + [276] phi() + [277] call keyboard_event_pressed + [278] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@29 keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan::@11 - [297] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 - [298] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return + [279] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + [280] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return to:keyboard_event_scan::@24 keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@29 - [299] phi() + [281] phi() to:keyboard_event_scan::@return keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@24 keyboard_event_scan::@29 - [300] return + [282] return to:@return keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@25 keyboard_event_scan::@5 - [301] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) - [301] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) - [301] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) - [302] (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) - [303] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [304] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 + [283] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) + [283] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) + [283] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) + [284] (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) + [285] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [286] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 to:keyboard_event_scan::@15 keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@4 - [305] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 + [287] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 to:keyboard_event_scan::@16 keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@15 - [306] (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) - [307] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 + [288] (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) + [289] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 to:keyboard_event_scan::@17 keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [308] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 - [309] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 + [290] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 + [291] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 - [310] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) - [311] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 - [312] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 - [313] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 + [292] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) + [293] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 + [294] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 + [295] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 to:keyboard_event_scan::@19 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@5 - [314] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 + [296] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 to:keyboard_event_scan::@3 keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [315] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 - [316] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 - [317] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 + [297] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 + [298] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 + [299] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@1 - [318] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) - [319] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) + [300] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) + [301] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) to:keyboard_matrix_read::@return keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read - [320] return + [302] return to:@return tables_init: scope:[tables_init] from main::@22 - [321] phi() + [303] phi() to:tables_init::@1 tables_init::@1: scope:[tables_init] from tables_init tables_init::@1 - [322] (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 ) - [322] (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 ) - [322] (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 ) - [323] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [324] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 - [325] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 - [326] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 - [327] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 - [328] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 - [329] 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 + [304] (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 ) + [304] (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 ) + [304] (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 ) + [305] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [306] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 + [307] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 + [308] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 + [309] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 + [310] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 + [311] 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 - [330] *((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 + [312] *((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 - [331] return + [313] return to:@return render_init: scope:[render_init] from main::@21 - [332] phi() - [333] call fill + [314] phi() + [315] call fill to:render_init::@7 render_init::@7: scope:[render_init] from render_init - [334] phi() - [335] call fill + [316] phi() + [317] call fill to:render_init::@1 render_init::@1: scope:[render_init] from render_init::@1 render_init::@7 - [336] (byte*) render_init::li#2 ← phi( render_init::@1/(byte*) render_init::li#1 render_init::@7/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 ) - [336] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [337] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [338] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 - [339] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [340] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 - [341] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 + [318] (byte*) render_init::li#2 ← phi( render_init::@1/(byte*) render_init::li#1 render_init::@7/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 ) + [318] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [319] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [320] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 + [321] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [322] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 + [323] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 to:render_init::@2 render_init::@2: scope:[render_init] from render_init::@1 render_init::@5 - [342] (byte) render_init::l#4 ← phi( render_init::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_init::@5/(byte) render_init::l#1 ) - [342] (byte*) render_init::line#4 ← phi( render_init::@1/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 render_init::@5/(byte*) render_init::line#1 ) + [324] (byte) render_init::l#4 ← phi( render_init::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_init::@5/(byte) render_init::l#1 ) + [324] (byte*) render_init::line#4 ← phi( render_init::@1/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 render_init::@5/(byte*) render_init::line#1 ) to:render_init::@3 render_init::@3: scope:[render_init] from render_init::@2 render_init::@3 - [343] (byte) render_init::c#2 ← phi( render_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_init::@3/(byte) render_init::c#1 ) - [344] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 - [345] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 - [346] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 - [347] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 + [325] (byte) render_init::c#2 ← phi( render_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_init::@3/(byte) render_init::c#1 ) + [326] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 + [327] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 + [328] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 + [329] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 to:render_init::@5 render_init::@5: scope:[render_init] from render_init::@3 - [348] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [349] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 - [350] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 + [330] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [331] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 + [332] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 to:render_init::@return render_init::@return: scope:[render_init] from render_init::@5 - [351] return + [333] return to:@return fill: scope:[fill] from render_init render_init::@7 - [352] (byte) fill::val#3 ← phi( render_init/(byte/word/signed word/dword/signed dword) 160 render_init::@7/(const byte) BLACK#0 ) - [352] (byte*) fill::addr#0 ← phi( render_init/(const byte*) SCREEN#0 render_init::@7/(const byte*) COLS#0 ) - [353] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 + [334] (byte) fill::val#3 ← phi( render_init/(byte/word/signed word/dword/signed dword) 160 render_init::@7/(const byte) BLACK#0 ) + [334] (byte*) fill::addr#0 ← phi( render_init/(const byte*) SCREEN#0 render_init::@7/(const byte*) COLS#0 ) + [335] (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 - [354] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) - [355] *((byte*) fill::addr#2) ← (byte) fill::val#3 - [356] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [357] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 + [336] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) + [337] *((byte*) fill::addr#2) ← (byte) fill::val#3 + [338] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [339] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [358] return + [340] return to:@return sid_rnd_init: scope:[sid_rnd_init] from main - [359] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 - [360] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 + [341] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 + [342] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 to:sid_rnd_init::@return sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init - [361] return + [343] return to:@return diff --git a/src/test/ref/examples/tetris/tetris.log b/src/test/ref/examples/tetris/tetris.log index c0753e4e6..c50426c49 100644 --- a/src/test/ref/examples/tetris/tetris.log +++ b/src/test/ref/examples/tetris/tetris.log @@ -103,14 +103,14 @@ keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan:: (byte) keyboard_event_scan::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:keyboard_event_scan::@4 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@25 - (byte) keyboard_events_size#60 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#36 ) + (byte) keyboard_events_size#61 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#36 ) (byte) keyboard_event_scan::row#7 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::row#3 ) (byte) keyboard_event_scan::keycode#3 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#7 ) (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$2 ← (byte) keyboard_event_scan::keycode#3 + (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) keyboard_event_scan::keycode#1 ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$2 to:keyboard_event_scan::@3 keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@19 - (byte) keyboard_events_size#55 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#60 keyboard_event_scan::@19/(byte) keyboard_events_size#61 ) + (byte) keyboard_events_size#55 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#61 keyboard_event_scan::@19/(byte) keyboard_events_size#62 ) (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) (byte) keyboard_event_scan::row#4 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::row#7 keyboard_event_scan::@19/(byte) keyboard_event_scan::row#6 ) (byte) keyboard_event_scan::row#1 ← (byte) keyboard_event_scan::row#4 + rangenext(0,7) @@ -188,21 +188,21 @@ keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan: (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#12 to:keyboard_event_scan::@5 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@5 - (byte) keyboard_events_size#61 ← phi( keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) + (byte) keyboard_events_size#62 ← phi( keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) (byte) keyboard_event_scan::keycode#15 ← phi( keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#2 ) (byte) keyboard_event_scan::row#6 ← phi( keyboard_event_scan::@5/(byte) keyboard_event_scan::row#9 ) (byte) keyboard_event_scan::row_scan#3 ← phi( keyboard_event_scan::@5/(byte) keyboard_event_scan::row_scan#5 ) *((byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#6) ← (byte) keyboard_event_scan::row_scan#3 to:keyboard_event_scan::@3 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - (byte) keyboard_events_size#70 ← phi( keyboard_event_scan::@3/(byte) keyboard_events_size#55 ) + (byte) keyboard_events_size#71 ← phi( keyboard_event_scan::@3/(byte) keyboard_events_size#55 ) (byte) keyboard_modifiers#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_event_pressed::keycode#0 ← (byte) KEY_LSHIFT#0 call keyboard_event_pressed (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#5 to:keyboard_event_scan::@26 keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - (byte) keyboard_events_size#68 ← phi( keyboard_event_scan::@20/(byte) keyboard_events_size#70 ) + (byte) keyboard_events_size#69 ← phi( keyboard_event_scan::@20/(byte) keyboard_events_size#71 ) (byte) keyboard_modifiers#18 ← phi( keyboard_event_scan::@20/(byte) keyboard_modifiers#1 ) (byte) keyboard_event_pressed::return#7 ← phi( keyboard_event_scan::@20/(byte) keyboard_event_pressed::return#0 ) (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#7 @@ -211,14 +211,14 @@ keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$16) goto keyboard_event_scan::@9 to:keyboard_event_scan::@21 keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - (byte) keyboard_events_size#65 ← phi( keyboard_event_scan::@21/(byte) keyboard_events_size#67 keyboard_event_scan::@26/(byte) keyboard_events_size#68 ) + (byte) keyboard_events_size#66 ← phi( keyboard_event_scan::@21/(byte) keyboard_events_size#68 keyboard_event_scan::@26/(byte) keyboard_events_size#69 ) (byte) keyboard_modifiers#26 ← phi( keyboard_event_scan::@21/(byte) keyboard_modifiers#2 keyboard_event_scan::@26/(byte) keyboard_modifiers#18 ) (byte) keyboard_event_pressed::keycode#1 ← (byte) KEY_RSHIFT#0 call keyboard_event_pressed (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#5 to:keyboard_event_scan::@27 keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - (byte) keyboard_events_size#63 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#65 ) + (byte) keyboard_events_size#64 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#66 ) (byte) keyboard_modifiers#19 ← phi( keyboard_event_scan::@9/(byte) keyboard_modifiers#26 ) (byte) keyboard_event_pressed::return#8 ← phi( keyboard_event_scan::@9/(byte) keyboard_event_pressed::return#1 ) (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#8 @@ -227,13 +227,13 @@ keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$20) goto keyboard_event_scan::@10 to:keyboard_event_scan::@22 keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26 - (byte) keyboard_events_size#67 ← phi( keyboard_event_scan::@26/(byte) keyboard_events_size#68 ) + (byte) keyboard_events_size#68 ← phi( keyboard_event_scan::@26/(byte) keyboard_events_size#69 ) (byte) keyboard_modifiers#10 ← phi( keyboard_event_scan::@26/(byte) keyboard_modifiers#18 ) (byte~) keyboard_event_scan::$17 ← (byte) keyboard_modifiers#10 | (byte) KEY_MODIFIER_LSHIFT#0 (byte) keyboard_modifiers#2 ← (byte~) keyboard_event_scan::$17 to:keyboard_event_scan::@9 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 - (byte) keyboard_events_size#56 ← phi( keyboard_event_scan::@22/(byte) keyboard_events_size#62 keyboard_event_scan::@27/(byte) keyboard_events_size#63 ) + (byte) keyboard_events_size#56 ← phi( keyboard_event_scan::@22/(byte) keyboard_events_size#63 keyboard_event_scan::@27/(byte) keyboard_events_size#64 ) (byte) keyboard_modifiers#27 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#19 ) (byte) keyboard_event_pressed::keycode#2 ← (byte) KEY_CTRL#0 call keyboard_event_pressed @@ -249,7 +249,7 @@ keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan: if((bool~) keyboard_event_scan::$24) goto keyboard_event_scan::@11 to:keyboard_event_scan::@23 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 - (byte) keyboard_events_size#62 ← phi( keyboard_event_scan::@27/(byte) keyboard_events_size#63 ) + (byte) keyboard_events_size#63 ← phi( keyboard_event_scan::@27/(byte) keyboard_events_size#64 ) (byte) keyboard_modifiers#11 ← phi( keyboard_event_scan::@27/(byte) keyboard_modifiers#19 ) (byte~) keyboard_event_scan::$21 ← (byte) keyboard_modifiers#11 | (byte) KEY_MODIFIER_RSHIFT#0 (byte) keyboard_modifiers#3 ← (byte~) keyboard_event_scan::$21 @@ -328,8 +328,8 @@ keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get return to:@return @11: scope:[] from @8 - (byte) keyboard_modifiers#39 ← phi( @8/(byte) keyboard_modifiers#0 ) - (byte) keyboard_events_size#48 ← phi( @8/(byte) keyboard_events_size#0 ) + (byte) keyboard_modifiers#45 ← phi( @8/(byte) keyboard_modifiers#0 ) + (byte) keyboard_events_size#57 ← phi( @8/(byte) keyboard_events_size#0 ) (word*) SID_VOICE3_FREQ#0 ← ((word*)) (word/dword/signed dword) 54286 (byte*) SID_VOICE3_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 54290 (byte) SID_CONTROL_NOISE#0 ← (byte/word/signed word/dword/signed dword) 128 @@ -351,8 +351,8 @@ sid_rnd::@return: scope:[sid_rnd] from sid_rnd return to:@return @13: scope:[] from @11 - (byte) keyboard_modifiers#38 ← phi( @11/(byte) keyboard_modifiers#39 ) - (byte) keyboard_events_size#44 ← phi( @11/(byte) keyboard_events_size#48 ) + (byte) keyboard_modifiers#44 ← phi( @11/(byte) keyboard_modifiers#45 ) + (byte) keyboard_events_size#53 ← phi( @11/(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 } @@ -399,41 +399,38 @@ sid_rnd::@return: scope:[sid_rnd] from sid_rnd (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 - (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 - (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:@17 -main: scope:[main] from @27 - (byte) current_movedown_counter#45 ← phi( @27/(byte) current_movedown_counter#20 ) - (byte) keyboard_modifiers#51 ← phi( @27/(byte) keyboard_modifiers#25 ) - (byte) keyboard_events_size#69 ← phi( @27/(byte) keyboard_events_size#28 ) - (byte) current_piece_color#51 ← phi( @27/(byte) current_piece_color#26 ) - (byte) current_ypos#59 ← phi( @27/(byte) current_ypos#39 ) - (byte) current_xpos#79 ← phi( @27/(byte) current_xpos#47 ) - (byte*) current_piece_gfx#66 ← phi( @27/(byte*) current_piece_gfx#36 ) - (byte) current_orientation#61 ← phi( @27/(byte) current_orientation#40 ) - (byte*) current_piece#53 ← phi( @27/(byte*) current_piece#29 ) - (byte*) SCREEN#3 ← phi( @27/(byte*) SCREEN#4 ) +main: scope:[main] from @25 + (byte) current_movedown_counter#46 ← phi( @25/(byte) current_movedown_counter#20 ) + (byte) keyboard_modifiers#52 ← phi( @25/(byte) keyboard_modifiers#25 ) + (byte) keyboard_events_size#70 ← phi( @25/(byte) keyboard_events_size#28 ) + (byte) current_piece_color#52 ← phi( @25/(byte) current_piece_color#26 ) + (byte) current_ypos#60 ← phi( @25/(byte) current_ypos#39 ) + (byte) current_xpos#80 ← phi( @25/(byte) current_xpos#47 ) + (byte*) current_piece_gfx#67 ← phi( @25/(byte*) current_piece_gfx#36 ) + (byte) current_orientation#62 ← phi( @25/(byte) current_orientation#40 ) + (byte*) current_piece#54 ← phi( @25/(byte*) current_piece#29 ) + (byte*) SCREEN#3 ← phi( @25/(byte*) SCREEN#4 ) 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#50 ← phi( main/(byte) keyboard_modifiers#51 ) - (byte) keyboard_events_size#66 ← phi( main/(byte) keyboard_events_size#69 ) - (byte) current_piece_color#38 ← phi( main/(byte) current_piece_color#51 ) - (byte) current_ypos#51 ← phi( main/(byte) current_ypos#59 ) - (byte) current_xpos#66 ← phi( main/(byte) current_xpos#79 ) - (byte*) current_piece_gfx#53 ← phi( main/(byte*) current_piece_gfx#66 ) - (byte) current_orientation#51 ← phi( main/(byte) current_orientation#61 ) - (byte*) current_piece#42 ← phi( main/(byte*) current_piece#53 ) + (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#41 ← phi( main::@21/(byte) current_movedown_counter#44 ) - (byte) keyboard_modifiers#48 ← phi( main::@21/(byte) keyboard_modifiers#50 ) - (byte) keyboard_events_size#64 ← phi( main::@21/(byte) keyboard_events_size#66 ) + (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 ) @@ -443,9 +440,9 @@ main::@22: scope:[main] from main::@21 call tables_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#45 ← phi( main::@22/(byte) keyboard_modifiers#48 ) - (byte) keyboard_events_size#57 ← phi( main::@22/(byte) keyboard_events_size#64 ) + (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 ) @@ -455,9 +452,9 @@ main::@23: scope:[main] from main::@22 call 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#45 ) - (byte) keyboard_events_size#49 ← phi( main::@23/(byte) keyboard_events_size#57 ) + (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 ) @@ -473,9 +470,9 @@ main::@24: scope:[main] from main::@23 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#33 ) - (byte) keyboard_modifiers#33 ← phi( main::@24/(byte) keyboard_modifiers#40 ) - (byte) keyboard_events_size#39 ← phi( main::@24/(byte) keyboard_events_size#49 ) + (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 ) @@ -508,72 +505,72 @@ main::@1: scope:[main] from main::@10 main::@26 if(true) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - (byte) current_piece_color#68 ← phi( main::@1/(byte) current_piece_color#20 ) - (byte) current_xpos#92 ← phi( main::@1/(byte) current_xpos#32 ) - (byte*) current_piece_gfx#80 ← phi( main::@1/(byte*) current_piece_gfx#26 ) - (byte) current_orientation#71 ← phi( main::@1/(byte) current_orientation#29 ) - (byte*) current_piece#65 ← phi( main::@1/(byte*) current_piece#20 ) - (byte) current_ypos#67 ← phi( main::@1/(byte) current_ypos#26 ) - (byte) current_movedown_counter#42 ← phi( main::@1/(byte) current_movedown_counter#15 ) - (byte) keyboard_modifiers#41 ← phi( main::@1/(byte) keyboard_modifiers#24 ) - (byte) keyboard_events_size#50 ← phi( main::@1/(byte) keyboard_events_size#27 ) + (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#61 ← phi( main::@2/(byte) current_piece_color#68 main::@5/(byte) current_piece_color#69 ) - (byte) current_xpos#87 ← phi( main::@2/(byte) current_xpos#92 main::@5/(byte) current_xpos#93 ) - (byte*) current_piece_gfx#75 ← phi( main::@2/(byte*) current_piece_gfx#80 main::@5/(byte*) current_piece_gfx#81 ) - (byte) current_orientation#66 ← phi( main::@2/(byte) current_orientation#71 main::@5/(byte) current_orientation#72 ) - (byte*) current_piece#60 ← phi( main::@2/(byte*) current_piece#65 main::@5/(byte*) current_piece#66 ) - (byte) current_ypos#63 ← phi( main::@2/(byte) current_ypos#67 main::@5/(byte) current_ypos#68 ) - (byte) current_movedown_counter#38 ← phi( main::@2/(byte) current_movedown_counter#42 main::@5/(byte) current_movedown_counter#43 ) - (byte) keyboard_modifiers#34 ← phi( main::@2/(byte) keyboard_modifiers#41 main::@5/(byte) keyboard_modifiers#42 ) - (byte) keyboard_events_size#40 ← phi( main::@2/(byte) keyboard_events_size#50 main::@5/(byte) keyboard_events_size#51 ) + (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#69 ← phi( main::@4/(byte) current_piece_color#61 ) - (byte) current_xpos#93 ← phi( main::@4/(byte) current_xpos#87 ) - (byte*) current_piece_gfx#81 ← phi( main::@4/(byte*) current_piece_gfx#75 ) - (byte) current_orientation#72 ← phi( main::@4/(byte) current_orientation#66 ) - (byte*) current_piece#66 ← phi( main::@4/(byte*) current_piece#60 ) - (byte) current_ypos#68 ← phi( main::@4/(byte) current_ypos#63 ) - (byte) current_movedown_counter#43 ← phi( main::@4/(byte) current_movedown_counter#38 ) - (byte) keyboard_modifiers#42 ← phi( main::@4/(byte) keyboard_modifiers#34 ) - (byte) keyboard_events_size#51 ← phi( main::@4/(byte) keyboard_events_size#40 ) + (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#52 ← phi( main::@4/(byte) current_piece_color#61 main::@8/(byte) current_piece_color#62 ) - (byte) current_xpos#80 ← phi( main::@4/(byte) current_xpos#87 main::@8/(byte) current_xpos#88 ) - (byte*) current_piece_gfx#67 ← phi( main::@4/(byte*) current_piece_gfx#75 main::@8/(byte*) current_piece_gfx#76 ) - (byte) current_orientation#62 ← phi( main::@4/(byte) current_orientation#66 main::@8/(byte) current_orientation#67 ) - (byte*) current_piece#54 ← phi( main::@4/(byte*) current_piece#60 main::@8/(byte*) current_piece#61 ) - (byte) current_ypos#60 ← phi( main::@4/(byte) current_ypos#63 main::@8/(byte) current_ypos#64 ) - (byte) current_movedown_counter#34 ← phi( main::@4/(byte) current_movedown_counter#38 main::@8/(byte) current_movedown_counter#39 ) + (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#62 ← phi( main::@7/(byte) current_piece_color#52 ) - (byte) current_xpos#88 ← phi( main::@7/(byte) current_xpos#80 ) - (byte*) current_piece_gfx#76 ← phi( main::@7/(byte*) current_piece_gfx#67 ) - (byte) current_orientation#67 ← phi( main::@7/(byte) current_orientation#62 ) - (byte*) current_piece#61 ← phi( main::@7/(byte*) current_piece#54 ) - (byte) current_ypos#64 ← phi( main::@7/(byte) current_ypos#60 ) - (byte) current_movedown_counter#39 ← phi( main::@7/(byte) current_movedown_counter#34 ) + (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#52 ) - (byte) current_xpos#68 ← phi( main::@7/(byte) current_xpos#80 ) - (byte*) current_piece_gfx#55 ← phi( main::@7/(byte*) current_piece_gfx#67 ) - (byte) current_orientation#53 ← phi( main::@7/(byte) current_orientation#62 ) - (byte*) current_piece#44 ← phi( main::@7/(byte*) current_piece#54 ) - (byte) current_ypos#52 ← phi( main::@7/(byte) current_ypos#60 ) - (byte) current_movedown_counter#28 ← phi( main::@7/(byte) current_movedown_counter#34 ) + (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) @@ -595,7 +592,7 @@ main::@27: scope:[main] from main::@9 (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#49 ← phi( main::@27/(byte) keyboard_modifiers#7 ) + (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 ) @@ -614,8 +611,8 @@ main::@28: scope:[main] from main::@27 (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#46 ← phi( main::@28/(byte) keyboard_modifiers#49 ) - (byte) keyboard_events_size#58 ← phi( main::@28/(byte) keyboard_events_size#7 ) + (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 ) @@ -640,11 +637,11 @@ main::@29: scope:[main] from main::@28 (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#35 ← phi( main::@29/(byte) current_movedown_counter#1 ) - (byte) keyboard_modifiers#43 ← phi( main::@29/(byte) keyboard_modifiers#46 ) - (byte) keyboard_events_size#52 ← phi( main::@29/(byte) keyboard_events_size#58 ) - (byte) current_piece_color#53 ← phi( main::@29/(byte) current_piece_color#2 ) - (byte*) current_piece#55 ← phi( main::@29/(byte*) current_piece#2 ) + (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 ) @@ -660,13 +657,13 @@ main::@30: scope:[main] from main::@29 (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#35 ) - (byte) keyboard_modifiers#36 ← phi( main::@30/(byte) keyboard_modifiers#43 ) - (byte) keyboard_events_size#42 ← phi( main::@30/(byte) keyboard_events_size#52 ) - (byte) current_piece_color#41 ← phi( main::@30/(byte) current_piece_color#53 ) + (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#55 ) + (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 ) @@ -692,39 +689,39 @@ main::@10: scope:[main] from main::@31 main::@33 *((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#29 ) - (byte) keyboard_modifiers#47 ← phi( main::@31/(byte) keyboard_modifiers#36 ) - (byte) keyboard_events_size#59 ← phi( main::@31/(byte) keyboard_events_size#42 ) - (byte) current_piece_color#63 ← phi( main::@31/(byte) current_piece_color#41 ) - (byte*) current_piece_gfx#77 ← phi( main::@31/(byte*) current_piece_gfx#3 ) - (byte) current_orientation#68 ← phi( main::@31/(byte) current_orientation#3 ) - (byte*) current_piece#62 ← phi( main::@31/(byte*) current_piece#45 ) - (byte) current_xpos#81 ← phi( main::@31/(byte) current_xpos#69 ) + (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#36 ← phi( main::@19/(byte) current_movedown_counter#40 ) - (byte) keyboard_modifiers#44 ← phi( main::@19/(byte) keyboard_modifiers#47 ) - (byte) keyboard_events_size#53 ← phi( main::@19/(byte) keyboard_events_size#59 ) - (byte) current_piece_color#54 ← phi( main::@19/(byte) current_piece_color#63 ) - (byte*) current_piece_gfx#68 ← phi( main::@19/(byte*) current_piece_gfx#77 ) - (byte) current_orientation#63 ← phi( main::@19/(byte) current_orientation#68 ) - (byte*) current_piece#56 ← phi( main::@19/(byte*) current_piece#62 ) - (byte) current_xpos#77 ← phi( main::@19/(byte) current_xpos#81 ) + (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#36 ) - (byte) keyboard_modifiers#37 ← phi( main::@32/(byte) keyboard_modifiers#44 ) - (byte) keyboard_events_size#43 ← phi( main::@32/(byte) keyboard_events_size#53 ) - (byte) current_piece_color#42 ← phi( main::@32/(byte) current_piece_color#54 ) + (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#77 ) - (byte*) current_piece_gfx#56 ← phi( main::@32/(byte*) current_piece_gfx#68 ) - (byte) current_orientation#54 ← phi( main::@32/(byte) current_orientation#63 ) - (byte*) current_piece#46 ← phi( main::@32/(byte*) current_piece#56 ) + (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 ) @@ -748,12 +745,12 @@ main::@return: scope:[main] from main::@1 return to:@return play_move_down: scope:[play_move_down] from main::@28 - (byte) current_piece_color#70 ← phi( main::@28/(byte) current_piece_color#19 ) - (byte*) current_piece_gfx#82 ← phi( main::@28/(byte*) current_piece_gfx#24 ) - (byte*) current_piece#67 ← phi( main::@28/(byte*) current_piece#19 ) - (byte) current_orientation#69 ← phi( main::@28/(byte) current_orientation#27 ) - (byte) current_xpos#89 ← phi( main::@28/(byte) current_xpos#31 ) - (byte) current_ypos#65 ← phi( main::@28/(byte) current_ypos#25 ) + (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 @@ -763,12 +760,12 @@ play_move_down: scope:[play_move_down] from main::@28 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#70 play_move_down::@8/(byte) current_piece_color#71 ) - (byte*) current_piece_gfx#78 ← phi( play_move_down/(byte*) current_piece_gfx#82 play_move_down::@8/(byte*) current_piece_gfx#83 ) - (byte*) current_piece#63 ← phi( play_move_down/(byte*) current_piece#67 play_move_down::@8/(byte*) current_piece#68 ) - (byte) current_orientation#64 ← phi( play_move_down/(byte) current_orientation#69 play_move_down::@8/(byte) current_orientation#70 ) - (byte) current_xpos#82 ← phi( play_move_down/(byte) current_xpos#89 play_move_down::@8/(byte) current_xpos#90 ) - (byte) current_ypos#61 ← phi( play_move_down/(byte) current_ypos#65 play_move_down::@8/(byte) current_ypos#66 ) + (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 @@ -776,12 +773,12 @@ play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down:: (byte) keyboard_event_pressed::return#6 ← (byte) keyboard_event_pressed::return#5 to:play_move_down::@17 play_move_down::@17: scope:[play_move_down] from play_move_down::@1 - (byte) current_piece_color#56 ← phi( play_move_down::@1/(byte) current_piece_color#64 ) - (byte*) current_piece_gfx#70 ← phi( play_move_down::@1/(byte*) current_piece_gfx#78 ) - (byte*) current_piece#58 ← phi( play_move_down::@1/(byte*) current_piece#63 ) - (byte) current_orientation#56 ← phi( play_move_down::@1/(byte) current_orientation#64 ) - (byte) current_xpos#72 ← phi( play_move_down::@1/(byte) current_xpos#82 ) - (byte) current_ypos#56 ← phi( play_move_down::@1/(byte) current_ypos#61 ) + (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 ) @@ -791,20 +788,20 @@ play_move_down::@17: scope:[play_move_down] from play_move_down::@1 if((bool~) play_move_down::$4) goto play_move_down::@2 to:play_move_down::@9 play_move_down::@8: scope:[play_move_down] from play_move_down - (byte) current_piece_color#71 ← phi( play_move_down/(byte) current_piece_color#70 ) - (byte*) current_piece_gfx#83 ← phi( play_move_down/(byte*) current_piece_gfx#82 ) - (byte*) current_piece#68 ← phi( play_move_down/(byte*) current_piece#67 ) - (byte) current_orientation#70 ← phi( play_move_down/(byte) current_orientation#69 ) - (byte) current_xpos#90 ← phi( play_move_down/(byte) current_xpos#89 ) - (byte) current_ypos#66 ← phi( play_move_down/(byte) current_ypos#65 ) + (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#55 play_move_down::@17/(byte) current_piece_color#56 play_move_down::@3/(byte) current_piece_color#57 ) - (byte*) current_piece_gfx#58 ← phi( play_move_down::@10/(byte*) current_piece_gfx#69 play_move_down::@17/(byte*) current_piece_gfx#70 play_move_down::@3/(byte*) current_piece_gfx#71 ) - (byte*) current_piece#48 ← phi( play_move_down::@10/(byte*) current_piece#57 play_move_down::@17/(byte*) current_piece#58 play_move_down::@3/(byte*) current_piece#59 ) + (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 ) @@ -815,12 +812,12 @@ play_move_down::@2: scope:[play_move_down] from play_move_down::@10 play_move_d 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#56 ) - (byte*) current_piece_gfx#79 ← phi( play_move_down::@17/(byte*) current_piece_gfx#70 ) - (byte*) current_piece#64 ← phi( play_move_down::@17/(byte*) current_piece#58 ) - (byte) current_orientation#65 ← phi( play_move_down::@17/(byte) current_orientation#56 ) - (byte) current_xpos#83 ← phi( play_move_down::@17/(byte) current_xpos#72 ) - (byte) current_ypos#62 ← phi( play_move_down::@17/(byte) current_ypos#56 ) + (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 @@ -828,22 +825,22 @@ play_move_down::@9: scope:[play_move_down] from play_move_down::@17 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#57 ← phi( play_move_down::@9/(byte) current_piece_color#65 ) - (byte*) current_piece_gfx#71 ← phi( play_move_down::@9/(byte*) current_piece_gfx#79 ) - (byte*) current_piece#59 ← phi( play_move_down::@9/(byte*) current_piece#64 ) - (byte) current_orientation#57 ← phi( play_move_down::@9/(byte) current_orientation#65 ) - (byte) current_xpos#73 ← phi( play_move_down::@9/(byte) current_xpos#83 ) - (byte) current_ypos#57 ← phi( play_move_down::@9/(byte) current_ypos#62 ) + (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#55 ← phi( play_move_down::@9/(byte) current_piece_color#65 ) - (byte*) current_piece_gfx#69 ← phi( play_move_down::@9/(byte*) current_piece_gfx#79 ) - (byte*) current_piece#57 ← phi( play_move_down::@9/(byte*) current_piece#64 ) - (byte) current_orientation#55 ← phi( play_move_down::@9/(byte) current_orientation#65 ) - (byte) current_xpos#71 ← phi( play_move_down::@9/(byte) current_xpos#83 ) - (byte) current_ypos#55 ← phi( play_move_down::@9/(byte) current_ypos#62 ) + (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 @@ -883,8 +880,8 @@ play_move_down::@5: scope:[play_move_down] from play_move_down::@4 (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#58 ← phi( play_move_down::@4/(byte) current_piece_color#31 ) - (byte*) current_piece_gfx#72 ← phi( play_move_down::@4/(byte*) current_piece_gfx#41 ) + (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 ) @@ -897,9 +894,9 @@ play_move_down::@12: scope:[play_move_down] from play_move_down::@4 (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#58 ) + (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#72 ) + (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 ) @@ -1078,7 +1075,7 @@ play_move_leftright::@11: scope:[play_move_leftright] from play_move_leftright: 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#55 ) + (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 ) @@ -1088,7 +1085,7 @@ play_move_rotate: scope:[play_move_rotate] from main::@30 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#73 ← phi( play_move_rotate/(byte*) current_piece_gfx#61 ) + (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 ) @@ -1108,7 +1105,7 @@ play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate 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#74 ← phi( play_move_rotate::@6/(byte*) current_piece_gfx#44 ) + (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 ) @@ -1132,7 +1129,7 @@ play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@11 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#73 play_move_rotate::@2/(byte*) current_piece_gfx#74 ) + (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 ) @@ -1169,22 +1166,21 @@ play_move_rotate::@11: scope:[play_move_rotate] from play_move_rotate::@14 (byte) play_move_rotate::return#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_move_rotate::@return @17: scope:[] from @13 - (byte*) SCREEN#5 ← phi( @13/(byte*) SCREEN#0 ) - (byte) current_movedown_counter#26 ← phi( @13/(byte) current_movedown_counter#0 ) - (byte) keyboard_modifiers#32 ← phi( @13/(byte) keyboard_modifiers#38 ) - (byte) keyboard_events_size#35 ← phi( @13/(byte) keyboard_events_size#44 ) - (byte) current_piece_color#37 ← phi( @13/(byte) current_piece_color#0 ) - (byte) current_ypos#50 ← phi( @13/(byte) current_ypos#0 ) - (byte) current_xpos#65 ← phi( @13/(byte) current_xpos#0 ) - (byte*) current_piece_gfx#52 ← phi( @13/(byte*) current_piece_gfx#0 ) - (byte) current_orientation#50 ← phi( @13/(byte) current_orientation#0 ) - (byte*) current_piece#41 ← phi( @13/(byte*) current_piece#0 ) + (byte) current_movedown_counter#33 ← phi( @13/(byte) current_movedown_counter#0 ) + (byte) keyboard_modifiers#38 ← phi( @13/(byte) keyboard_modifiers#44 ) + (byte) keyboard_events_size#44 ← phi( @13/(byte) keyboard_events_size#53 ) + (byte) current_piece_color#49 ← phi( @13/(byte) current_piece_color#0 ) + (byte) current_ypos#59 ← phi( @13/(byte) current_ypos#0 ) + (byte) current_xpos#77 ← phi( @13/(byte) current_xpos#0 ) + (byte*) current_piece_gfx#63 ← phi( @13/(byte*) current_piece_gfx#0 ) + (byte) current_orientation#61 ← phi( @13/(byte) current_orientation#0 ) + (byte*) current_piece#53 ← phi( @13/(byte*) current_piece#0 ) (byte) COLLISION_NONE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) COLLISION_PLAYFIELD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) COLLISION_BOTTOM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) COLLISION_LEFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) COLLISION_RIGHT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 - to:@27 + to:@22 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 ) @@ -1453,142 +1449,91 @@ spawn_current::@return: scope:[spawn_current] from spawn_current::@3 return to:@return remove_lines: scope:[remove_lines] from play_move_down::@19 - (byte) remove_lines::done#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (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::@3 - (byte) remove_lines::done#6 ← phi( remove_lines/(byte) remove_lines::done#0 remove_lines::@3/(byte) remove_lines::done#2 ) - call find_line - (byte) find_line::return#0 ← (byte) find_line::return#2 - to:remove_lines::@7 -remove_lines::@7: scope:[remove_lines] from remove_lines::@1 - (byte) remove_lines::done#5 ← phi( remove_lines::@1/(byte) remove_lines::done#6 ) - (byte) find_line::return#4 ← phi( remove_lines::@1/(byte) find_line::return#0 ) - (byte~) remove_lines::$0 ← (byte) find_line::return#4 - (byte) remove_lines::line_ypos#0 ← (byte~) remove_lines::$0 - (bool~) remove_lines::$1 ← (byte) remove_lines::line_ypos#0 != (byte/word/signed word/dword/signed dword) 255 - if((bool~) remove_lines::$1) goto remove_lines::@2 - to:remove_lines::@4 -remove_lines::@2: scope:[remove_lines] from remove_lines::@7 - (byte) remove_lines::done#4 ← phi( remove_lines::@7/(byte) remove_lines::done#5 ) - (byte) remove_lines::line_ypos#1 ← phi( remove_lines::@7/(byte) remove_lines::line_ypos#0 ) - (byte) remove_line::ypos#0 ← (byte) remove_lines::line_ypos#1 - call remove_line +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::done#3 ← phi( remove_lines::@2/(byte) remove_lines::done#4 ) + (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::@4: scope:[remove_lines] from remove_lines::@7 - (byte) remove_lines::done#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:remove_lines::@3 -remove_lines::@3: scope:[remove_lines] from remove_lines::@4 remove_lines::@8 - (byte) remove_lines::done#2 ← phi( remove_lines::@4/(byte) remove_lines::done#1 remove_lines::@8/(byte) remove_lines::done#3 ) - (bool~) remove_lines::$3 ← (byte) remove_lines::done#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 - if((bool~) remove_lines::$3) goto remove_lines::@1 +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::@return: scope:[remove_lines] from remove_lines::@3 - return - to:@return -find_line: scope:[find_line] from remove_lines::@1 - (byte) find_line::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte/signed word/word/dword/signed dword~) find_line::$0 ← (byte) PLAYFIELD_LINES#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) find_line::y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:find_line::@1 -find_line::@1: scope:[find_line] from find_line find_line::@4 - (byte) find_line::y#8 ← phi( find_line/(byte) find_line::y#0 find_line::@4/(byte) find_line::y#1 ) - (byte) find_line::i#3 ← phi( find_line/(byte) find_line::i#0 find_line::@4/(byte) find_line::i#5 ) - (byte) find_line::filled#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte/signed word/word/dword/signed dword~) find_line::$1 ← (byte) PLAYFIELD_COLS#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) find_line::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:find_line::@2 -find_line::@2: scope:[find_line] from find_line::@1 find_line::@3 - (byte) find_line::y#6 ← phi( find_line::@1/(byte) find_line::y#8 find_line::@3/(byte) find_line::y#5 ) - (byte) find_line::filled#4 ← phi( find_line::@1/(byte) find_line::filled#0 find_line::@3/(byte) find_line::filled#3 ) - (byte) find_line::x#3 ← phi( find_line::@1/(byte) find_line::x#0 find_line::@3/(byte) find_line::x#1 ) - (byte) find_line::i#2 ← phi( find_line::@1/(byte) find_line::i#3 find_line::@3/(byte) find_line::i#4 ) - (bool~) find_line::$2 ← *((byte[$22]) playfield#0 + (byte) find_line::i#2) == (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) find_line::$3 ← ! (bool~) find_line::$2 - (byte) find_line::i#1 ← ++ (byte) find_line::i#2 - if((bool~) find_line::$3) goto find_line::@3 - to:find_line::@5 -find_line::@3: scope:[find_line] from find_line::@2 find_line::@5 - (byte) find_line::y#5 ← phi( find_line::@2/(byte) find_line::y#6 find_line::@5/(byte) find_line::y#7 ) - (byte) find_line::filled#3 ← phi( find_line::@2/(byte) find_line::filled#4 find_line::@5/(byte) find_line::filled#1 ) - (byte) find_line::i#4 ← phi( find_line::@2/(byte) find_line::i#1 find_line::@5/(byte) find_line::i#6 ) - (byte) find_line::x#2 ← phi( find_line::@2/(byte) find_line::x#3 find_line::@5/(byte) find_line::x#4 ) - (byte) find_line::x#1 ← (byte) find_line::x#2 + rangenext(0,find_line::$1) - (bool~) find_line::$4 ← (byte) find_line::x#1 != rangelast(0,find_line::$1) - if((bool~) find_line::$4) goto find_line::@2 - to:find_line::@6 -find_line::@5: scope:[find_line] from find_line::@2 - (byte) find_line::y#7 ← phi( find_line::@2/(byte) find_line::y#6 ) - (byte) find_line::i#6 ← phi( find_line::@2/(byte) find_line::i#1 ) - (byte) find_line::x#4 ← phi( find_line::@2/(byte) find_line::x#3 ) - (byte) find_line::filled#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:find_line::@3 -find_line::@6: scope:[find_line] from find_line::@3 - (byte) find_line::i#7 ← phi( find_line::@3/(byte) find_line::i#4 ) - (byte) find_line::y#4 ← phi( find_line::@3/(byte) find_line::y#5 ) - (byte) find_line::filled#2 ← phi( find_line::@3/(byte) find_line::filled#3 ) - (bool~) find_line::$5 ← (byte) find_line::filled#2 == (byte/signed byte/word/signed word/dword/signed dword) 1 - (bool~) find_line::$6 ← ! (bool~) find_line::$5 - if((bool~) find_line::$6) goto find_line::@4 - to:find_line::@7 -find_line::@4: scope:[find_line] from find_line::@6 - (byte) find_line::i#5 ← phi( find_line::@6/(byte) find_line::i#7 ) - (byte) find_line::y#2 ← phi( find_line::@6/(byte) find_line::y#4 ) - (byte) find_line::y#1 ← (byte) find_line::y#2 + rangenext(0,find_line::$0) - (bool~) find_line::$7 ← (byte) find_line::y#1 != rangelast(0,find_line::$0) - if((bool~) find_line::$7) goto find_line::@1 - to:find_line::@9 -find_line::@7: scope:[find_line] from find_line::@6 - (byte) find_line::y#3 ← phi( find_line::@6/(byte) find_line::y#4 ) - (byte) find_line::return#1 ← (byte) find_line::y#3 - to:find_line::@return -find_line::@return: scope:[find_line] from find_line::@7 find_line::@9 - (byte) find_line::return#5 ← phi( find_line::@7/(byte) find_line::return#1 find_line::@9/(byte) find_line::return#3 ) - (byte) find_line::return#2 ← (byte) find_line::return#5 - return - to:@return -find_line::@9: scope:[find_line] from find_line::@4 - (byte) find_line::return#3 ← (byte/word/signed word/dword/signed dword) 255 - to:find_line::@return -remove_line: scope:[remove_line] from remove_lines::@2 - (byte) remove_line::ypos#1 ← phi( remove_lines::@2/(byte) remove_line::ypos#0 ) - (byte/signed word/word/dword/signed dword~) remove_line::$0 ← (byte) remove_line::ypos#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte/signed word/word/dword/signed dword~) remove_line::$1 ← *((byte[$23]) playfield_lines_idx#0 + (byte/signed word/word/dword/signed dword~) remove_line::$0) - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) remove_line::i2#0 ← (byte/signed word/word/dword/signed dword~) remove_line::$1 - (byte/signed word/word/dword/signed dword~) remove_line::$2 ← *((byte[$23]) playfield_lines_idx#0 + (byte) remove_line::ypos#1) - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) remove_line::i1#0 ← (byte/signed word/word/dword/signed dword~) remove_line::$2 - (byte) remove_line::y#0 ← (byte) remove_line::ypos#1 - to:remove_line::@1 -remove_line::@1: scope:[remove_line] from remove_line remove_line::@3 - (byte) remove_line::y#4 ← phi( remove_line/(byte) remove_line::y#0 remove_line::@3/(byte) remove_line::y#1 ) - (byte) remove_line::i2#3 ← phi( remove_line/(byte) remove_line::i2#0 remove_line::@3/(byte) remove_line::i2#4 ) - (byte) remove_line::i1#3 ← phi( remove_line/(byte) remove_line::i1#0 remove_line::@3/(byte) remove_line::i1#4 ) - (byte/signed word/word/dword/signed dword~) remove_line::$3 ← (byte) PLAYFIELD_COLS#0 - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) remove_line::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:remove_line::@2 -remove_line::@2: scope:[remove_line] from remove_line::@1 remove_line::@2 - (byte) remove_line::y#3 ← phi( remove_line::@1/(byte) remove_line::y#4 remove_line::@2/(byte) remove_line::y#3 ) - (byte) remove_line::x#2 ← phi( remove_line::@1/(byte) remove_line::x#0 remove_line::@2/(byte) remove_line::x#1 ) - (byte) remove_line::i2#2 ← phi( remove_line::@1/(byte) remove_line::i2#3 remove_line::@2/(byte) remove_line::i2#1 ) - (byte) remove_line::i1#2 ← phi( remove_line::@1/(byte) remove_line::i1#3 remove_line::@2/(byte) remove_line::i1#1 ) - *((byte[$22]) playfield#0 + (byte) remove_line::i2#2) ← *((byte[$22]) playfield#0 + (byte) remove_line::i1#2) - (byte) remove_line::i2#1 ← -- (byte) remove_line::i2#2 - (byte) remove_line::i1#1 ← -- (byte) remove_line::i1#2 - (byte) remove_line::x#1 ← (byte) remove_line::x#2 + rangenext(0,remove_line::$3) - (bool~) remove_line::$4 ← (byte) remove_line::x#1 != rangelast(0,remove_line::$3) - if((bool~) remove_line::$4) goto remove_line::@2 - to:remove_line::@3 -remove_line::@3: scope:[remove_line] from remove_line::@2 - (byte) remove_line::i2#4 ← phi( remove_line::@2/(byte) remove_line::i2#1 ) - (byte) remove_line::i1#4 ← phi( remove_line::@2/(byte) remove_line::i1#1 ) - (byte) remove_line::y#2 ← phi( remove_line::@2/(byte) remove_line::y#3 ) - (byte) remove_line::y#1 ← -- (byte) remove_line::y#2 - (bool~) remove_line::$5 ← (byte) remove_line::y#1 != (byte/signed byte/word/signed word/dword/signed dword) 1 - if((bool~) remove_line::$5) goto remove_line::@1 - to:remove_line::@return -remove_line::@return: scope:[remove_line] from remove_line::@3 +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 @@ -1617,6 +1562,20 @@ tables_init::@2: scope:[tables_init] from tables_init::@1 tables_init::@return: scope:[tables_init] from tables_init::@2 return to:@return +@22: scope:[] from @17 + (byte) current_movedown_counter#26 ← phi( @17/(byte) current_movedown_counter#33 ) + (byte) keyboard_modifiers#32 ← phi( @17/(byte) keyboard_modifiers#38 ) + (byte) keyboard_events_size#35 ← phi( @17/(byte) keyboard_events_size#44 ) + (byte) current_piece_color#37 ← phi( @17/(byte) current_piece_color#49 ) + (byte) current_ypos#50 ← phi( @17/(byte) current_ypos#59 ) + (byte) current_xpos#65 ← phi( @17/(byte) current_xpos#77 ) + (byte*) current_piece_gfx#52 ← phi( @17/(byte*) current_piece_gfx#63 ) + (byte) current_orientation#50 ← phi( @17/(byte) current_orientation#61 ) + (byte*) current_piece#41 ← phi( @17/(byte*) current_piece#53 ) + (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (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:@25 render_init: scope:[render_init] from main::@21 (byte*) SCREEN#1 ← phi( main::@21/(byte*) SCREEN#2 ) (byte*) fill::start#0 ← (byte*) SCREEN#1 @@ -1716,9 +1675,9 @@ 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#66 ← phi( main::@25/(byte) current_piece_color#39 main::@32/(byte) current_piece_color#54 ) - (byte*) current_piece_gfx#63 ← phi( main::@25/(byte*) current_piece_gfx#54 main::@32/(byte*) current_piece_gfx#68 ) - (byte) current_xpos#63 ← phi( main::@25/(byte) current_xpos#67 main::@32/(byte) current_xpos#77 ) + (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) 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 @@ -1726,9 +1685,9 @@ render_current: scope:[render_current] from main::@25 main::@32 (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#59 ← phi( render_current/(byte) current_piece_color#66 render_current::@2/(byte) current_piece_color#67 ) + (byte) current_piece_color#60 ← phi( render_current/(byte) current_piece_color#67 render_current::@2/(byte) current_piece_color#68 ) (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#63 render_current::@2/(byte*) current_piece_gfx#64 ) + (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) 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 ) @@ -1738,10 +1697,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#67 ← phi( render_current::@1/(byte) current_piece_color#59 render_current::@4/(byte) current_piece_color#49 ) + (byte) current_piece_color#68 ← phi( render_current::@1/(byte) current_piece_color#60 render_current::@4/(byte) current_piece_color#50 ) (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#64 ← 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#78 ) + (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) 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 @@ -1750,7 +1709,7 @@ 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#50 ← phi( render_current::@1/(byte) current_piece_color#59 ) + (byte) current_piece_color#51 ← phi( render_current::@1/(byte) current_piece_color#60 ) (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 ) @@ -1761,9 +1720,9 @@ render_current::@6: scope:[render_current] from render_current::@1 (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#84 ← phi( render_current::@4/(byte) current_xpos#78 render_current::@6/(byte) current_xpos#28 ) + (byte) current_xpos#85 ← phi( render_current::@4/(byte) current_xpos#79 render_current::@6/(byte) current_xpos#28 ) (byte*) render_current::screen_line#3 ← phi( render_current::@4/(byte*) render_current::screen_line#4 render_current::@6/(byte*) render_current::screen_line#0 ) - (byte) current_piece_color#36 ← phi( render_current::@4/(byte) current_piece_color#49 render_current::@6/(byte) current_piece_color#50 ) + (byte) current_piece_color#36 ← phi( render_current::@4/(byte) current_piece_color#50 render_current::@6/(byte) current_piece_color#51 ) (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 ) @@ -1778,8 +1737,8 @@ render_current::@3: scope:[render_current] from render_current::@4 render_curre to:render_current::@7 render_current::@4: scope:[render_current] from render_current::@3 render_current::@5 render_current::@8 (byte*) render_current::screen_line#4 ← phi( render_current::@3/(byte*) render_current::screen_line#3 render_current::@5/(byte*) render_current::screen_line#5 render_current::@8/(byte*) render_current::screen_line#1 ) - (byte) current_piece_color#49 ← phi( render_current::@3/(byte) current_piece_color#36 render_current::@5/(byte) current_piece_color#60 render_current::@8/(byte) current_piece_color#16 ) - (byte) current_xpos#78 ← phi( render_current::@3/(byte) current_xpos#84 render_current::@5/(byte) current_xpos#85 render_current::@8/(byte) current_xpos#86 ) + (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) render_current::i#3 ← phi( render_current::@3/(byte) render_current::i#1 render_current::@5/(byte) render_current::i#6 render_current::@8/(byte) render_current::i#7 ) (byte*) current_piece_gfx#34 ← phi( render_current::@3/(byte*) current_piece_gfx#21 render_current::@5/(byte*) current_piece_gfx#50 render_current::@8/(byte*) current_piece_gfx#51 ) (byte) render_current::l#4 ← phi( render_current::@3/(byte) render_current::l#5 render_current::@5/(byte) render_current::l#6 render_current::@8/(byte) render_current::l#7 ) @@ -1792,9 +1751,9 @@ render_current::@4: scope:[render_current] from render_current::@3 render_curre if((bool~) render_current::$8) goto render_current::@3 to:render_current::@2 render_current::@7: scope:[render_current] from render_current::@3 - (byte) current_xpos#91 ← phi( render_current::@3/(byte) current_xpos#84 ) + (byte) current_xpos#92 ← phi( render_current::@3/(byte) current_xpos#85 ) (byte) render_current::i#9 ← phi( render_current::@3/(byte) render_current::i#1 ) - (byte*) current_piece_gfx#65 ← phi( render_current::@3/(byte*) current_piece_gfx#21 ) + (byte*) current_piece_gfx#66 ← phi( render_current::@3/(byte*) current_piece_gfx#21 ) (byte) render_current::l#9 ← phi( render_current::@3/(byte) render_current::l#5 ) (byte) render_current::ypos2#9 ← phi( render_current::@3/(byte) render_current::ypos2#6 ) (byte) render_current::c#6 ← phi( render_current::@3/(byte) render_current::c#3 ) @@ -1807,19 +1766,19 @@ render_current::@7: scope:[render_current] from render_current::@3 to:render_current::@8 render_current::@5: scope:[render_current] from render_current::@7 (byte*) render_current::screen_line#5 ← phi( render_current::@7/(byte*) render_current::screen_line#2 ) - (byte) current_piece_color#60 ← phi( render_current::@7/(byte) current_piece_color#25 ) - (byte) current_xpos#85 ← phi( render_current::@7/(byte) current_xpos#91 ) + (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) 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#65 ) + (byte*) current_piece_gfx#50 ← phi( render_current::@7/(byte*) current_piece_gfx#66 ) (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#86 ← phi( render_current::@7/(byte) current_xpos#91 ) + (byte) current_xpos#87 ← phi( render_current::@7/(byte) current_xpos#92 ) (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#65 ) + (byte*) current_piece_gfx#51 ← phi( render_current::@7/(byte*) current_piece_gfx#66 ) (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 ) @@ -1831,29 +1790,29 @@ render_current::@8: scope:[render_current] from render_current::@7 render_current::@return: scope:[render_current] from render_current::@2 return to:@return -@27: scope:[] from @17 - (byte*) SCREEN#4 ← phi( @17/(byte*) SCREEN#5 ) - (byte) current_movedown_counter#20 ← phi( @17/(byte) current_movedown_counter#26 ) - (byte) keyboard_modifiers#25 ← phi( @17/(byte) keyboard_modifiers#32 ) - (byte) keyboard_events_size#28 ← phi( @17/(byte) keyboard_events_size#35 ) - (byte) current_piece_color#26 ← phi( @17/(byte) current_piece_color#37 ) - (byte) current_ypos#39 ← phi( @17/(byte) current_ypos#50 ) - (byte) current_xpos#47 ← phi( @17/(byte) current_xpos#65 ) - (byte*) current_piece_gfx#36 ← phi( @17/(byte*) current_piece_gfx#52 ) - (byte) current_orientation#40 ← phi( @17/(byte) current_orientation#50 ) - (byte*) current_piece#29 ← phi( @17/(byte*) current_piece#41 ) +@25: scope:[] from @22 + (byte*) SCREEN#4 ← phi( @22/(byte*) SCREEN#0 ) + (byte) current_movedown_counter#20 ← phi( @22/(byte) current_movedown_counter#26 ) + (byte) keyboard_modifiers#25 ← phi( @22/(byte) keyboard_modifiers#32 ) + (byte) keyboard_events_size#28 ← phi( @22/(byte) keyboard_events_size#35 ) + (byte) current_piece_color#26 ← phi( @22/(byte) current_piece_color#37 ) + (byte) current_ypos#39 ← phi( @22/(byte) current_ypos#50 ) + (byte) current_xpos#47 ← phi( @22/(byte) current_xpos#65 ) + (byte*) current_piece_gfx#36 ← phi( @22/(byte*) current_piece_gfx#52 ) + (byte) current_orientation#40 ← phi( @22/(byte) current_orientation#50 ) + (byte*) current_piece#29 ← phi( @22/(byte*) current_piece#41 ) call main - to:@28 -@28: scope:[] from @27 - (byte) current_movedown_counter#13 ← phi( @27/(byte) current_movedown_counter#2 ) - (byte) keyboard_modifiers#17 ← phi( @27/(byte) keyboard_modifiers#8 ) - (byte) keyboard_events_size#20 ← phi( @27/(byte) keyboard_events_size#8 ) - (byte) current_piece_color#17 ← phi( @27/(byte) current_piece_color#3 ) - (byte) current_ypos#23 ← phi( @27/(byte) current_ypos#3 ) - (byte) current_xpos#29 ← phi( @27/(byte) current_xpos#4 ) - (byte*) current_piece_gfx#22 ← phi( @27/(byte*) current_piece_gfx#4 ) - (byte) current_orientation#25 ← phi( @27/(byte) current_orientation#4 ) - (byte*) current_piece#17 ← phi( @27/(byte*) current_piece#3 ) + to:@26 +@26: scope:[] from @25 + (byte) current_movedown_counter#13 ← phi( @25/(byte) current_movedown_counter#2 ) + (byte) keyboard_modifiers#17 ← phi( @25/(byte) keyboard_modifiers#8 ) + (byte) keyboard_events_size#20 ← phi( @25/(byte) keyboard_events_size#8 ) + (byte) current_piece_color#17 ← phi( @25/(byte) current_piece_color#3 ) + (byte) current_ypos#23 ← phi( @25/(byte) current_ypos#3 ) + (byte) current_xpos#29 ← phi( @25/(byte) current_xpos#4 ) + (byte*) current_piece_gfx#22 ← phi( @25/(byte*) current_piece_gfx#4 ) + (byte) current_orientation#25 ← phi( @25/(byte) current_orientation#4 ) + (byte*) current_piece#17 ← phi( @25/(byte*) current_piece#3 ) (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 @@ -1864,7 +1823,7 @@ render_current::@return: scope:[render_current] from render_current::@2 (byte) keyboard_modifiers#9 ← (byte) keyboard_modifiers#17 (byte) current_movedown_counter#6 ← (byte) current_movedown_counter#13 to:@end -@end: scope:[] from @28 +@end: scope:[] from @26 SYMBOL TABLE SSA (byte/signed byte/word/signed word/dword/signed dword~) $1 @@ -1894,8 +1853,9 @@ SYMBOL TABLE SSA (label) @11 (label) @13 (label) @17 -(label) @27 -(label) @28 +(label) @22 +(label) @25 +(label) @26 (label) @4 (label) @8 (label) @begin @@ -1982,7 +1942,6 @@ SYMBOL TABLE SSA (byte*) SCREEN#2 (byte*) SCREEN#3 (byte*) SCREEN#4 -(byte*) SCREEN#5 (byte) SID_CONTROL_NOISE (byte) SID_CONTROL_NOISE#0 (byte*) SID_VOICE3_CONTROL @@ -2186,6 +2145,7 @@ 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 @@ -2267,6 +2227,7 @@ 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 @@ -2336,6 +2297,7 @@ 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 @@ -2410,6 +2372,7 @@ SYMBOL TABLE SSA (byte) current_piece_color#7 (byte) current_piece_color#70 (byte) current_piece_color#71 +(byte) current_piece_color#72 (byte) current_piece_color#8 (byte) current_piece_color#9 (byte*) current_piece_gfx @@ -2496,6 +2459,7 @@ SYMBOL TABLE SSA (byte*) current_piece_gfx#81 (byte*) current_piece_gfx#82 (byte*) current_piece_gfx#83 +(byte*) current_piece_gfx#84 (byte*) current_piece_gfx#9 (byte) current_xpos (byte) current_xpos#0 @@ -2592,6 +2556,7 @@ SYMBOL TABLE SSA (byte) current_xpos#91 (byte) current_xpos#92 (byte) current_xpos#93 +(byte) current_xpos#94 (byte) current_ypos (byte) current_ypos#0 (byte) current_ypos#1 @@ -2659,6 +2624,7 @@ SYMBOL TABLE SSA (byte) current_ypos#66 (byte) current_ypos#67 (byte) current_ypos#68 +(byte) current_ypos#69 (byte) current_ypos#7 (byte) current_ypos#8 (byte) current_ypos#9 @@ -2687,62 +2653,6 @@ SYMBOL TABLE SSA (byte) fill::val#1 (byte) fill::val#2 (byte) fill::val#3 -(byte()) find_line() -(byte/signed word/word/dword/signed dword~) find_line::$0 -(byte/signed word/word/dword/signed dword~) find_line::$1 -(bool~) find_line::$2 -(bool~) find_line::$3 -(bool~) find_line::$4 -(bool~) find_line::$5 -(bool~) find_line::$6 -(bool~) find_line::$7 -(label) find_line::@1 -(label) find_line::@2 -(label) find_line::@3 -(label) find_line::@4 -(label) find_line::@5 -(label) find_line::@6 -(label) find_line::@7 -(label) find_line::@9 -(label) find_line::@return -(byte) find_line::filled -(byte) find_line::filled#0 -(byte) find_line::filled#1 -(byte) find_line::filled#2 -(byte) find_line::filled#3 -(byte) find_line::filled#4 -(byte) find_line::i -(byte) find_line::i#0 -(byte) find_line::i#1 -(byte) find_line::i#2 -(byte) find_line::i#3 -(byte) find_line::i#4 -(byte) find_line::i#5 -(byte) find_line::i#6 -(byte) find_line::i#7 -(byte) find_line::return -(byte) find_line::return#0 -(byte) find_line::return#1 -(byte) find_line::return#2 -(byte) find_line::return#3 -(byte) find_line::return#4 -(byte) find_line::return#5 -(byte) find_line::x -(byte) find_line::x#0 -(byte) find_line::x#1 -(byte) find_line::x#2 -(byte) find_line::x#3 -(byte) find_line::x#4 -(byte) find_line::y -(byte) find_line::y#0 -(byte) find_line::y#1 -(byte) find_line::y#2 -(byte) find_line::y#3 -(byte) find_line::y#4 -(byte) find_line::y#5 -(byte) find_line::y#6 -(byte) find_line::y#7 -(byte) find_line::y#8 (byte()) keyboard_event_get() (bool~) keyboard_event_get::$0 (label) keyboard_event_get::@1 @@ -2969,6 +2879,7 @@ SYMBOL TABLE SSA (byte) keyboard_events_size#69 (byte) keyboard_events_size#7 (byte) keyboard_events_size#70 +(byte) keyboard_events_size#71 (byte) keyboard_events_size#8 (byte) keyboard_events_size#9 (byte[8]) keyboard_matrix_col_bitmask @@ -3038,6 +2949,7 @@ SYMBOL TABLE SSA (byte) keyboard_modifiers#5 (byte) keyboard_modifiers#50 (byte) keyboard_modifiers#51 +(byte) keyboard_modifiers#52 (byte) keyboard_modifiers#6 (byte) keyboard_modifiers#7 (byte) keyboard_modifiers#8 @@ -3280,64 +3192,81 @@ SYMBOL TABLE SSA (byte*[PLAYFIELD_LINES#0]) playfield_lines#0 (byte[$23]) playfield_lines_idx (byte[$23]) playfield_lines_idx#0 -(void()) remove_line((byte) remove_line::ypos) -(byte/signed word/word/dword/signed dword~) remove_line::$0 -(byte/signed word/word/dword/signed dword~) remove_line::$1 -(byte/signed word/word/dword/signed dword~) remove_line::$2 -(byte/signed word/word/dword/signed dword~) remove_line::$3 -(bool~) remove_line::$4 -(bool~) remove_line::$5 -(label) remove_line::@1 -(label) remove_line::@2 -(label) remove_line::@3 -(label) remove_line::@return -(byte) remove_line::i1 -(byte) remove_line::i1#0 -(byte) remove_line::i1#1 -(byte) remove_line::i1#2 -(byte) remove_line::i1#3 -(byte) remove_line::i1#4 -(byte) remove_line::i2 -(byte) remove_line::i2#0 -(byte) remove_line::i2#1 -(byte) remove_line::i2#2 -(byte) remove_line::i2#3 -(byte) remove_line::i2#4 -(byte) remove_line::x -(byte) remove_line::x#0 -(byte) remove_line::x#1 -(byte) remove_line::x#2 -(byte) remove_line::y -(byte) remove_line::y#0 -(byte) remove_line::y#1 -(byte) remove_line::y#2 -(byte) remove_line::y#3 -(byte) remove_line::y#4 -(byte) remove_line::ypos -(byte) remove_line::ypos#0 -(byte) remove_line::ypos#1 (void()) remove_lines() (byte~) remove_lines::$0 -(bool~) remove_lines::$1 -(bool~) remove_lines::$3 +(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::@7 +(label) remove_lines::@5 +(label) remove_lines::@6 (label) remove_lines::@8 +(label) remove_lines::@9 (label) remove_lines::@return -(byte) remove_lines::done -(byte) remove_lines::done#0 -(byte) remove_lines::done#1 -(byte) remove_lines::done#2 -(byte) remove_lines::done#3 -(byte) remove_lines::done#4 -(byte) remove_lines::done#5 -(byte) remove_lines::done#6 -(byte) remove_lines::line_ypos -(byte) remove_lines::line_ypos#0 -(byte) remove_lines::line_ypos#1 +(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 (void()) render_current() (byte~) render_current::$0 (byte/signed word/word/dword/signed dword~) render_current::$1 @@ -3561,8 +3490,8 @@ Inversing boolean not (bool~) collision::$9 ← (byte~) collision::$7 == (byte/s 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~) find_line::$3 ← *((byte[$22]) playfield#0 + (byte) find_line::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) find_line::$2 ← *((byte[$22]) playfield#0 + (byte) find_line::i#2) == (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) find_line::$6 ← (byte) find_line::filled#2 != (byte/signed byte/word/signed word/dword/signed dword) 1 from (bool~) find_line::$5 ← (byte) find_line::filled#2 == (byte/signed byte/word/signed word/dword/signed dword) 1 +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 @@ -3573,7 +3502,7 @@ Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_p Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 Alias (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#3 (byte) keyboard_event_scan::row#8 (byte) keyboard_event_scan::row#7 Alias (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#7 (byte) keyboard_event_scan::keycode#12 (byte) keyboard_event_scan::keycode#3 -Alias (byte) keyboard_events_size#29 = (byte) keyboard_events_size#36 (byte) keyboard_events_size#45 (byte) keyboard_events_size#60 +Alias (byte) keyboard_events_size#29 = (byte) keyboard_events_size#36 (byte) keyboard_events_size#45 (byte) keyboard_events_size#61 Alias (byte) keyboard_event_scan::row_scan#0 = (byte~) keyboard_event_scan::$0 (byte) keyboard_event_scan::row_scan#4 Alias (byte) keyboard_event_scan::keycode#1 = (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$2 Alias (byte) keyboard_events_size#10 = (byte) keyboard_events_size#21 (byte) keyboard_events_size#37 (byte) keyboard_events_size#22 (byte) keyboard_events_size#11 (byte) keyboard_events_size#12 @@ -3585,13 +3514,13 @@ Alias (byte) keyboard_event_scan::event_type#0 = (byte~) keyboard_event_scan::$9 Alias (byte) keyboard_event_scan::row_scan#3 = (byte) keyboard_event_scan::row_scan#5 Alias (byte) keyboard_event_scan::row#6 = (byte) keyboard_event_scan::row#9 Alias (byte) keyboard_event_scan::keycode#15 = (byte) keyboard_event_scan::keycode#2 -Alias (byte) keyboard_events_size#30 = (byte) keyboard_events_size#61 -Alias (byte) keyboard_events_size#55 = (byte) keyboard_events_size#70 (byte) keyboard_events_size#68 (byte) keyboard_events_size#67 +Alias (byte) keyboard_events_size#30 = (byte) keyboard_events_size#62 +Alias (byte) keyboard_events_size#55 = (byte) keyboard_events_size#71 (byte) keyboard_events_size#69 (byte) keyboard_events_size#68 Alias (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#7 Alias (byte) keyboard_modifiers#1 = (byte) keyboard_modifiers#18 (byte) keyboard_modifiers#10 Alias (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#8 Alias (byte) keyboard_modifiers#11 = (byte) keyboard_modifiers#19 (byte) keyboard_modifiers#26 -Alias (byte) keyboard_events_size#62 = (byte) keyboard_events_size#63 (byte) keyboard_events_size#65 +Alias (byte) keyboard_events_size#63 = (byte) keyboard_events_size#64 (byte) keyboard_events_size#66 Alias (byte) keyboard_modifiers#2 = (byte~) keyboard_event_scan::$17 Alias (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#9 Alias (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#20 (byte) keyboard_modifiers#27 @@ -3608,90 +3537,90 @@ 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#48 (byte) keyboard_events_size#44 (byte) keyboard_events_size#35 (byte) keyboard_events_size#28 -Alias (byte) keyboard_modifiers#0 = (byte) keyboard_modifiers#39 (byte) keyboard_modifiers#38 (byte) keyboard_modifiers#32 (byte) keyboard_modifiers#25 +Alias (byte) 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) 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#53 (byte*) current_piece#30 -Alias (byte) current_orientation#26 = (byte) current_orientation#51 (byte) current_orientation#61 (byte) current_orientation#41 -Alias (byte*) current_piece_gfx#23 = (byte*) current_piece_gfx#53 (byte*) current_piece_gfx#66 (byte*) current_piece_gfx#37 -Alias (byte) current_xpos#30 = (byte) current_xpos#66 (byte) current_xpos#79 (byte) current_xpos#48 -Alias (byte) current_ypos#24 = (byte) current_ypos#51 (byte) current_ypos#59 (byte) current_ypos#40 -Alias (byte) current_piece_color#18 = (byte) current_piece_color#38 (byte) current_piece_color#51 (byte) current_piece_color#27 -Alias (byte) keyboard_events_size#33 = (byte) keyboard_events_size#66 (byte) keyboard_events_size#69 (byte) keyboard_events_size#64 (byte) keyboard_events_size#57 (byte) keyboard_events_size#49 (byte) keyboard_events_size#39 -Alias (byte) keyboard_modifiers#30 = (byte) keyboard_modifiers#50 (byte) keyboard_modifiers#51 (byte) keyboard_modifiers#48 (byte) keyboard_modifiers#45 (byte) keyboard_modifiers#40 (byte) keyboard_modifiers#33 -Alias (byte) current_movedown_counter#22 = (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#27 +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#50 (byte) keyboard_events_size#27 (byte) keyboard_events_size#8 -Alias (byte) keyboard_modifiers#16 = (byte) keyboard_modifiers#41 (byte) keyboard_modifiers#24 (byte) keyboard_modifiers#8 -Alias (byte) current_movedown_counter#15 = (byte) current_movedown_counter#42 (byte) current_movedown_counter#8 (byte) current_movedown_counter#2 -Alias (byte) current_ypos#12 = (byte) current_ypos#67 (byte) current_ypos#26 (byte) current_ypos#3 -Alias (byte*) current_piece#11 = (byte*) current_piece#65 (byte*) current_piece#20 (byte*) current_piece#3 -Alias (byte) current_orientation#15 = (byte) current_orientation#71 (byte) current_orientation#29 (byte) current_orientation#4 -Alias (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#80 (byte*) current_piece_gfx#26 (byte*) current_piece_gfx#4 -Alias (byte) current_xpos#16 = (byte) current_xpos#92 (byte) current_xpos#32 (byte) current_xpos#4 -Alias (byte) current_piece_color#11 = (byte) current_piece_color#68 (byte) current_piece_color#20 (byte) current_piece_color#3 -Alias (byte) keyboard_events_size#40 = (byte) keyboard_events_size#51 -Alias (byte) keyboard_modifiers#34 = (byte) keyboard_modifiers#42 -Alias (byte) current_movedown_counter#38 = (byte) current_movedown_counter#43 -Alias (byte) current_ypos#63 = (byte) current_ypos#68 -Alias (byte*) current_piece#60 = (byte*) current_piece#66 -Alias (byte) current_orientation#66 = (byte) current_orientation#72 -Alias (byte*) current_piece_gfx#75 = (byte*) current_piece_gfx#81 -Alias (byte) current_xpos#87 = (byte) current_xpos#93 -Alias (byte) current_piece_color#61 = (byte) current_piece_color#69 +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#39 (byte) current_movedown_counter#34 (byte) current_movedown_counter#28 (byte) current_movedown_counter#23 -Alias (byte) current_ypos#25 = (byte) current_ypos#64 (byte) current_ypos#60 (byte) current_ypos#52 (byte) current_ypos#43 -Alias (byte*) current_piece#19 = (byte*) current_piece#61 (byte*) current_piece#54 (byte*) current_piece#44 (byte*) current_piece#33 -Alias (byte) current_orientation#27 = (byte) current_orientation#67 (byte) current_orientation#62 (byte) current_orientation#53 (byte) current_orientation#44 -Alias (byte*) current_piece_gfx#24 = (byte*) current_piece_gfx#76 (byte*) current_piece_gfx#67 (byte*) current_piece_gfx#55 (byte*) current_piece_gfx#40 -Alias (byte) current_xpos#31 = (byte) current_xpos#88 (byte) current_xpos#80 (byte) current_xpos#68 (byte) current_xpos#51 -Alias (byte) current_piece_color#19 = (byte) current_piece_color#62 (byte) current_piece_color#52 (byte) current_piece_color#40 (byte) current_piece_color#30 +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#49 (byte) keyboard_modifiers#46 (byte) keyboard_modifiers#43 (byte) keyboard_modifiers#36 (byte) keyboard_modifiers#47 (byte) keyboard_modifiers#44 (byte) keyboard_modifiers#37 +Alias (byte) keyboard_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#58 (byte) keyboard_events_size#52 (byte) keyboard_events_size#42 (byte) keyboard_events_size#59 (byte) keyboard_events_size#53 (byte) keyboard_events_size#43 +Alias (byte) 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#35 (byte) current_movedown_counter#29 (byte) current_movedown_counter#40 (byte) current_movedown_counter#36 (byte) current_movedown_counter#30 +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#55 (byte*) current_piece#45 (byte*) current_piece#62 (byte*) current_piece#56 (byte*) current_piece#46 +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#53 (byte) current_piece_color#41 (byte) current_piece_color#63 (byte) current_piece_color#54 (byte) current_piece_color#42 +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#81 (byte) current_xpos#77 (byte) current_xpos#70 +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#68 (byte) current_orientation#63 (byte) current_orientation#54 -Alias (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#3 (byte*) current_piece_gfx#77 (byte*) current_piece_gfx#68 (byte*) current_piece_gfx#56 +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#61 (byte) current_ypos#62 (byte) current_ypos#57 -Alias (byte) current_xpos#71 = (byte) current_xpos#72 (byte) current_xpos#82 (byte) current_xpos#83 (byte) current_xpos#73 -Alias (byte) current_orientation#55 = (byte) current_orientation#56 (byte) current_orientation#64 (byte) current_orientation#65 (byte) current_orientation#57 -Alias (byte*) current_piece#57 = (byte*) current_piece#58 (byte*) current_piece#63 (byte*) current_piece#64 (byte*) current_piece#59 -Alias (byte*) current_piece_gfx#69 = (byte*) current_piece_gfx#70 (byte*) current_piece_gfx#78 (byte*) current_piece_gfx#79 (byte*) current_piece_gfx#71 -Alias (byte) current_piece_color#55 = (byte) current_piece_color#56 (byte) current_piece_color#64 (byte) current_piece_color#65 (byte) current_piece_color#57 +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#65 = (byte) current_ypos#66 -Alias (byte) current_xpos#89 = (byte) current_xpos#90 -Alias (byte) current_orientation#69 = (byte) current_orientation#70 -Alias (byte*) current_piece#67 = (byte*) current_piece#68 -Alias (byte*) current_piece_gfx#82 = (byte*) current_piece_gfx#83 -Alias (byte) current_piece_color#70 = (byte) current_piece_color#71 +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 @@ -3704,9 +3633,9 @@ 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#72 (byte*) current_piece_gfx#59 (byte*) current_piece_gfx#43 (byte*) current_piece_gfx#60 (byte*) current_piece_gfx#42 +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#58 (byte) current_piece_color#45 (byte) current_piece_color#33 (byte) current_piece_color#46 (byte) current_piece_color#32 +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 @@ -3738,7 +3667,7 @@ Alias (byte) current_orientation#21 = (byte) current_orientation#36 (byte) curre 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#73 (byte*) current_piece_gfx#61 (byte*) current_piece_gfx#44 (byte*) current_piece_gfx#74 +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 @@ -3751,14 +3680,13 @@ Alias (byte*) current_piece#14 = (byte*) current_piece#24 (byte*) current_piece# 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#41 (byte*) current_piece#29 -Alias (byte) current_orientation#0 = (byte) current_orientation#50 (byte) current_orientation#40 -Alias (byte*) current_piece_gfx#0 = (byte*) current_piece_gfx#52 (byte*) current_piece_gfx#36 -Alias (byte) current_xpos#0 = (byte) current_xpos#65 (byte) current_xpos#47 -Alias (byte) current_ypos#0 = (byte) current_ypos#50 (byte) current_ypos#39 -Alias (byte) current_piece_color#0 = (byte) current_piece_color#37 (byte) current_piece_color#26 -Alias (byte) current_movedown_counter#0 = (byte) current_movedown_counter#26 (byte) current_movedown_counter#20 -Alias (byte*) SCREEN#0 = (byte*) SCREEN#5 (byte*) SCREEN#4 +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 @@ -3801,22 +3729,19 @@ Alias (byte) current_orientation#10 = (byte) current_orientation#24 (byte) curre 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) find_line::return#0 = (byte) find_line::return#4 -Alias (byte) remove_lines::done#3 = (byte) remove_lines::done#5 (byte) remove_lines::done#6 (byte) remove_lines::done#4 -Alias (byte) remove_lines::line_ypos#0 = (byte~) remove_lines::$0 (byte) remove_lines::line_ypos#1 -Alias (byte) find_line::x#3 = (byte) find_line::x#4 -Alias (byte) find_line::i#1 = (byte) find_line::i#6 -Alias (byte) find_line::y#6 = (byte) find_line::y#7 -Alias (byte) find_line::filled#2 = (byte) find_line::filled#3 -Alias (byte) find_line::y#2 = (byte) find_line::y#4 (byte) find_line::y#5 (byte) find_line::y#3 (byte) find_line::return#1 -Alias (byte) find_line::i#4 = (byte) find_line::i#7 (byte) find_line::i#5 -Alias (byte) find_line::return#2 = (byte) find_line::return#5 -Alias (byte) remove_line::i2#0 = (byte/signed word/word/dword/signed dword~) remove_line::$1 -Alias (byte) remove_line::i1#0 = (byte/signed word/word/dword/signed dword~) remove_line::$2 -Alias (byte) remove_line::y#0 = (byte) remove_line::ypos#1 -Alias (byte) remove_line::y#2 = (byte) remove_line::y#3 -Alias (byte) remove_line::i1#1 = (byte) remove_line::i1#4 -Alias (byte) remove_line::i2#1 = (byte) remove_line::i2#4 +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*) 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 @@ -3829,16 +3754,17 @@ Alias (byte) current_xpos#28 = (byte) current_xpos#46 Alias (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#49 Alias (byte) render_current::i#4 = (byte) render_current::i#5 Alias (byte) render_current::l#3 = (byte) render_current::l#8 -Alias (byte) current_piece_color#50 = (byte) current_piece_color#59 +Alias (byte) current_piece_color#51 = (byte) current_piece_color#60 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#60 +Alias (byte) current_piece_color#16 = (byte) current_piece_color#25 (byte) current_piece_color#36 (byte) current_piece_color#61 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#65 (byte*) current_piece_gfx#50 (byte*) current_piece_gfx#51 +Alias (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#66 (byte*) current_piece_gfx#50 (byte*) current_piece_gfx#51 Alias (byte) render_current::i#1 = (byte) render_current::i#9 (byte) render_current::i#6 (byte) render_current::i#7 -Alias (byte) current_xpos#84 = (byte) current_xpos#91 (byte) current_xpos#85 (byte) current_xpos#86 +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_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 @@ -3853,7 +3779,7 @@ Alias (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keyco Alias (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#3 Alias (byte) keyboard_event_scan::row_scan#1 = (byte) keyboard_event_scan::row_scan#3 Alias (byte) keyboard_event_scan::row#10 = (byte) keyboard_event_scan::row#6 -Alias (byte) keyboard_events_size#13 = (byte) keyboard_events_size#62 (byte) keyboard_events_size#55 (byte) keyboard_events_size#46 (byte) keyboard_events_size#23 +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 @@ -3864,12 +3790,12 @@ 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#65 (byte) current_ypos#45 -Alias (byte) current_xpos#17 = (byte) current_xpos#71 (byte) current_xpos#89 (byte) current_xpos#52 -Alias (byte) current_orientation#16 = (byte) current_orientation#55 (byte) current_orientation#69 (byte) current_orientation#45 -Alias (byte*) current_piece#21 = (byte*) current_piece#57 (byte*) current_piece#67 (byte*) current_piece#47 -Alias (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#69 (byte*) current_piece_gfx#82 (byte*) current_piece_gfx#57 -Alias (byte) current_piece_color#21 = (byte) current_piece_color#55 (byte) current_piece_color#70 (byte) current_piece_color#43 +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 @@ -3893,17 +3819,19 @@ 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) find_line::x#2 = (byte) find_line::x#3 -Alias (byte) find_line::i#1 = (byte) find_line::i#4 -Alias (byte) find_line::y#2 = (byte) find_line::y#6 +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) render_current::i#1 = (byte) render_current::i#3 -Alias (byte) current_xpos#78 = (byte) current_xpos#84 -Alias (byte) current_piece_color#16 = (byte) current_piece_color#49 +Alias (byte) current_xpos#79 = (byte) current_xpos#85 +Alias (byte) current_piece_color#16 = (byte) current_piece_color#50 Alias (byte*) render_current::screen_line#1 = (byte*) render_current::screen_line#4 Successful SSA optimization Pass2AliasElimination Self Phi Eliminated (byte) fill::val#2 @@ -3912,13 +3840,13 @@ 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#38 -Self Phi Eliminated (byte) current_ypos#63 -Self Phi Eliminated (byte*) current_piece#60 -Self Phi Eliminated (byte) current_orientation#66 -Self Phi Eliminated (byte*) current_piece_gfx#75 -Self Phi Eliminated (byte) current_xpos#87 -Self Phi Eliminated (byte) current_piece_color#61 +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 @@ -3939,8 +3867,7 @@ 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) find_line::y#2 -Self Phi Eliminated (byte) remove_line::y#2 +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 @@ -3949,7 +3876,7 @@ Self Phi Eliminated (byte) render_current::ypos2#5 Self Phi Eliminated (byte) render_current::l#4 Self Phi Eliminated (byte) current_piece_color#16 Self Phi Eliminated (byte*) render_current::screen_line#1 -Self Phi Eliminated (byte) current_xpos#78 +Self Phi Eliminated (byte) current_xpos#79 Successful SSA optimization Pass2SelfPhiElimination Redundant Phi (byte) fill::val#2 (byte) fill::val#3 Redundant Phi (byte*) fill::end#1 (byte*) fill::end#0 @@ -3976,22 +3903,22 @@ Redundant Phi (byte) current_ypos#1 (byte) current_ypos#21 Redundant Phi (byte) current_piece_color#1 (byte) current_piece_color#15 Redundant Phi (byte) keyboard_events_size#40 (byte) keyboard_events_size#19 Redundant Phi (byte) keyboard_modifiers#34 (byte) keyboard_modifiers#16 -Redundant Phi (byte) current_movedown_counter#38 (byte) current_movedown_counter#15 -Redundant Phi (byte) current_ypos#63 (byte) current_ypos#12 -Redundant Phi (byte*) current_piece#60 (byte*) current_piece#11 -Redundant Phi (byte) current_orientation#66 (byte) current_orientation#15 -Redundant Phi (byte*) current_piece_gfx#75 (byte*) current_piece_gfx#15 -Redundant Phi (byte) current_xpos#87 (byte) current_xpos#16 -Redundant Phi (byte) current_piece_color#61 (byte) current_piece_color#11 +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#38 -Redundant Phi (byte) current_ypos#25 (byte) current_ypos#63 -Redundant Phi (byte*) current_piece#19 (byte*) current_piece#60 -Redundant Phi (byte) current_orientation#27 (byte) current_orientation#66 -Redundant Phi (byte*) current_piece_gfx#24 (byte*) current_piece_gfx#75 -Redundant Phi (byte) current_xpos#31 (byte) current_xpos#87 -Redundant Phi (byte) current_piece_color#19 (byte) current_piece_color#61 +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 @@ -4045,9 +3972,7 @@ Redundant Phi (byte*) lock_current::playfield_line#1 (byte*) lock_current::playf 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) find_line::y#2 (byte) find_line::y#8 -Redundant Phi (byte) remove_line::y#0 (byte) remove_line::ypos#0 -Redundant Phi (byte) remove_line::y#2 (byte) remove_line::y#4 +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 @@ -4055,9 +3980,9 @@ Redundant Phi (byte) render_playfield::l#3 (byte) render_playfield::l#2 Redundant Phi (byte*) current_piece_gfx#21 (byte*) current_piece_gfx#35 Redundant Phi (byte) render_current::ypos2#5 (byte) render_current::ypos2#2 Redundant Phi (byte) render_current::l#4 (byte) render_current::l#3 -Redundant Phi (byte) current_piece_color#16 (byte) current_piece_color#50 +Redundant Phi (byte) current_piece_color#16 (byte) current_piece_color#51 Redundant Phi (byte*) render_current::screen_line#1 (byte*) render_current::screen_line#0 -Redundant Phi (byte) current_xpos#78 (byte) current_xpos#28 +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 @@ -4072,8 +3997,8 @@ Redundant Phi (byte) keyboard_event_scan::row#4 (byte) keyboard_event_scan::row# Redundant Phi (byte) render_current::ypos2#3 (byte) render_current::ypos2#2 Redundant Phi (byte) render_current::l#2 (byte) render_current::l#3 Redundant Phi (byte) current_xpos#64 (byte) current_xpos#28 -Redundant Phi (byte*) current_piece_gfx#64 (byte*) current_piece_gfx#35 -Redundant Phi (byte) current_piece_color#67 (byte) current_piece_color#50 +Redundant Phi (byte*) current_piece_gfx#65 (byte*) current_piece_gfx#35 +Redundant Phi (byte) current_piece_color#68 (byte) current_piece_color#51 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 @@ -4114,14 +4039,11 @@ Simple Condition (bool~) lock_current::$2 if(*((byte*) current_piece_gfx#32 + (b 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::$1 if((byte) remove_lines::line_ypos#0!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@2 -Simple Condition (bool~) remove_lines::$3 if((byte) remove_lines::done#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@1 -Simple Condition (bool~) find_line::$3 if(*((byte[$22]) playfield#0 + (byte) find_line::i#2)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto find_line::@3 -Simple Condition (bool~) find_line::$4 if((byte) find_line::x#1!=rangelast(0,find_line::$1)) goto find_line::@2 -Simple Condition (bool~) find_line::$6 if((byte) find_line::filled#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto find_line::@4 -Simple Condition (bool~) find_line::$7 if((byte) find_line::y#1!=rangelast(0,find_line::$0)) goto find_line::@1 -Simple Condition (bool~) remove_line::$4 if((byte) remove_line::x#1!=rangelast(0,remove_line::$3)) goto remove_line::@2 -Simple Condition (bool~) remove_line::$5 if((byte) remove_line::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_line::@1 +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 @@ -4197,7 +4119,6 @@ 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*) SCREEN#0 = ((byte*))1024 Constant (const byte) main::render#0 = 0 Constant (const byte) play_move_down::movedown#0 = 0 Constant (const byte) play_move_down::return#1 = 0 @@ -4225,17 +4146,13 @@ 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::done#0 = 0 -Constant (const byte) remove_lines::done#1 = 1 -Constant (const byte) find_line::i#0 = 0 -Constant (const byte) find_line::y#0 = 0 -Constant (const byte) find_line::filled#0 = 1 -Constant (const byte) find_line::x#0 = 0 -Constant (const byte) find_line::filled#1 = 0 -Constant (const byte) find_line::return#3 = 255 -Constant (const byte) remove_line::x#0 = 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 word) fill::size#0 = 1000 Constant (const byte) fill::val#0 = 160 Constant (const word) fill::size#1 = 1000 @@ -4272,7 +4189,6 @@ Constant (const byte[]) PIECES_COLORS#0 = { WHITE#0, LIGHT_GREY#0, GREEN#0, LIGH 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/signed word/word/dword/signed dword) $24 = PLAYFIELD_LINES#0+3 Constant (const byte) keyboard_event_pressed::keycode#4 = KEY_SPACE#0 Constant (const byte) play_move_down::movedown#1 = ++play_move_down::movedown#0 Constant (const byte/signed word/word/dword/signed dword) collision::$4 = 2*PLAYFIELD_LINES#0 @@ -4281,11 +4197,13 @@ 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/signed word/word/dword/signed dword) find_line::$0 = PLAYFIELD_LINES#0-1 -Constant (const byte/signed word/word/dword/signed dword) find_line::$1 = PLAYFIELD_COLS#0-1 -Constant (const byte/signed word/word/dword/signed dword) remove_line::$3 = PLAYFIELD_COLS#0-1 +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*) fill::start#1 = COLS#0 Constant (const byte) fill::val#1 = BLACK#0 @@ -4301,17 +4219,17 @@ 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*) render_init::li#0 = render_init::$2+15 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) tables_init::pli#0 = playfield#0 Successful SSA optimization Pass2ConstantIdentification -Consolidated array index constant in assignment *(playfield_lines_idx#0+1 + remove_line::$0) Consolidated array index constant in *(playfield_lines_idx#0+PLAYFIELD_LINES#0) Successful SSA optimization Pass2ConstantAdditionElimination if() condition always true - replacing block destination if(true) goto main::@2 Successful SSA optimization Pass2ConstantIfs -Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) remove_line::$0 ← (byte) remove_line::ypos#0 Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars @@ -4338,12 +4256,10 @@ 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 find_line::x#1 ← ++ find_line::x#2 to ++ -Resolved ranged comparison value if(find_line::x#1!=rangelast(0,find_line::$1)) goto find_line::@2 to (const byte/signed word/word/dword/signed dword) find_line::$1+(byte/signed byte/word/signed word/dword/signed dword) 1 -Resolved ranged next value find_line::y#1 ← ++ find_line::y#8 to ++ -Resolved ranged comparison value if(find_line::y#1!=rangelast(0,find_line::$0)) goto find_line::@1 to (const byte/signed word/word/dword/signed dword) find_line::$0+(byte/signed byte/word/signed word/dword/signed dword) 1 -Resolved ranged next value remove_line::x#1 ← ++ remove_line::x#2 to ++ -Resolved ranged comparison value if(remove_line::x#1!=rangelast(0,remove_line::$3)) goto remove_line::@2 to (const byte/signed word/word/dword/signed dword) remove_line::$3+(byte/signed byte/word/signed word/dword/signed dword) 1 +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 ++ @@ -4389,14 +4305,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) remove_lines::@8 -Culled Empty Block (label) remove_lines::@4 -Culled Empty Block (label) find_line::@7 -Culled Empty Block (label) find_line::@9 +Culled Empty Block (label) @22 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) @28 +Culled Empty Block (label) @26 Successful SSA optimization Pass2CullEmptyBlocks Self Phi Eliminated (byte) collision::col#0 Self Phi Eliminated (byte*) collision::piece_gfx#2 @@ -4405,7 +4318,7 @@ 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#50 +Self Phi Eliminated (byte) current_piece_color#51 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 @@ -4413,8 +4326,8 @@ 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#63 -Redundant Phi (byte) current_piece_color#50 (byte) current_piece_color#66 +Redundant Phi (byte*) current_piece_gfx#35 (byte*) current_piece_gfx#64 +Redundant Phi (byte) current_piece_color#51 (byte) current_piece_color#67 Successful SSA optimization Pass2RedundantPhiElimination Inlining constant with var siblings (const word) fill::size#0 Inlining constant with var siblings (const byte) fill::val#0 @@ -4452,15 +4365,12 @@ 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::done#0 -Inlining constant with var siblings (const byte) remove_lines::done#1 -Inlining constant with var siblings (const byte) find_line::i#0 -Inlining constant with var siblings (const byte) find_line::y#0 -Inlining constant with var siblings (const byte) find_line::filled#0 -Inlining constant with var siblings (const byte) find_line::x#0 -Inlining constant with var siblings (const byte) find_line::filled#1 -Inlining constant with var siblings (const byte) find_line::return#3 -Inlining constant with var siblings (const byte) remove_line::x#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 @@ -4485,7 +4395,6 @@ Constant inlined current_xpos#10 = (byte/signed byte/word/signed word/dword/sign 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 find_line::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 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 @@ -4493,19 +4402,25 @@ Constant inlined fill::start#1 = (const byte*) COLS#0 Constant inlined fill::start#0 = (const byte*) 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 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 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 find_line::y#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 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 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 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 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 @@ -4514,16 +4429,15 @@ 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 remove_lines::done#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_playfield::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined tables_init::$3 = (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -Constant inlined remove_lines::done#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 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 @@ -4542,10 +4456,7 @@ Constant inlined play_move_down::return#2 = (byte/signed byte/word/signed word/d 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 find_line::filled#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined find_line::filled#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 remove_line::$3 = (const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 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 @@ -4564,27 +4475,24 @@ Constant inlined play_move_leftright::return#4 = (byte/signed byte/word/signed w Constant inlined play_move_leftright::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 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 find_line::$0 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined find_line::$1 = (const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined fill::val#0 = (byte/word/signed word/dword/signed dword) 160 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 remove_line::x#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 find_line::return#3 = (byte/word/signed word/dword/signed dword) 255 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 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 keyboard_event_get::return#0 = (byte/word/signed word/dword/signed dword) 255 -Constant inlined find_line::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Successful SSA optimization Pass2ConstantInlining Identical Phi Values (word) fill::size#2 (word/signed word/dword/signed dword) 1000 Successful SSA optimization Pass2IdenticalPhiElimination @@ -4613,13 +4521,11 @@ Added new block during phi lifting play_move_down::@23(between play_move_down::@ 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::@9(between remove_lines::@3 and remove_lines::@1) -Added new block during phi lifting remove_line::@5(between remove_line::@3 and remove_line::@1) -Added new block during phi lifting remove_line::@6(between remove_line::@2 and remove_line::@2) -Added new block during phi lifting find_line::@11(between find_line::@4 and find_line::@1) -Added new block during phi lifting find_line::@12(between find_line::@3 and find_line::@2) -Added new block during phi lifting find_line::@13(between find_line::@2 and find_line::@3) -Added new block during phi lifting find_line::@14(between find_line::@6 and find_line::@return) +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) Added new block during phi lifting keyboard_event_get::@7(between keyboard_event_get and keyboard_event_get::@return) @@ -4636,7 +4542,7 @@ Added new block during phi lifting render_init::@10(between render_init::@5 and Added new block during phi lifting render_init::@11(between render_init::@3 and render_init::@3) Added new block during phi lifting fill::@3(between fill::@1 and fill::@1) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @27 +Adding NOP phi() at start of @25 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@22 @@ -4652,8 +4558,7 @@ 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 find_line -Adding NOP phi() at start of find_line::@5 +Adding NOP phi() at start of 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 keyboard_event_scan::@9 @@ -4672,27 +4577,26 @@ Calls in [play_move_rotate] to collision:129 Calls in [play_move_leftright] to collision:181 collision:198 Calls in [play_move_down] to keyboard_event_pressed:209 collision:229 lock_current:234 remove_lines:236 spawn_current:238 Calls in [spawn_current] to sid_rnd:276 -Calls in [remove_lines] to find_line:285 remove_line:294 -Calls in [keyboard_event_scan] to keyboard_matrix_read:383 keyboard_event_pressed:394 keyboard_event_pressed:400 keyboard_event_pressed:406 keyboard_event_pressed:412 -Calls in [render_init] to fill:467 fill:469 +Calls in [keyboard_event_scan] to keyboard_matrix_read:360 keyboard_event_pressed:371 keyboard_event_pressed:377 keyboard_event_pressed:383 keyboard_event_pressed:389 +Calls in [render_init] to fill:444 fill:446 -Created 103 initial phi equivalence classes -Not coalescing [14] current_piece_gfx#86 ← current_piece_gfx#10 -Not coalescing [15] current_piece_color#74 ← current_piece_color#15 -Coalesced [18] current_piece_gfx#85 ← current_piece_gfx#10 -Coalesced [19] current_piece_color#73 ← current_piece_color#15 -Not coalescing [47] current_ypos#70 ← current_ypos#16 -Not coalescing [48] current_xpos#95 ← current_xpos#23 -Not coalescing [49] current_piece_gfx#87 ← current_piece_gfx#18 -Not coalescing [50] current_piece_color#75 ← current_piece_color#13 -Coalesced [53] current_piece#69 ← current_piece#13 -Coalesced [54] current_orientation#73 ← current_orientation#23 -Coalesced [55] current_piece_gfx#84 ← current_piece_gfx#18 -Coalesced [56] current_xpos#94 ← current_xpos#23 -Coalesced [57] current_ypos#69 ← current_ypos#16 -Coalesced [58] current_piece_color#72 ← current_piece_color#13 -Coalesced [59] keyboard_events_size#71 ← keyboard_events_size#16 -Coalesced [60] current_movedown_counter#46 ← current_movedown_counter#12 +Created 98 initial phi equivalence classes +Not coalescing [14] current_piece_gfx#87 ← current_piece_gfx#10 +Not coalescing [15] current_piece_color#75 ← current_piece_color#15 +Coalesced [18] current_piece_gfx#86 ← current_piece_gfx#10 +Coalesced [19] current_piece_color#74 ← current_piece_color#15 +Not coalescing [47] current_ypos#71 ← current_ypos#16 +Not coalescing [48] current_xpos#96 ← current_xpos#23 +Not coalescing [49] current_piece_gfx#88 ← current_piece_gfx#18 +Not coalescing [50] current_piece_color#76 ← current_piece_color#13 +Coalesced [53] current_piece#70 ← current_piece#13 +Coalesced [54] current_orientation#74 ← current_orientation#23 +Coalesced [55] current_piece_gfx#85 ← current_piece_gfx#18 +Coalesced [56] current_xpos#95 ← current_xpos#23 +Coalesced [57] current_ypos#70 ← current_ypos#16 +Coalesced [58] current_piece_color#73 ← current_piece_color#13 +Coalesced [59] keyboard_events_size#72 ← keyboard_events_size#16 +Coalesced [60] current_movedown_counter#47 ← current_movedown_counter#12 Coalesced [63] render_current::ypos2#10 ← render_current::ypos2#0 Coalesced [68] render_current::i#12 ← render_current::i#4 Coalesced [69] render_current::xpos#8 ← render_current::xpos#0 @@ -4711,17 +4615,17 @@ Coalesced [108] render_playfield::i#5 ← render_playfield::i#1 Coalesced (already) [109] render_playfield::i#7 ← render_playfield::i#1 Coalesced [110] render_playfield::line#4 ← render_playfield::line#1 Coalesced [111] render_playfield::c#3 ← render_playfield::c#1 -Coalesced [114] current_orientation#76 ← current_orientation#18 -Coalesced [115] current_piece_gfx#90 ← current_piece_gfx#17 +Coalesced [114] current_orientation#77 ← current_orientation#18 +Coalesced [115] current_piece_gfx#91 ← current_piece_gfx#17 Coalesced [120] play_move_rotate::orientation#7 ← play_move_rotate::orientation#2 -Not coalescing [125] current_piece#74 ← current_piece#13 +Not coalescing [125] current_piece#75 ← current_piece#13 Coalesced [126] collision::orientation#8 ← collision::orientation#3 Coalesced [127] collision::ypos#8 ← collision::ypos#3 Coalesced [128] collision::xpos#17 ← collision::xpos#3 -Coalesced [135] current_orientation#74 ← current_orientation#8 -Coalesced [136] current_piece_gfx#88 ← current_piece_gfx#8 -Coalesced (already) [137] current_orientation#75 ← current_orientation#18 -Coalesced (already) [138] current_piece_gfx#89 ← current_piece_gfx#17 +Coalesced [135] current_orientation#75 ← current_orientation#8 +Coalesced [136] current_piece_gfx#89 ← current_piece_gfx#8 +Coalesced (already) [137] current_orientation#76 ← current_orientation#18 +Coalesced (already) [138] current_piece_gfx#90 ← current_piece_gfx#17 Coalesced [141] play_move_rotate::orientation#6 ← play_move_rotate::orientation#1 Coalesced [145] collision::ypos2#11 ← collision::ypos2#0 Coalesced [148] collision::i#12 ← collision::i#3 @@ -4732,111 +4636,104 @@ Coalesced [168] collision::l#11 ← collision::l#1 Not coalescing [169] collision::i#13 ← collision::i#1 Coalesced [170] collision::col#10 ← collision::col#1 Coalesced [171] collision::c#9 ← collision::c#1 -Not coalescing [177] current_piece#73 ← current_piece#13 +Not coalescing [177] current_piece#74 ← current_piece#13 Coalesced [178] collision::orientation#7 ← collision::orientation#2 Coalesced [179] collision::ypos#7 ← collision::ypos#2 Coalesced [180] collision::xpos#16 ← collision::xpos#2 -Coalesced [186] current_xpos#98 ← current_xpos#7 -Coalesced [189] current_xpos#97 ← current_xpos#19 -Coalesced (already) [190] current_xpos#100 ← current_xpos#19 -Not coalescing [194] current_piece#72 ← current_piece#13 +Coalesced [186] current_xpos#99 ← current_xpos#7 +Coalesced [189] current_xpos#98 ← current_xpos#19 +Coalesced (already) [190] current_xpos#101 ← current_xpos#19 +Not coalescing [194] current_piece#73 ← current_piece#13 Coalesced [195] collision::orientation#6 ← collision::orientation#1 Coalesced [196] collision::ypos#6 ← collision::ypos#1 Coalesced [197] collision::xpos#15 ← collision::xpos#1 -Coalesced [203] current_xpos#96 ← current_xpos#9 -Coalesced (already) [204] current_xpos#99 ← current_xpos#19 +Coalesced [203] current_xpos#97 ← current_xpos#9 +Coalesced (already) [204] current_xpos#100 ← current_xpos#19 Coalesced [215] play_move_down::movedown#13 ← play_move_down::movedown#2 Coalesced [219] play_move_down::movedown#16 ← play_move_down::movedown#3 -Not coalescing [225] current_piece#71 ← current_piece#11 +Not coalescing [225] current_piece#72 ← current_piece#11 Coalesced [226] collision::orientation#5 ← collision::orientation#0 Coalesced [227] collision::ypos#5 ← collision::ypos#0 Coalesced [228] collision::xpos#14 ← collision::xpos#0 -Coalesced [240] current_piece_gfx#91 ← current_piece_gfx#10 -Coalesced [241] current_piece_color#76 ← current_piece_color#15 -Coalesced [243] current_ypos#73 ← current_ypos#31 -Coalesced [244] current_piece#78 ← current_piece#23 -Coalesced [245] current_orientation#79 ← current_orientation#33 -Coalesced (already) [246] current_piece_gfx#94 ← current_piece_gfx#29 -Coalesced [247] current_xpos#103 ← current_xpos#36 -Coalesced (already) [248] current_piece_color#79 ← current_piece_color#23 -Coalesced [252] current_ypos#71 ← current_ypos#4 -Coalesced (already) [253] current_piece#76 ← current_piece#11 -Coalesced (already) [254] current_orientation#77 ← current_orientation#15 -Coalesced (already) [255] current_piece_gfx#92 ← current_piece_gfx#15 -Coalesced (already) [256] current_xpos#101 ← current_xpos#16 -Coalesced (already) [257] current_piece_color#77 ← current_piece_color#11 -Coalesced [258] current_movedown_counter#47 ← current_movedown_counter#10 -Coalesced (already) [259] current_ypos#72 ← current_ypos#12 -Coalesced (already) [260] current_piece#77 ← current_piece#11 -Coalesced (already) [261] current_orientation#78 ← current_orientation#15 -Coalesced (already) [262] current_piece_gfx#93 ← current_piece_gfx#15 -Coalesced (already) [263] current_xpos#102 ← current_xpos#16 -Coalesced (already) [264] current_piece_color#78 ← current_piece_color#11 +Coalesced [240] current_piece_gfx#92 ← current_piece_gfx#10 +Coalesced [241] current_piece_color#77 ← current_piece_color#15 +Coalesced [243] current_ypos#74 ← current_ypos#31 +Coalesced [244] current_piece#79 ← current_piece#23 +Coalesced [245] current_orientation#80 ← current_orientation#33 +Coalesced (already) [246] current_piece_gfx#95 ← current_piece_gfx#29 +Coalesced [247] current_xpos#104 ← current_xpos#36 +Coalesced (already) [248] current_piece_color#80 ← current_piece_color#23 +Coalesced [252] current_ypos#72 ← current_ypos#4 +Coalesced (already) [253] current_piece#77 ← current_piece#11 +Coalesced (already) [254] current_orientation#78 ← current_orientation#15 +Coalesced (already) [255] current_piece_gfx#93 ← current_piece_gfx#15 +Coalesced (already) [256] current_xpos#102 ← current_xpos#16 +Coalesced (already) [257] current_piece_color#78 ← current_piece_color#11 +Coalesced [258] current_movedown_counter#48 ← current_movedown_counter#10 +Coalesced (already) [259] current_ypos#73 ← current_ypos#12 +Coalesced (already) [260] current_piece#78 ← current_piece#11 +Coalesced (already) [261] current_orientation#79 ← current_orientation#15 +Coalesced (already) [262] current_piece_gfx#94 ← current_piece_gfx#15 +Coalesced (already) [263] current_xpos#103 ← current_xpos#16 +Coalesced (already) [264] current_piece_color#79 ← current_piece_color#11 Coalesced [265] play_move_down::movedown#17 ← play_move_down::movedown#7 Coalesced [266] play_move_down::movedown#15 ← play_move_down::movedown#10 Coalesced (already) [267] play_move_down::movedown#14 ← play_move_down::movedown#10 Coalesced [280] spawn_current::piece_idx#4 ← spawn_current::piece_idx#1 -Coalesced [292] remove_lines::done#7 ← remove_lines::done#2 -Coalesced (already) [295] remove_lines::done#8 ← remove_lines::done#3 -Coalesced [299] remove_line::i1#5 ← remove_line::i1#0 -Coalesced [300] remove_line::i2#5 ← remove_line::i2#0 -Coalesced [301] remove_line::y#5 ← remove_line::ypos#0 -Coalesced [303] remove_line::i1#7 ← remove_line::i1#3 -Coalesced [304] remove_line::i2#7 ← remove_line::i2#3 -Coalesced [314] remove_line::i1#6 ← remove_line::i1#1 -Coalesced [315] remove_line::i2#6 ← remove_line::i2#1 -Coalesced [316] remove_line::y#6 ← remove_line::y#1 -Coalesced (already) [317] remove_line::i1#8 ← remove_line::i1#1 -Coalesced (already) [318] remove_line::i2#8 ← remove_line::i2#1 -Coalesced [319] remove_line::x#3 ← remove_line::x#1 -Coalesced [322] find_line::i#9 ← find_line::i#3 -Coalesced [331] find_line::return#6 ← find_line::y#8 -Not coalescing [336] find_line::i#8 ← find_line::i#1 -Coalesced [337] find_line::y#9 ← find_line::y#1 -Not coalescing [338] find_line::i#10 ← find_line::i#1 -Coalesced [339] find_line::x#5 ← find_line::x#1 -Coalesced [340] find_line::filled#5 ← find_line::filled#2 -Coalesced (already) [341] find_line::filled#6 ← find_line::filled#4 -Coalesced [343] lock_current::ypos2#7 ← lock_current::ypos2#0 -Coalesced [347] lock_current::i#8 ← lock_current::i#3 -Coalesced [348] lock_current::col#5 ← lock_current::col#0 -Coalesced [360] lock_current::ypos2#8 ← lock_current::ypos2#1 -Not coalescing [361] lock_current::i#7 ← lock_current::i#1 -Coalesced [362] lock_current::l#7 ← lock_current::l#1 -Not coalescing [363] lock_current::i#9 ← lock_current::i#1 -Coalesced [364] lock_current::col#6 ← lock_current::col#1 -Coalesced [365] lock_current::c#5 ← lock_current::c#1 -Coalesced [375] keyboard_event_get::return#6 ← keyboard_event_get::return#1 -Coalesced [376] keyboard_events_size#73 ← keyboard_events_size#4 -Coalesced [379] keyboard_events_size#72 ← keyboard_events_size#13 -Coalesced [380] keyboard_events_size#74 ← keyboard_events_size#19 -Coalesced [388] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 -Coalesced (already) [389] keyboard_events_size#76 ← keyboard_events_size#29 -Coalesced [418] keyboard_event_scan::row#15 ← keyboard_event_scan::row#1 -Coalesced [419] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 -Coalesced (already) [420] keyboard_events_size#75 ← keyboard_events_size#13 -Coalesced [421] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 -Coalesced [422] keyboard_events_size#78 ← keyboard_events_size#29 -Coalesced [432] keyboard_events_size#80 ← keyboard_events_size#2 -Coalesced [438] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#15 -Coalesced [439] keyboard_events_size#77 ← keyboard_events_size#30 -Coalesced [440] keyboard_event_scan::col#9 ← keyboard_event_scan::col#1 -Coalesced (already) [441] keyboard_event_scan::keycode#20 ← keyboard_event_scan::keycode#15 -Coalesced (already) [442] keyboard_events_size#79 ← keyboard_events_size#30 -Coalesced [446] keyboard_events_size#83 ← keyboard_events_size#1 -Coalesced (already) [447] keyboard_events_size#82 ← keyboard_events_size#10 -Coalesced (already) [448] keyboard_events_size#81 ← keyboard_events_size#10 -Coalesced [463] tables_init::j#3 ← tables_init::j#1 -Coalesced [464] tables_init::pli#3 ← tables_init::pli#1 -Coalesced [465] tables_init::idx#3 ← tables_init::idx#1 -Coalesced [486] render_init::line#5 ← render_init::line#1 -Coalesced [487] render_init::l#5 ← render_init::l#1 -Coalesced [488] render_init::c#3 ← render_init::c#1 -Coalesced [489] render_init::i#3 ← render_init::i#1 -Coalesced [490] render_init::li#3 ← render_init::li#1 -Coalesced [493] fill::addr#3 ← fill::addr#0 -Coalesced [499] fill::addr#4 ← fill::addr#1 -Coalesced down to 69 phi equivalence classes +Coalesced [285] remove_lines::r#10 ← remove_lines::r#3 +Coalesced [286] remove_lines::w#14 ← remove_lines::w#12 +Coalesced [299] remove_lines::w#16 ← remove_lines::w#2 +Coalesced [303] remove_lines::w#18 ← remove_lines::w#11 +Coalesced [309] remove_lines::w#19 ← remove_lines::w#3 +Coalesced [310] remove_lines::r#9 ← remove_lines::r#1 +Coalesced [311] remove_lines::w#13 ← remove_lines::w#11 +Coalesced [312] remove_lines::y#9 ← remove_lines::y#1 +Coalesced [313] remove_lines::w#17 ← remove_lines::w#1 +Coalesced (already) [314] remove_lines::r#11 ← remove_lines::r#1 +Coalesced (already) [315] remove_lines::w#15 ← remove_lines::w#1 +Coalesced [316] remove_lines::x#5 ← remove_lines::x#1 +Coalesced [317] remove_lines::full#5 ← remove_lines::full#2 +Coalesced (already) [318] remove_lines::full#6 ← remove_lines::full#4 +Coalesced [320] lock_current::ypos2#7 ← lock_current::ypos2#0 +Coalesced [324] lock_current::i#8 ← lock_current::i#3 +Coalesced [325] lock_current::col#5 ← lock_current::col#0 +Coalesced [337] lock_current::ypos2#8 ← lock_current::ypos2#1 +Not coalescing [338] lock_current::i#7 ← lock_current::i#1 +Coalesced [339] lock_current::l#7 ← lock_current::l#1 +Not coalescing [340] lock_current::i#9 ← lock_current::i#1 +Coalesced [341] lock_current::col#6 ← lock_current::col#1 +Coalesced [342] lock_current::c#5 ← lock_current::c#1 +Coalesced [352] keyboard_event_get::return#6 ← keyboard_event_get::return#1 +Coalesced [353] keyboard_events_size#74 ← keyboard_events_size#4 +Coalesced [356] keyboard_events_size#73 ← keyboard_events_size#13 +Coalesced [357] keyboard_events_size#75 ← keyboard_events_size#19 +Coalesced [365] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 +Coalesced (already) [366] keyboard_events_size#77 ← keyboard_events_size#29 +Coalesced [395] keyboard_event_scan::row#15 ← keyboard_event_scan::row#1 +Coalesced [396] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 +Coalesced (already) [397] keyboard_events_size#76 ← keyboard_events_size#13 +Coalesced [398] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 +Coalesced [399] keyboard_events_size#79 ← keyboard_events_size#29 +Coalesced [409] keyboard_events_size#81 ← keyboard_events_size#2 +Coalesced [415] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#15 +Coalesced [416] keyboard_events_size#78 ← keyboard_events_size#30 +Coalesced [417] keyboard_event_scan::col#9 ← keyboard_event_scan::col#1 +Coalesced (already) [418] keyboard_event_scan::keycode#20 ← keyboard_event_scan::keycode#15 +Coalesced (already) [419] keyboard_events_size#80 ← keyboard_events_size#30 +Coalesced [423] keyboard_events_size#84 ← keyboard_events_size#1 +Coalesced (already) [424] keyboard_events_size#83 ← keyboard_events_size#10 +Coalesced (already) [425] keyboard_events_size#82 ← keyboard_events_size#10 +Coalesced [440] tables_init::j#3 ← tables_init::j#1 +Coalesced [441] tables_init::pli#3 ← tables_init::pli#1 +Coalesced [442] tables_init::idx#3 ← tables_init::idx#1 +Coalesced [463] render_init::line#5 ← render_init::line#1 +Coalesced [464] render_init::l#5 ← render_init::l#1 +Coalesced [465] render_init::c#3 ← render_init::c#1 +Coalesced [466] render_init::i#3 ← render_init::i#1 +Coalesced [467] render_init::li#3 ← render_init::li#1 +Coalesced [470] fill::addr#3 ← fill::addr#0 +Coalesced [476] fill::addr#4 ← fill::addr#1 +Coalesced down to 64 phi equivalence classes Culled Empty Block (label) render_current::@14 Culled Empty Block (label) render_current::@11 Culled Empty Block (label) render_current::@12 @@ -4852,11 +4749,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::@9 -Culled Empty Block (label) remove_line::@5 -Culled Empty Block (label) remove_line::@6 -Culled Empty Block (label) find_line::@5 -Culled Empty Block (label) find_line::@14 +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) keyboard_event_get::@7 Culled Empty Block (label) keyboard_event_scan::@30 Culled Empty Block (label) keyboard_event_scan::@32 @@ -4869,7 +4766,7 @@ Culled Empty Block (label) render_init::@11 Culled Empty Block (label) render_init::@9 Culled Empty Block (label) fill::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @27 +Adding NOP phi() at start of @25 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@22 @@ -4885,8 +4782,7 @@ 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 find_line -Adding NOP phi() at start of find_line::@13 +Adding NOP phi() at start of 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 @@ -4903,14 +4799,14 @@ Adding NOP phi() at start of render_init::@7 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@27 -@27: scope:[] from @begin + to:@25 +@25: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @27 +@end: scope:[] from @25 [3] phi() -main: scope:[main] from @27 +main: scope:[main] from @25 [4] phi() [5] call sid_rnd_init to:main::@21 @@ -4931,10 +4827,10 @@ main::@24: scope:[main] from main::@23 [13] call render_playfield to:main::@25 main::@25: scope:[main] from main::@24 - [14] (byte*~) current_piece_gfx#86 ← (byte*) current_piece_gfx#10 - [15] (byte~) current_piece_color#74 ← (byte) current_piece_color#15 + [14] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 + [15] (byte~) current_piece_color#75 ← (byte) current_piece_color#15 [16] call render_current - [17] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + [17] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) to:main::@1 main::@1: scope:[main] from main::@10 main::@25 [18] (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 ) @@ -4944,7 +4840,7 @@ main::@1: scope:[main] from main::@10 main::@25 [18] (byte) current_xpos#16 ← phi( main::@10/(byte) current_xpos#23 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 ) [18] (byte*) current_piece_gfx#15 ← phi( main::@10/(byte*) current_piece_gfx#18 main::@25/(byte*) current_piece_gfx#10 ) [18] (byte) current_orientation#15 ← phi( main::@10/(byte) current_orientation#23 main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [18] (byte*) current_piece#11 ← phi( main::@10/(byte*) current_piece#13 main::@25/(byte*~) current_piece#70 ) + [18] (byte*) current_piece#11 ← phi( main::@10/(byte*) current_piece#13 main::@25/(byte*~) current_piece#71 ) to:main::@4 main::@4: scope:[main] from main::@1 main::@4 [19] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 @@ -4991,20 +4887,20 @@ main::@19: scope:[main] from main::@31 [44] call render_playfield to:main::@32 main::@32: scope:[main] from main::@19 - [45] (byte~) current_ypos#70 ← (byte) current_ypos#16 - [46] (byte~) current_xpos#95 ← (byte) current_xpos#23 - [47] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#18 - [48] (byte~) current_piece_color#75 ← (byte) current_piece_color#13 + [45] (byte~) current_ypos#71 ← (byte) current_ypos#16 + [46] (byte~) current_xpos#96 ← (byte) current_xpos#23 + [47] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#18 + [48] (byte~) current_piece_color#76 ← (byte) current_piece_color#13 [49] call render_current to:main::@10 main::@10: scope:[main] from main::@31 main::@32 [50] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) to:main::@1 render_current: scope:[render_current] from main::@25 main::@32 - [51] (byte) current_piece_color#66 ← phi( main::@25/(byte~) current_piece_color#74 main::@32/(byte~) current_piece_color#75 ) - [51] (byte*) current_piece_gfx#63 ← phi( main::@25/(byte*~) current_piece_gfx#86 main::@32/(byte*~) current_piece_gfx#87 ) - [51] (byte) current_xpos#63 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@32/(byte~) current_xpos#95 ) - [51] (byte) current_ypos#22 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@32/(byte~) current_ypos#70 ) + [51] (byte) current_piece_color#67 ← phi( main::@25/(byte~) current_piece_color#75 main::@32/(byte~) current_piece_color#76 ) + [51] (byte*) current_piece_gfx#64 ← phi( main::@25/(byte*~) current_piece_gfx#87 main::@32/(byte*~) current_piece_gfx#88 ) + [51] (byte) current_xpos#63 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@32/(byte~) current_xpos#96 ) + [51] (byte) current_ypos#22 ← phi( main::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@32/(byte~) current_ypos#71 ) [52] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:render_current::@1 render_current::@1: scope:[render_current] from render_current render_current::@2 @@ -5021,7 +4917,7 @@ render_current::@3: scope:[render_current] from render_current::@4 render_curre [57] (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 ) [57] (byte) render_current::xpos#2 ← phi( render_current::@4/(byte) render_current::xpos#1 render_current::@6/(byte) render_current::xpos#0 ) [57] (byte) render_current::i#2 ← phi( render_current::@4/(byte) render_current::i#1 render_current::@6/(byte) render_current::i#4 ) - [58] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#63 + (byte) render_current::i#2) + [58] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) [59] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 [60] 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 @@ -5029,7 +4925,7 @@ render_current::@7: scope:[render_current] from render_current::@3 [61] 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 - [62] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#66 + [62] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#67 to:render_current::@4 render_current::@4: scope:[render_current] from render_current::@3 render_current::@7 render_current::@8 [63] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 @@ -5092,7 +4988,7 @@ play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@1 play_m [91] (byte) collision::xpos#3 ← (byte) current_xpos#23 [92] (byte) collision::ypos#3 ← (byte) current_ypos#16 [93] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 - [94] (byte*~) current_piece#74 ← (byte*) current_piece#13 + [94] (byte*~) current_piece#75 ← (byte*) current_piece#13 [95] call collision [96] (byte) collision::return#13 ← (byte) collision::return#14 to:play_move_rotate::@14 @@ -5112,7 +5008,7 @@ collision: scope:[collision] from play_move_down::@12 play_move_leftright::@1 p [103] (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 ) [103] (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 ) [103] (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 ) - [103] (byte*) current_piece#15 ← 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 ) + [103] (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 ) [104] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 [105] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:collision::@1 @@ -5173,7 +5069,7 @@ play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright:: [129] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 [130] (byte) collision::ypos#2 ← (byte) current_ypos#16 [131] (byte) collision::orientation#2 ← (byte) current_orientation#18 - [132] (byte*~) current_piece#73 ← (byte*) current_piece#13 + [132] (byte*~) current_piece#74 ← (byte*) current_piece#13 [133] call collision [134] (byte) collision::return#12 ← (byte) collision::return#14 to:play_move_leftright::@15 @@ -5193,7 +5089,7 @@ play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright [140] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 [141] (byte) collision::ypos#1 ← (byte) current_ypos#16 [142] (byte) collision::orientation#1 ← (byte) current_orientation#18 - [143] (byte*~) current_piece#72 ← (byte*) current_piece#13 + [143] (byte*~) current_piece#73 ← (byte*) current_piece#13 [144] call collision [145] (byte) collision::return#1 ← (byte) collision::return#14 to:play_move_leftright::@14 @@ -5241,7 +5137,7 @@ play_move_down::@12: scope:[play_move_down] from play_move_down::@4 [164] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 [165] (byte) collision::xpos#0 ← (byte) current_xpos#16 [166] (byte) collision::orientation#0 ← (byte) current_orientation#15 - [167] (byte*~) current_piece#71 ← (byte*) current_piece#11 + [167] (byte*~) current_piece#72 ← (byte*) current_piece#11 [168] call collision [169] (byte) collision::return#0 ← (byte) collision::return#14 to:play_move_down::@18 @@ -5260,14 +5156,14 @@ play_move_down::@19: scope:[play_move_down] from play_move_down::@13 play_move_down::@20: scope:[play_move_down] from play_move_down::@19 [176] phi() [177] call spawn_current - [178] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + [178] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) to:play_move_down::@7 play_move_down::@7: scope:[play_move_down] from play_move_down::@20 play_move_down::@6 [179] (byte) current_piece_color#23 ← phi( play_move_down::@20/(byte) current_piece_color#15 play_move_down::@6/(byte) current_piece_color#11 ) [179] (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 ) [179] (byte*) current_piece_gfx#29 ← phi( play_move_down::@20/(byte*) current_piece_gfx#10 play_move_down::@6/(byte*) current_piece_gfx#15 ) [179] (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 ) - [179] (byte*) current_piece#23 ← phi( play_move_down::@20/(byte*~) current_piece#75 play_move_down::@6/(byte*) current_piece#11 ) + [179] (byte*) current_piece#23 ← phi( play_move_down::@20/(byte*~) current_piece#76 play_move_down::@6/(byte*) current_piece#11 ) [179] (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 ) to:play_move_down::@return play_move_down::@return: scope:[play_move_down] from play_move_down::@4 play_move_down::@7 @@ -5317,345 +5213,305 @@ sid_rnd::@return: scope:[sid_rnd] from sid_rnd remove_lines: scope:[remove_lines] from play_move_down::@19 [197] phi() to:remove_lines::@1 -remove_lines::@1: scope:[remove_lines] from remove_lines remove_lines::@3 - [198] (byte) remove_lines::done#3 ← phi( remove_lines/(byte/signed byte/word/signed word/dword/signed dword) 0 remove_lines::@3/(byte) remove_lines::done#2 ) - [199] call find_line - [200] (byte) find_line::return#0 ← (byte) find_line::return#2 - to:remove_lines::@7 -remove_lines::@7: scope:[remove_lines] from remove_lines::@1 - [201] (byte) remove_lines::line_ypos#0 ← (byte) find_line::return#0 - [202] if((byte) remove_lines::line_ypos#0!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@2 +remove_lines::@1: scope:[remove_lines] from remove_lines remove_lines::@4 + [198] (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 ) + [198] (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 ) + [198] (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 + [199] (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 ) + [199] (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 ) + [199] (byte) remove_lines::w#4 ← phi( remove_lines::@1/(byte) remove_lines::w#12 remove_lines::@3/(byte) remove_lines::w#1 ) + [199] (byte) remove_lines::r#2 ← phi( remove_lines::@1/(byte) remove_lines::r#3 remove_lines::@3/(byte) remove_lines::r#1 ) + [200] (byte) remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::r#2) + [201] (byte) remove_lines::r#1 ← -- (byte) remove_lines::r#2 + [202] 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::@2 remove_lines::@7 - [203] (byte) remove_lines::done#2 ← phi( remove_lines::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 remove_lines::@2/(byte) remove_lines::done#3 ) - [204] if((byte) remove_lines::done#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@1 +remove_lines::@3: scope:[remove_lines] from remove_lines::@17 remove_lines::@2 + [203] (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 ) + [204] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#4) ← (byte) remove_lines::c#0 + [205] (byte) remove_lines::w#1 ← -- (byte) remove_lines::w#4 + [206] (byte) remove_lines::x#1 ← ++ (byte) remove_lines::x#2 + [207] 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 + [208] 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 + [209] (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 + [210] (byte) remove_lines::w#11 ← phi( remove_lines::@10/(byte) remove_lines::w#2 remove_lines::@9/(byte) remove_lines::w#1 ) + [211] (byte) remove_lines::y#1 ← ++ (byte) remove_lines::y#8 + [212] 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 + [213] (byte) remove_lines::w#6 ← phi( remove_lines::@4/(byte) remove_lines::w#11 remove_lines::@6/(byte) remove_lines::w#3 ) + [214] 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::@3 - [205] return +remove_lines::@return: scope:[remove_lines] from remove_lines::@5 + [215] return to:@return -remove_lines::@2: scope:[remove_lines] from remove_lines::@7 - [206] (byte) remove_line::ypos#0 ← (byte) remove_lines::line_ypos#0 - [207] call remove_line +remove_lines::@6: scope:[remove_lines] from remove_lines::@5 + [216] *((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 + [217] (byte) remove_lines::w#3 ← -- (byte) remove_lines::w#6 + to:remove_lines::@5 +remove_lines::@17: scope:[remove_lines] from remove_lines::@2 + [218] phi() to:remove_lines::@3 -remove_line: scope:[remove_line] from remove_lines::@2 - [208] (byte~) remove_line::$0 ← (byte) remove_line::ypos#0 - [209] (byte) remove_line::i2#0 ← *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte~) remove_line::$0) - (byte/signed byte/word/signed word/dword/signed dword) 1 - [210] (byte) remove_line::i1#0 ← *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) remove_line::ypos#0) - (byte/signed byte/word/signed word/dword/signed dword) 1 - to:remove_line::@1 -remove_line::@1: scope:[remove_line] from remove_line remove_line::@3 - [211] (byte) remove_line::y#4 ← phi( remove_line/(byte) remove_line::ypos#0 remove_line::@3/(byte) remove_line::y#1 ) - [211] (byte) remove_line::i2#3 ← phi( remove_line/(byte) remove_line::i2#0 remove_line::@3/(byte) remove_line::i2#1 ) - [211] (byte) remove_line::i1#3 ← phi( remove_line/(byte) remove_line::i1#0 remove_line::@3/(byte) remove_line::i1#1 ) - to:remove_line::@2 -remove_line::@2: scope:[remove_line] from remove_line::@1 remove_line::@2 - [212] (byte) remove_line::x#2 ← phi( remove_line::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 remove_line::@2/(byte) remove_line::x#1 ) - [212] (byte) remove_line::i2#2 ← phi( remove_line::@1/(byte) remove_line::i2#3 remove_line::@2/(byte) remove_line::i2#1 ) - [212] (byte) remove_line::i1#2 ← phi( remove_line::@1/(byte) remove_line::i1#3 remove_line::@2/(byte) remove_line::i1#1 ) - [213] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_line::i2#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_line::i1#2) - [214] (byte) remove_line::i2#1 ← -- (byte) remove_line::i2#2 - [215] (byte) remove_line::i1#1 ← -- (byte) remove_line::i1#2 - [216] (byte) remove_line::x#1 ← ++ (byte) remove_line::x#2 - [217] if((byte) remove_line::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_line::@2 - to:remove_line::@3 -remove_line::@3: scope:[remove_line] from remove_line::@2 - [218] (byte) remove_line::y#1 ← -- (byte) remove_line::y#4 - [219] if((byte) remove_line::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_line::@1 - to:remove_line::@return -remove_line::@return: scope:[remove_line] from remove_line::@3 - [220] return - to:@return -find_line: scope:[find_line] from remove_lines::@1 - [221] phi() - to:find_line::@1 -find_line::@1: scope:[find_line] from find_line find_line::@11 - [222] (byte) find_line::y#8 ← phi( find_line/(byte/signed byte/word/signed word/dword/signed dword) 0 find_line::@11/(byte) find_line::y#1 ) - [222] (byte) find_line::i#3 ← phi( find_line/(byte/signed byte/word/signed word/dword/signed dword) 0 find_line::@11/(byte~) find_line::i#8 ) - to:find_line::@2 -find_line::@2: scope:[find_line] from find_line::@1 find_line::@12 - [223] (byte) find_line::filled#4 ← phi( find_line::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 find_line::@12/(byte) find_line::filled#2 ) - [223] (byte) find_line::x#2 ← phi( find_line::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 find_line::@12/(byte) find_line::x#1 ) - [223] (byte) find_line::i#2 ← phi( find_line::@1/(byte) find_line::i#3 find_line::@12/(byte~) find_line::i#10 ) - [224] (byte) find_line::i#1 ← ++ (byte) find_line::i#2 - [225] if(*((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) find_line::i#2)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto find_line::@13 - to:find_line::@3 -find_line::@3: scope:[find_line] from find_line::@13 find_line::@2 - [226] (byte) find_line::filled#2 ← phi( find_line::@13/(byte) find_line::filled#4 find_line::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [227] (byte) find_line::x#1 ← ++ (byte) find_line::x#2 - [228] if((byte) find_line::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 find_line::@12 - to:find_line::@6 -find_line::@6: scope:[find_line] from find_line::@3 - [229] if((byte) find_line::filled#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto find_line::@4 - to:find_line::@return -find_line::@return: scope:[find_line] from find_line::@4 find_line::@6 - [230] (byte) find_line::return#2 ← phi( find_line::@6/(byte) find_line::y#8 find_line::@4/(byte/word/signed word/dword/signed dword) 255 ) - [231] return - to:@return -find_line::@4: scope:[find_line] from find_line::@6 - [232] (byte) find_line::y#1 ← ++ (byte) find_line::y#8 - [233] if((byte) find_line::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 find_line::@11 - to:find_line::@return -find_line::@11: scope:[find_line] from find_line::@4 - [234] (byte~) find_line::i#8 ← (byte) find_line::i#1 - to:find_line::@1 -find_line::@12: scope:[find_line] from find_line::@3 - [235] (byte~) find_line::i#10 ← (byte) find_line::i#1 - to:find_line::@2 -find_line::@13: scope:[find_line] from find_line::@2 - [236] phi() - to:find_line::@3 lock_current: scope:[lock_current] from play_move_down::@13 - [237] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [219] (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 - [238] (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 ) - [238] (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 ) - [238] (byte) lock_current::ypos2#2 ← phi( lock_current/(byte) lock_current::ypos2#0 lock_current::@7/(byte) lock_current::ypos2#1 ) - [239] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) - [240] (byte) lock_current::col#0 ← (byte) current_xpos#16 + [220] (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 ) + [220] (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 ) + [220] (byte) lock_current::ypos2#2 ← phi( lock_current/(byte) lock_current::ypos2#0 lock_current::@7/(byte) lock_current::ypos2#1 ) + [221] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) + [222] (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 - [241] (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 ) - [241] (byte) lock_current::col#2 ← phi( lock_current::@1/(byte) lock_current::col#0 lock_current::@8/(byte) lock_current::col#1 ) - [241] (byte) lock_current::i#2 ← phi( lock_current::@1/(byte) lock_current::i#3 lock_current::@8/(byte~) lock_current::i#9 ) - [242] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 - [243] 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 + [223] (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 ) + [223] (byte) lock_current::col#2 ← phi( lock_current::@1/(byte) lock_current::col#0 lock_current::@8/(byte) lock_current::col#1 ) + [223] (byte) lock_current::i#2 ← phi( lock_current::@1/(byte) lock_current::i#3 lock_current::@8/(byte~) lock_current::i#9 ) + [224] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 + [225] 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 - [244] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 + [226] *((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 - [245] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 - [246] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 - [247] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@8 + [227] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 + [228] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 + [229] 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 - [248] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [249] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 - [250] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@7 + [230] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [231] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 + [232] 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 - [251] return + [233] return to:@return lock_current::@7: scope:[lock_current] from lock_current::@5 - [252] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 + [234] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 to:lock_current::@1 lock_current::@8: scope:[lock_current] from lock_current::@3 - [253] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 + [235] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 to:lock_current::@2 keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@10 keyboard_event_scan::@11 keyboard_event_scan::@20 keyboard_event_scan::@9 play_move_down::@1 - [254] (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 ) - [255] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 - [256] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) - [257] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [258] (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) + [236] (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 ) + [237] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 + [238] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) + [239] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [240] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) to:keyboard_event_pressed::@return keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed - [259] return + [241] return to:@return keyboard_event_get: scope:[keyboard_event_get] from main::@27 - [260] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return + [242] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return to:keyboard_event_get::@3 keyboard_event_get::@3: scope:[keyboard_event_get] from keyboard_event_get - [261] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 - [262] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) + [243] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 + [244] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) to:keyboard_event_get::@return keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@3 - [263] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) - [263] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) - [264] return + [245] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) + [245] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) + [246] return to:@return keyboard_event_scan: scope:[keyboard_event_scan] from main::@9 - [265] phi() + [247] phi() to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@3 - [266] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) - [266] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) - [266] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) - [267] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 - [268] call keyboard_matrix_read - [269] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + [248] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) + [248] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) + [248] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) + [249] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 + [250] call keyboard_matrix_read + [251] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 to:keyboard_event_scan::@25 keyboard_event_scan::@25: scope:[keyboard_event_scan] from keyboard_event_scan::@1 - [270] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 - [271] 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 + [252] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 + [253] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 to:keyboard_event_scan::@13 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@25 - [272] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 + [254] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 to:keyboard_event_scan::@3 keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@19 - [273] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) - [273] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) - [274] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 - [275] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 + [255] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) + [255] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) + [256] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 + [257] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 to:keyboard_event_scan::@20 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - [276] phi() - [277] call keyboard_event_pressed - [278] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + [258] phi() + [259] call keyboard_event_pressed + [260] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@26 keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - [279] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 - [280] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 + [261] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + [262] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 to:keyboard_event_scan::@21 keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26 - [281] phi() + [263] phi() to:keyboard_event_scan::@9 keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - [282] phi() - [283] call keyboard_event_pressed - [284] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + [264] phi() + [265] call keyboard_event_pressed + [266] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@27 keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - [285] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 - [286] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 + [267] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + [268] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 to:keyboard_event_scan::@22 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 - [287] phi() + [269] phi() to:keyboard_event_scan::@10 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 - [288] phi() - [289] call keyboard_event_pressed - [290] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + [270] phi() + [271] call keyboard_event_pressed + [272] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@28 keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - [291] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 - [292] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 + [273] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + [274] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 to:keyboard_event_scan::@23 keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28 - [293] phi() + [275] phi() to:keyboard_event_scan::@11 keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28 - [294] phi() - [295] call keyboard_event_pressed - [296] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + [276] phi() + [277] call keyboard_event_pressed + [278] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@29 keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan::@11 - [297] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 - [298] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return + [279] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + [280] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return to:keyboard_event_scan::@24 keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@29 - [299] phi() + [281] phi() to:keyboard_event_scan::@return keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@24 keyboard_event_scan::@29 - [300] return + [282] return to:@return keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@25 keyboard_event_scan::@5 - [301] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) - [301] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) - [301] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) - [302] (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) - [303] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [304] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 + [283] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) + [283] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) + [283] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) + [284] (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) + [285] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [286] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 to:keyboard_event_scan::@15 keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@4 - [305] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 + [287] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 to:keyboard_event_scan::@16 keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@15 - [306] (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) - [307] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 + [288] (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) + [289] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 to:keyboard_event_scan::@17 keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [308] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 - [309] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 + [290] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 + [291] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 - [310] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) - [311] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 - [312] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 - [313] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 + [292] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) + [293] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 + [294] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 + [295] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 to:keyboard_event_scan::@19 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@5 - [314] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 + [296] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 to:keyboard_event_scan::@3 keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [315] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 - [316] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 - [317] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 + [297] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 + [298] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 + [299] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@1 - [318] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) - [319] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) + [300] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) + [301] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) to:keyboard_matrix_read::@return keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read - [320] return + [302] return to:@return tables_init: scope:[tables_init] from main::@22 - [321] phi() + [303] phi() to:tables_init::@1 tables_init::@1: scope:[tables_init] from tables_init tables_init::@1 - [322] (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 ) - [322] (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 ) - [322] (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 ) - [323] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [324] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 - [325] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 - [326] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 - [327] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 - [328] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 - [329] 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 + [304] (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 ) + [304] (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 ) + [304] (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 ) + [305] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [306] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 + [307] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 + [308] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 + [309] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 + [310] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 + [311] 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 - [330] *((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 + [312] *((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 - [331] return + [313] return to:@return render_init: scope:[render_init] from main::@21 - [332] phi() - [333] call fill + [314] phi() + [315] call fill to:render_init::@7 render_init::@7: scope:[render_init] from render_init - [334] phi() - [335] call fill + [316] phi() + [317] call fill to:render_init::@1 render_init::@1: scope:[render_init] from render_init::@1 render_init::@7 - [336] (byte*) render_init::li#2 ← phi( render_init::@1/(byte*) render_init::li#1 render_init::@7/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 ) - [336] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [337] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [338] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 - [339] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [340] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 - [341] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 + [318] (byte*) render_init::li#2 ← phi( render_init::@1/(byte*) render_init::li#1 render_init::@7/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 ) + [318] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [319] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [320] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 + [321] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [322] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 + [323] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 to:render_init::@2 render_init::@2: scope:[render_init] from render_init::@1 render_init::@5 - [342] (byte) render_init::l#4 ← phi( render_init::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_init::@5/(byte) render_init::l#1 ) - [342] (byte*) render_init::line#4 ← phi( render_init::@1/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 render_init::@5/(byte*) render_init::line#1 ) + [324] (byte) render_init::l#4 ← phi( render_init::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_init::@5/(byte) render_init::l#1 ) + [324] (byte*) render_init::line#4 ← phi( render_init::@1/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 render_init::@5/(byte*) render_init::line#1 ) to:render_init::@3 render_init::@3: scope:[render_init] from render_init::@2 render_init::@3 - [343] (byte) render_init::c#2 ← phi( render_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_init::@3/(byte) render_init::c#1 ) - [344] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 - [345] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 - [346] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 - [347] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 + [325] (byte) render_init::c#2 ← phi( render_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_init::@3/(byte) render_init::c#1 ) + [326] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 + [327] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 + [328] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 + [329] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 to:render_init::@5 render_init::@5: scope:[render_init] from render_init::@3 - [348] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [349] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 - [350] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 + [330] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [331] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 + [332] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 to:render_init::@return render_init::@return: scope:[render_init] from render_init::@5 - [351] return + [333] return to:@return fill: scope:[fill] from render_init render_init::@7 - [352] (byte) fill::val#3 ← phi( render_init/(byte/word/signed word/dword/signed dword) 160 render_init::@7/(const byte) BLACK#0 ) - [352] (byte*) fill::addr#0 ← phi( render_init/(const byte*) SCREEN#0 render_init::@7/(const byte*) COLS#0 ) - [353] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 + [334] (byte) fill::val#3 ← phi( render_init/(byte/word/signed word/dword/signed dword) 160 render_init::@7/(const byte) BLACK#0 ) + [334] (byte*) fill::addr#0 ← phi( render_init/(const byte*) SCREEN#0 render_init::@7/(const byte*) COLS#0 ) + [335] (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 - [354] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) - [355] *((byte*) fill::addr#2) ← (byte) fill::val#3 - [356] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [357] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 + [336] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) + [337] *((byte*) fill::addr#2) ← (byte) fill::val#3 + [338] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [339] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [358] return + [340] return to:@return sid_rnd_init: scope:[sid_rnd_init] from main - [359] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 - [360] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 + [341] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 + [342] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 to:sid_rnd_init::@return sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init - [361] return + [343] return to:@return @@ -5771,30 +5627,30 @@ VARIABLE REGISTER WEIGHTS (byte*) current_piece#13 0.3484848484848484 (byte*) current_piece#15 10.0 (byte*) current_piece#23 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#66 53.368421052631575 -(byte~) current_piece_color#74 4.0 -(byte~) current_piece_color#75 22.0 +(byte) current_piece_color#67 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#63 53.368421052631575 +(byte*) current_piece_gfx#64 53.368421052631575 (byte*) current_piece_gfx#8 4.0 -(byte*~) current_piece_gfx#86 2.0 -(byte*~) current_piece_gfx#87 11.0 +(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 @@ -5803,14 +5659,14 @@ VARIABLE REGISTER WEIGHTS (byte) current_xpos#63 5.894736842105264 (byte) current_xpos#7 4.0 (byte) current_xpos#9 4.0 -(byte~) current_xpos#95 7.333333333333333 +(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#70 5.5 +(byte~) current_ypos#71 5.5 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (byte*) fill::addr (byte*) fill::addr#0 2.0 @@ -5822,25 +5678,6 @@ VARIABLE REGISTER WEIGHTS (byte*) fill::start (byte) fill::val (byte) fill::val#3 1.8333333333333333 -(byte()) find_line() -(byte) find_line::filled -(byte) find_line::filled#2 5250.75 -(byte) find_line::filled#4 5000.5 -(byte) find_line::i -(byte) find_line::i#1 2333.6666666666665 -(byte~) find_line::i#10 20002.0 -(byte) find_line::i#2 15502.0 -(byte) find_line::i#3 2002.0 -(byte~) find_line::i#8 2002.0 -(byte) find_line::return -(byte) find_line::return#0 202.0 -(byte) find_line::return#2 367.33333333333337 -(byte) find_line::x -(byte) find_line::x#1 10001.0 -(byte) find_line::x#2 4000.4 -(byte) find_line::y -(byte) find_line::y#1 1001.0 -(byte) find_line::y#8 300.29999999999995 (byte()) keyboard_event_get() (byte) keyboard_event_get::return (byte) keyboard_event_get::return#1 4.0 @@ -5977,32 +5814,30 @@ VARIABLE REGISTER WEIGHTS (byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield (byte*[PLAYFIELD_LINES#0]) playfield_lines (byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx -(void()) remove_line((byte) remove_line::ypos) -(byte~) remove_line::$0 4.0 -(byte) remove_line::i1 -(byte) remove_line::i1#0 4.0 -(byte) remove_line::i1#1 4200.6 -(byte) remove_line::i1#2 10334.666666666666 -(byte) remove_line::i1#3 2004.0 -(byte) remove_line::i2 -(byte) remove_line::i2#0 2.0 -(byte) remove_line::i2#1 3500.5 -(byte) remove_line::i2#2 15502.0 -(byte) remove_line::i2#3 2004.0 -(byte) remove_line::x -(byte) remove_line::x#1 15001.5 -(byte) remove_line::x#2 5000.5 -(byte) remove_line::y -(byte) remove_line::y#1 1501.5 -(byte) remove_line::y#4 286.2857142857143 -(byte) remove_line::ypos -(byte) remove_line::ypos#0 26.75 (void()) remove_lines() -(byte) remove_lines::done -(byte) remove_lines::done#2 151.5 -(byte) remove_lines::done#3 28.857142857142858 -(byte) remove_lines::line_ypos -(byte) remove_lines::line_ypos#0 151.5 +(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 @@ -6088,10 +5923,10 @@ VARIABLE REGISTER WEIGHTS 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#70 ] -[ current_xpos#63 current_xpos#95 ] -[ current_piece_gfx#63 current_piece_gfx#86 current_piece_gfx#87 ] -[ current_piece_color#66 current_piece_color#74 current_piece_color#75 ] +[ 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 ] [ 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 ] @@ -6103,7 +5938,7 @@ Initial phi equivalence classes [ render_playfield::c#2 render_playfield::c#1 ] [ play_move_rotate::return#2 ] [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -[ current_piece#15 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] +[ 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 ] @@ -6115,22 +5950,18 @@ Initial phi equivalence classes [ collision::return#14 ] [ play_move_leftright::return#2 ] [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -[ current_piece#23 current_piece#75 current_piece#11 current_piece#13 current_piece#70 ] +[ 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::done#3 remove_lines::done#2 ] -[ remove_line::y#4 remove_line::ypos#0 remove_line::y#1 ] -[ remove_line::i1#2 remove_line::i1#3 remove_line::i1#0 remove_line::i1#1 ] -[ remove_line::i2#2 remove_line::i2#3 remove_line::i2#0 remove_line::i2#1 ] -[ remove_line::x#2 remove_line::x#1 ] -[ find_line::i#2 find_line::i#3 find_line::i#8 find_line::i#10 ] -[ find_line::x#2 find_line::x#1 ] -[ find_line::filled#4 find_line::filled#2 ] -[ find_line::return#2 find_line::y#8 find_line::y#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 ] @@ -6189,10 +6020,7 @@ Added variable spawn_current::$3 to zero page equivalence class [ spawn_current: Added variable sid_rnd::return#2 to zero page equivalence class [ sid_rnd::return#2 ] Added variable spawn_current::$1 to zero page equivalence class [ spawn_current::$1 ] Added variable sid_rnd::return#0 to zero page equivalence class [ sid_rnd::return#0 ] -Added variable find_line::return#0 to zero page equivalence class [ find_line::return#0 ] -Added variable remove_lines::line_ypos#0 to zero page equivalence class [ remove_lines::line_ypos#0 ] -Added variable remove_line::$0 to zero page equivalence class [ remove_line::$0 ] -Added variable find_line::i#1 to zero page equivalence class [ find_line::i#1 ] +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 keyboard_event_pressed::$0 to zero page equivalence class [ keyboard_event_pressed::$0 ] @@ -6222,10 +6050,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#70 ] -[ current_xpos#63 current_xpos#95 ] -[ current_piece_gfx#63 current_piece_gfx#86 current_piece_gfx#87 ] -[ current_piece_color#66 current_piece_color#74 current_piece_color#75 ] +[ 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 ] [ 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 ] @@ -6237,7 +6065,7 @@ Complete equivalence classes [ render_playfield::c#2 render_playfield::c#1 ] [ play_move_rotate::return#2 ] [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -[ current_piece#15 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] +[ 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 ] @@ -6249,22 +6077,18 @@ Complete equivalence classes [ collision::return#14 ] [ play_move_leftright::return#2 ] [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -[ current_piece#23 current_piece#75 current_piece#11 current_piece#13 current_piece#70 ] +[ 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::done#3 remove_lines::done#2 ] -[ remove_line::y#4 remove_line::ypos#0 remove_line::y#1 ] -[ remove_line::i1#2 remove_line::i1#3 remove_line::i1#0 remove_line::i1#1 ] -[ remove_line::i2#2 remove_line::i2#3 remove_line::i2#0 remove_line::i2#1 ] -[ remove_line::x#2 remove_line::x#1 ] -[ find_line::i#2 find_line::i#3 find_line::i#8 find_line::i#10 ] -[ find_line::x#2 find_line::x#1 ] -[ find_line::filled#4 find_line::filled#2 ] -[ find_line::return#2 find_line::y#8 find_line::y#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 ] @@ -6323,10 +6147,7 @@ Complete equivalence classes [ sid_rnd::return#2 ] [ spawn_current::$1 ] [ sid_rnd::return#0 ] -[ find_line::return#0 ] -[ remove_lines::line_ypos#0 ] -[ remove_line::$0 ] -[ find_line::i#1 ] +[ remove_lines::c#0 ] [ lock_current::playfield_line#0 ] [ lock_current::i#1 ] [ keyboard_event_pressed::$0 ] @@ -6355,10 +6176,10 @@ Complete equivalence classes [ fill::end#0 ] Allocated zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] Allocated zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] -Allocated zp ZP_BYTE:4 [ current_ypos#22 current_ypos#70 ] -Allocated zp ZP_BYTE:5 [ current_xpos#63 current_xpos#95 ] -Allocated zp ZP_WORD:6 [ current_piece_gfx#63 current_piece_gfx#86 current_piece_gfx#87 ] -Allocated zp ZP_BYTE:8 [ current_piece_color#66 current_piece_color#74 current_piece_color#75 ] +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: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 ] @@ -6370,7 +6191,7 @@ Allocated zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 rend Allocated zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] Allocated zp ZP_BYTE:19 [ play_move_rotate::return#2 ] Allocated zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Allocated zp ZP_WORD:21 [ current_piece#15 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] +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 ] @@ -6382,110 +6203,103 @@ Allocated zp ZP_BYTE:30 [ collision::c#2 collision::c#1 ] Allocated zp ZP_BYTE:31 [ collision::return#14 ] Allocated zp ZP_BYTE:32 [ play_move_leftright::return#2 ] Allocated zp ZP_BYTE:33 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -Allocated zp ZP_WORD:34 [ current_piece#23 current_piece#75 current_piece#11 current_piece#13 current_piece#70 ] +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::done#3 remove_lines::done#2 ] -Allocated zp ZP_BYTE:44 [ remove_line::y#4 remove_line::ypos#0 remove_line::y#1 ] -Allocated zp ZP_BYTE:45 [ remove_line::i1#2 remove_line::i1#3 remove_line::i1#0 remove_line::i1#1 ] -Allocated zp ZP_BYTE:46 [ remove_line::i2#2 remove_line::i2#3 remove_line::i2#0 remove_line::i2#1 ] -Allocated zp ZP_BYTE:47 [ remove_line::x#2 remove_line::x#1 ] -Allocated zp ZP_BYTE:48 [ find_line::i#2 find_line::i#3 find_line::i#8 find_line::i#10 ] -Allocated zp ZP_BYTE:49 [ find_line::x#2 find_line::x#1 ] -Allocated zp ZP_BYTE:50 [ find_line::filled#4 find_line::filled#2 ] -Allocated zp ZP_BYTE:51 [ find_line::return#2 find_line::y#8 find_line::y#1 ] -Allocated zp ZP_BYTE:52 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] -Allocated zp ZP_BYTE:53 [ lock_current::l#6 lock_current::l#1 ] -Allocated zp ZP_BYTE:54 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] -Allocated zp ZP_BYTE:55 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] -Allocated zp ZP_BYTE:56 [ lock_current::c#2 lock_current::c#1 ] -Allocated zp ZP_BYTE:57 [ keyboard_event_pressed::keycode#5 ] -Allocated zp ZP_BYTE:58 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Allocated zp ZP_BYTE:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Allocated zp ZP_BYTE:60 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Allocated zp ZP_BYTE:61 [ 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:62 [ 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:63 [ tables_init::j#2 tables_init::j#1 ] -Allocated zp ZP_WORD:64 [ tables_init::pli#2 tables_init::pli#1 ] -Allocated zp ZP_BYTE:66 [ tables_init::idx#2 tables_init::idx#1 ] -Allocated zp ZP_BYTE:67 [ render_init::i#2 render_init::i#1 ] -Allocated zp ZP_WORD:68 [ render_init::li#2 render_init::li#1 ] -Allocated zp ZP_WORD:70 [ render_init::line#4 render_init::line#1 ] -Allocated zp ZP_BYTE:72 [ render_init::l#4 render_init::l#1 ] -Allocated zp ZP_BYTE:73 [ render_init::c#2 render_init::c#1 ] -Allocated zp ZP_BYTE:74 [ fill::val#3 ] -Allocated zp ZP_WORD:75 [ fill::addr#2 fill::addr#0 fill::addr#1 ] -Allocated zp ZP_BYTE:77 [ keyboard_event_get::return#3 ] -Allocated zp ZP_BYTE:78 [ main::key_event#0 ] -Allocated zp ZP_BYTE:79 [ play_move_down::key_event#0 ] -Allocated zp ZP_BYTE:80 [ play_move_down::return#0 ] -Allocated zp ZP_BYTE:81 [ main::$10 ] -Allocated zp ZP_BYTE:82 [ main::render#1 ] -Allocated zp ZP_BYTE:83 [ play_move_leftright::key_event#0 ] -Allocated zp ZP_BYTE:84 [ play_move_leftright::return#0 ] -Allocated zp ZP_BYTE:85 [ main::$11 ] -Allocated zp ZP_BYTE:86 [ main::render#2 ] -Allocated zp ZP_BYTE:87 [ play_move_rotate::key_event#0 ] -Allocated zp ZP_BYTE:88 [ play_move_rotate::return#0 ] -Allocated zp ZP_BYTE:89 [ main::$12 ] -Allocated zp ZP_BYTE:90 [ main::render#3 ] -Allocated zp ZP_WORD:91 [ render_current::screen_line#0 ] -Allocated zp ZP_BYTE:93 [ render_current::current_cell#0 ] -Allocated zp ZP_BYTE:94 [ render_playfield::$1 ] -Allocated zp ZP_BYTE:95 [ play_move_rotate::$2 ] -Allocated zp ZP_BYTE:96 [ collision::return#13 ] -Allocated zp ZP_BYTE:97 [ play_move_rotate::$6 ] -Allocated zp ZP_BYTE:98 [ play_move_rotate::$4 ] -Allocated zp ZP_WORD:99 [ collision::piece_gfx#0 ] -Allocated zp ZP_WORD:101 [ collision::playfield_line#0 ] -Allocated zp ZP_BYTE:103 [ collision::i#1 ] -Allocated zp ZP_BYTE:104 [ collision::$7 ] -Allocated zp ZP_BYTE:105 [ collision::return#12 ] -Allocated zp ZP_BYTE:106 [ play_move_leftright::$4 ] -Allocated zp ZP_BYTE:107 [ collision::return#1 ] -Allocated zp ZP_BYTE:108 [ play_move_leftright::$8 ] -Allocated zp ZP_BYTE:109 [ keyboard_event_pressed::return#12 ] -Allocated zp ZP_BYTE:110 [ play_move_down::$2 ] -Allocated zp ZP_BYTE:111 [ collision::return#0 ] -Allocated zp ZP_BYTE:112 [ play_move_down::$12 ] -Allocated zp ZP_BYTE:113 [ spawn_current::$3 ] -Allocated zp ZP_BYTE:114 [ sid_rnd::return#2 ] -Allocated zp ZP_BYTE:115 [ spawn_current::$1 ] -Allocated zp ZP_BYTE:116 [ sid_rnd::return#0 ] -Allocated zp ZP_BYTE:117 [ find_line::return#0 ] -Allocated zp ZP_BYTE:118 [ remove_lines::line_ypos#0 ] -Allocated zp ZP_BYTE:119 [ remove_line::$0 ] -Allocated zp ZP_BYTE:120 [ find_line::i#1 ] -Allocated zp ZP_WORD:121 [ lock_current::playfield_line#0 ] -Allocated zp ZP_BYTE:123 [ lock_current::i#1 ] -Allocated zp ZP_BYTE:124 [ keyboard_event_pressed::$0 ] -Allocated zp ZP_BYTE:125 [ keyboard_event_pressed::row_bits#0 ] -Allocated zp ZP_BYTE:126 [ keyboard_event_pressed::$1 ] -Allocated zp ZP_BYTE:127 [ keyboard_event_pressed::return#11 ] -Allocated zp ZP_BYTE:128 [ keyboard_matrix_read::rowid#0 ] -Allocated zp ZP_BYTE:129 [ keyboard_matrix_read::return#2 ] -Allocated zp ZP_BYTE:130 [ keyboard_event_scan::row_scan#0 ] -Allocated zp ZP_BYTE:131 [ keyboard_event_pressed::return#0 ] -Allocated zp ZP_BYTE:132 [ keyboard_event_scan::$14 ] -Allocated zp ZP_BYTE:133 [ keyboard_event_pressed::return#1 ] -Allocated zp ZP_BYTE:134 [ keyboard_event_scan::$18 ] -Allocated zp ZP_BYTE:135 [ keyboard_event_pressed::return#2 ] -Allocated zp ZP_BYTE:136 [ keyboard_event_scan::$22 ] -Allocated zp ZP_BYTE:137 [ keyboard_event_pressed::return#10 ] -Allocated zp ZP_BYTE:138 [ keyboard_event_scan::$26 ] -Allocated zp ZP_BYTE:139 [ keyboard_event_scan::$3 ] -Allocated zp ZP_BYTE:140 [ keyboard_event_scan::$4 ] -Allocated zp ZP_BYTE:141 [ keyboard_event_scan::event_type#0 ] -Allocated zp ZP_BYTE:142 [ keyboard_event_scan::$11 ] -Allocated zp ZP_BYTE:143 [ keyboard_matrix_read::return#0 ] -Allocated zp ZP_BYTE:144 [ tables_init::$1 ] -Allocated zp ZP_BYTE:145 [ render_init::$5 ] -Allocated zp ZP_WORD:146 [ render_init::$10 ] -Allocated zp ZP_WORD:148 [ fill::end#0 ] +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_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 ] +Allocated zp ZP_BYTE:56 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Allocated zp ZP_BYTE:57 [ 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:58 [ 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:59 [ tables_init::j#2 tables_init::j#1 ] +Allocated zp ZP_WORD:60 [ tables_init::pli#2 tables_init::pli#1 ] +Allocated zp ZP_BYTE:62 [ tables_init::idx#2 tables_init::idx#1 ] +Allocated zp ZP_BYTE:63 [ render_init::i#2 render_init::i#1 ] +Allocated zp ZP_WORD:64 [ render_init::li#2 render_init::li#1 ] +Allocated zp ZP_WORD:66 [ render_init::line#4 render_init::line#1 ] +Allocated zp ZP_BYTE:68 [ render_init::l#4 render_init::l#1 ] +Allocated zp ZP_BYTE:69 [ render_init::c#2 render_init::c#1 ] +Allocated zp ZP_BYTE:70 [ fill::val#3 ] +Allocated zp ZP_WORD:71 [ fill::addr#2 fill::addr#0 fill::addr#1 ] +Allocated zp ZP_BYTE:73 [ keyboard_event_get::return#3 ] +Allocated zp ZP_BYTE:74 [ main::key_event#0 ] +Allocated zp ZP_BYTE:75 [ play_move_down::key_event#0 ] +Allocated zp ZP_BYTE:76 [ play_move_down::return#0 ] +Allocated zp ZP_BYTE:77 [ main::$10 ] +Allocated zp ZP_BYTE:78 [ main::render#1 ] +Allocated zp ZP_BYTE:79 [ play_move_leftright::key_event#0 ] +Allocated zp ZP_BYTE:80 [ play_move_leftright::return#0 ] +Allocated zp ZP_BYTE:81 [ main::$11 ] +Allocated zp ZP_BYTE:82 [ main::render#2 ] +Allocated zp ZP_BYTE:83 [ play_move_rotate::key_event#0 ] +Allocated zp ZP_BYTE:84 [ play_move_rotate::return#0 ] +Allocated zp ZP_BYTE:85 [ main::$12 ] +Allocated zp ZP_BYTE:86 [ main::render#3 ] +Allocated zp ZP_WORD:87 [ render_current::screen_line#0 ] +Allocated zp ZP_BYTE:89 [ render_current::current_cell#0 ] +Allocated zp ZP_BYTE:90 [ render_playfield::$1 ] +Allocated zp ZP_BYTE:91 [ play_move_rotate::$2 ] +Allocated zp ZP_BYTE:92 [ collision::return#13 ] +Allocated zp ZP_BYTE:93 [ play_move_rotate::$6 ] +Allocated zp ZP_BYTE:94 [ play_move_rotate::$4 ] +Allocated zp ZP_WORD:95 [ collision::piece_gfx#0 ] +Allocated zp ZP_WORD:97 [ collision::playfield_line#0 ] +Allocated zp ZP_BYTE:99 [ collision::i#1 ] +Allocated zp ZP_BYTE:100 [ collision::$7 ] +Allocated zp ZP_BYTE:101 [ collision::return#12 ] +Allocated zp ZP_BYTE:102 [ play_move_leftright::$4 ] +Allocated zp ZP_BYTE:103 [ collision::return#1 ] +Allocated zp ZP_BYTE:104 [ play_move_leftright::$8 ] +Allocated zp ZP_BYTE:105 [ keyboard_event_pressed::return#12 ] +Allocated zp ZP_BYTE:106 [ play_move_down::$2 ] +Allocated zp ZP_BYTE:107 [ collision::return#0 ] +Allocated zp ZP_BYTE:108 [ play_move_down::$12 ] +Allocated zp ZP_BYTE:109 [ spawn_current::$3 ] +Allocated zp ZP_BYTE:110 [ sid_rnd::return#2 ] +Allocated zp ZP_BYTE:111 [ spawn_current::$1 ] +Allocated zp ZP_BYTE:112 [ sid_rnd::return#0 ] +Allocated zp ZP_BYTE:113 [ remove_lines::c#0 ] +Allocated zp ZP_WORD:114 [ lock_current::playfield_line#0 ] +Allocated zp ZP_BYTE:116 [ lock_current::i#1 ] +Allocated zp ZP_BYTE:117 [ keyboard_event_pressed::$0 ] +Allocated zp ZP_BYTE:118 [ keyboard_event_pressed::row_bits#0 ] +Allocated zp ZP_BYTE:119 [ keyboard_event_pressed::$1 ] +Allocated zp ZP_BYTE:120 [ keyboard_event_pressed::return#11 ] +Allocated zp ZP_BYTE:121 [ keyboard_matrix_read::rowid#0 ] +Allocated zp ZP_BYTE:122 [ keyboard_matrix_read::return#2 ] +Allocated zp ZP_BYTE:123 [ keyboard_event_scan::row_scan#0 ] +Allocated zp ZP_BYTE:124 [ keyboard_event_pressed::return#0 ] +Allocated zp ZP_BYTE:125 [ keyboard_event_scan::$14 ] +Allocated zp ZP_BYTE:126 [ keyboard_event_pressed::return#1 ] +Allocated zp ZP_BYTE:127 [ keyboard_event_scan::$18 ] +Allocated zp ZP_BYTE:128 [ keyboard_event_pressed::return#2 ] +Allocated zp ZP_BYTE:129 [ keyboard_event_scan::$22 ] +Allocated zp ZP_BYTE:130 [ keyboard_event_pressed::return#10 ] +Allocated zp ZP_BYTE:131 [ keyboard_event_scan::$26 ] +Allocated zp ZP_BYTE:132 [ keyboard_event_scan::$3 ] +Allocated zp ZP_BYTE:133 [ keyboard_event_scan::$4 ] +Allocated zp ZP_BYTE:134 [ keyboard_event_scan::event_type#0 ] +Allocated zp ZP_BYTE:135 [ keyboard_event_scan::$11 ] +Allocated zp ZP_BYTE:136 [ keyboard_matrix_read::return#0 ] +Allocated zp ZP_BYTE:137 [ tables_init::$1 ] +Allocated zp ZP_BYTE:138 [ render_init::$5 ] +Allocated zp ZP_WORD:139 [ render_init::$10 ] +Allocated zp ZP_WORD:141 [ fill::end#0 ] INITIAL ASM //SEG0 Basic Upstart @@ -6520,13 +6334,13 @@ INITIAL ASM .const PLAYFIELD_COLS = $a .const current_movedown_slow = $32 .const current_movedown_fast = 5 - .label SCREEN = $400 .const COLLISION_NONE = 0 .const COLLISION_PLAYFIELD = 1 .const COLLISION_BOTTOM = 2 .const COLLISION_LEFT = 4 .const COLLISION_RIGHT = 8 - .label keyboard_events_size = $3e + .label SCREEN = $400 + .label keyboard_events_size = $3a .label current_ypos = 2 .label current_xpos = $27 .label current_orientation = $24 @@ -6537,43 +6351,43 @@ INITIAL ASM .label current_piece_15 = $15 .label current_ypos_22 = 4 .label current_xpos_63 = 5 - .label current_piece_gfx_63 = 6 - .label current_piece_color_66 = 8 - .label current_ypos_70 = 4 - .label current_xpos_95 = 5 - .label current_piece_gfx_86 = 6 + .label current_piece_gfx_64 = 6 + .label current_piece_color_67 = 8 + .label current_ypos_71 = 4 + .label current_xpos_96 = 5 .label current_piece_gfx_87 = 6 - .label current_piece_color_74 = 8 + .label current_piece_gfx_88 = 6 .label current_piece_color_75 = 8 - .label current_piece_71 = $15 + .label current_piece_color_76 = 8 .label current_piece_72 = $15 .label current_piece_73 = $15 .label current_piece_74 = $15 + .label current_piece_75 = $15 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @27 [phi:@begin->@27] -b27_from_bbegin: - jmp b27 -//SEG4 @27 -b27: +//SEG3 [1] phi from @begin to @25 [phi:@begin->@25] +b25_from_bbegin: + jmp b25 +//SEG4 @25 +b25: //SEG5 [2] call main -//SEG6 [4] phi from @27 to main [phi:@27->main] -main_from_b27: +//SEG6 [4] phi from @25 to main [phi:@25->main] +main_from_b25: jsr main -//SEG7 [3] phi from @27 to @end [phi:@27->@end] -bend_from_b27: +//SEG7 [3] phi from @25 to @end [phi:@25->@end] +bend_from_b25: jmp bend //SEG8 @end bend: //SEG9 main main: { - .label _10 = $51 - .label _11 = $55 - .label _12 = $59 - .label key_event = $4e - .label render = $52 - .label render_2 = $56 - .label render_3 = $5a + .label _10 = $4d + .label _11 = $51 + .label _12 = $55 + .label key_event = $4a + .label render = $4e + .label render_2 = $52 + .label render_3 = $56 //SEG10 [5] call sid_rnd_init jsr sid_rnd_init jmp b21 @@ -6582,7 +6396,7 @@ main: { //SEG12 asm { sei } sei //SEG13 [7] call render_init - //SEG14 [332] phi from main::@21 to render_init [phi:main::@21->render_init] + //SEG14 [314] phi from main::@21 to render_init [phi:main::@21->render_init] render_init_from_b21: jsr render_init //SEG15 [8] phi from main::@21 to main::@22 [phi:main::@21->main::@22] @@ -6591,7 +6405,7 @@ main: { //SEG16 main::@22 b22: //SEG17 [9] call tables_init - //SEG18 [321] phi from main::@22 to tables_init [phi:main::@22->tables_init] + //SEG18 [303] phi from main::@22 to tables_init [phi:main::@22->tables_init] tables_init_from_b22: jsr tables_init //SEG19 [10] phi from main::@22 to main::@23 [phi:main::@22->main::@23] @@ -6615,19 +6429,19 @@ main: { jmp b25 //SEG27 main::@25 b25: - //SEG28 [14] (byte*~) current_piece_gfx#86 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 + //SEG28 [14] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_86 + sta current_piece_gfx_87 lda current_piece_gfx+1 - sta current_piece_gfx_86+1 - //SEG29 [15] (byte~) current_piece_color#74 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 + sta current_piece_gfx_87+1 + //SEG29 [15] (byte~) current_piece_color#75 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 lda current_piece_color - sta current_piece_color_74 + sta current_piece_color_75 //SEG30 [16] call render_current //SEG31 [51] phi from main::@25 to render_current [phi:main::@25->render_current] render_current_from_b25: - //SEG32 [51] phi (byte) current_piece_color#66 = (byte~) current_piece_color#74 [phi:main::@25->render_current#0] -- register_copy - //SEG33 [51] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#86 [phi:main::@25->render_current#1] -- register_copy + //SEG32 [51] phi (byte) current_piece_color#67 = (byte~) current_piece_color#75 [phi:main::@25->render_current#0] -- register_copy + //SEG33 [51] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy //SEG34 [51] phi (byte) current_xpos#63 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 lda #3 sta current_xpos_63 @@ -6635,7 +6449,7 @@ main: { lda #0 sta current_ypos_22 jsr render_current - //SEG36 [17] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG36 [17] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy spawn_current._3 lda PIECES,y sta current_piece @@ -6660,7 +6474,7 @@ main: { //SEG44 [18] phi (byte) current_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG45 [18] phi (byte*) current_piece#11 = (byte*~) current_piece#70 [phi:main::@25->main::@1#7] -- register_copy + //SEG45 [18] phi (byte*) current_piece#11 = (byte*~) current_piece#71 [phi:main::@25->main::@1#7] -- register_copy jmp b1 //SEG46 main::@1 b1: @@ -6684,7 +6498,7 @@ main: { //SEG52 [21] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL //SEG53 [22] call keyboard_event_scan - //SEG54 [265] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] + //SEG54 [247] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] keyboard_event_scan_from_b9: jsr keyboard_event_scan //SEG55 [23] phi from main::@9 to main::@27 [phi:main::@9->main::@27] @@ -6776,27 +6590,27 @@ main: { jmp b32 //SEG84 main::@32 b32: - //SEG85 [45] (byte~) current_ypos#70 ← (byte) current_ypos#16 -- vbuz1=vbuz2 + //SEG85 [45] (byte~) current_ypos#71 ← (byte) current_ypos#16 -- vbuz1=vbuz2 lda current_ypos - sta current_ypos_70 - //SEG86 [46] (byte~) current_xpos#95 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + sta current_ypos_71 + //SEG86 [46] (byte~) current_xpos#96 ← (byte) current_xpos#23 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_95 - //SEG87 [47] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + sta current_xpos_96 + //SEG87 [47] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_87 + sta current_piece_gfx_88 lda current_piece_gfx+1 - sta current_piece_gfx_87+1 - //SEG88 [48] (byte~) current_piece_color#75 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 + sta current_piece_gfx_88+1 + //SEG88 [48] (byte~) current_piece_color#76 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 lda current_piece_color - sta current_piece_color_75 + sta current_piece_color_76 //SEG89 [49] call render_current //SEG90 [51] phi from main::@32 to render_current [phi:main::@32->render_current] render_current_from_b32: - //SEG91 [51] phi (byte) current_piece_color#66 = (byte~) current_piece_color#75 [phi:main::@32->render_current#0] -- register_copy - //SEG92 [51] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#87 [phi:main::@32->render_current#1] -- register_copy - //SEG93 [51] phi (byte) current_xpos#63 = (byte~) current_xpos#95 [phi:main::@32->render_current#2] -- register_copy - //SEG94 [51] phi (byte) current_ypos#22 = (byte~) current_ypos#70 [phi:main::@32->render_current#3] -- register_copy + //SEG91 [51] phi (byte) current_piece_color#67 = (byte~) current_piece_color#76 [phi:main::@32->render_current#0] -- register_copy + //SEG92 [51] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy + //SEG93 [51] phi (byte) current_xpos#63 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy + //SEG94 [51] phi (byte) current_ypos#22 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy jsr render_current jmp b10 //SEG95 main::@10 @@ -6819,9 +6633,9 @@ main: { render_current: { .label ypos2 = 9 .label l = $a - .label screen_line = $5b + .label screen_line = $57 .label xpos = $c - .label current_cell = $5d + .label current_cell = $59 .label i = $b .label c = $d //SEG107 [52] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 @@ -6878,9 +6692,9 @@ render_current: { jmp b3 //SEG129 render_current::@3 b3: - //SEG130 [58] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#63 + (byte) render_current::i#2) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG130 [58] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) -- vbuz1=pbuz2_derefidx_vbuz3 ldy i - lda (current_piece_gfx_63),y + lda (current_piece_gfx_64),y sta current_cell //SEG131 [59] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 inc i @@ -6898,8 +6712,8 @@ render_current: { jmp b8 //SEG135 render_current::@8 b8: - //SEG136 [62] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#66 -- pbuz1_derefidx_vbuz2=vbuz3 - lda current_piece_color_66 + //SEG136 [62] *((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 ldy xpos sta (screen_line),y jmp b4 @@ -6939,7 +6753,7 @@ render_current: { } //SEG149 render_playfield render_playfield: { - .label _1 = $5e + .label _1 = $5a .label line = $10 .label i = $f .label c = $12 @@ -7021,11 +6835,11 @@ render_playfield: { } //SEG178 play_move_rotate play_move_rotate: { - .label _2 = $5f - .label _4 = $62 - .label _6 = $61 - .label key_event = $57 - .label return = $58 + .label _2 = $5b + .label _4 = $5e + .label _6 = $5d + .label key_event = $53 + .label return = $54 .label orientation = $14 .label return_2 = $13 //SEG179 [84] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuz1_eq_vbuc1_then_la1 @@ -7079,18 +6893,18 @@ play_move_rotate: { //SEG196 [93] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta collision.orientation - //SEG197 [94] (byte*~) current_piece#74 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG197 [94] (byte*~) current_piece#75 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece - sta current_piece_74 + sta current_piece_75 lda current_piece+1 - sta current_piece_74+1 + sta current_piece_75+1 //SEG198 [95] call collision //SEG199 [103] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] collision_from_b4: //SEG200 [103] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy //SEG201 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy //SEG202 [103] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy - //SEG203 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#74 [phi:play_move_rotate::@4->collision#3] -- register_copy + //SEG203 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#75 [phi:play_move_rotate::@4->collision#3] -- register_copy jsr collision //SEG204 [96] (byte) collision::return#13 ← (byte) collision::return#14 -- vbuz1=vbuz2 lda collision.return_14 @@ -7142,21 +6956,21 @@ play_move_rotate: { } //SEG218 collision collision: { - .label _7 = $68 + .label _7 = $64 .label xpos = $19 .label ypos = $18 .label orientation = $17 - .label return = $6f - .label return_1 = $6b - .label piece_gfx = $63 + .label return = $6b + .label return_1 = $67 + .label piece_gfx = $5f .label ypos2 = $1a - .label playfield_line = $65 - .label i = $67 + .label playfield_line = $61 + .label i = $63 .label col = $1d .label c = $1e .label l = $1b - .label return_12 = $69 - .label return_13 = $60 + .label return_12 = $65 + .label return_13 = $5c .label i_2 = $1c .label return_14 = $1f .label i_3 = $1c @@ -7327,10 +7141,10 @@ collision: { } //SEG276 play_move_leftright play_move_leftright: { - .label _4 = $6a - .label _8 = $6c - .label key_event = $53 - .label return = $54 + .label _4 = $66 + .label _8 = $68 + .label key_event = $4f + .label return = $50 .label return_2 = $20 //SEG277 [127] 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 @@ -7356,18 +7170,18 @@ play_move_leftright: { //SEG283 [131] (byte) collision::orientation#2 ← (byte) current_orientation#18 -- vbuz1=vbuz2 lda current_orientation sta collision.orientation - //SEG284 [132] (byte*~) current_piece#73 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG284 [132] (byte*~) current_piece#74 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece - sta current_piece_73 + sta current_piece_74 lda current_piece+1 - sta current_piece_73+1 + sta current_piece_74+1 //SEG285 [133] call collision //SEG286 [103] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] collision_from_b7: //SEG287 [103] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy //SEG288 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy //SEG289 [103] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy - //SEG290 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#73 [phi:play_move_leftright::@7->collision#3] -- register_copy + //SEG290 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#74 [phi:play_move_leftright::@7->collision#3] -- register_copy jsr collision //SEG291 [134] (byte) collision::return#12 ← (byte) collision::return#14 -- vbuz1=vbuz2 lda collision.return_14 @@ -7420,18 +7234,18 @@ play_move_leftright: { //SEG308 [142] (byte) collision::orientation#1 ← (byte) current_orientation#18 -- vbuz1=vbuz2 lda current_orientation sta collision.orientation - //SEG309 [143] (byte*~) current_piece#72 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG309 [143] (byte*~) current_piece#73 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece - sta current_piece_72 + sta current_piece_73 lda current_piece+1 - sta current_piece_72+1 + sta current_piece_73+1 //SEG310 [144] call collision //SEG311 [103] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] collision_from_b1: //SEG312 [103] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy //SEG313 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy //SEG314 [103] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy - //SEG315 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_leftright::@1->collision#3] -- register_copy + //SEG315 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#73 [phi:play_move_leftright::@1->collision#3] -- register_copy jsr collision //SEG316 [145] (byte) collision::return#1 ← (byte) collision::return#14 -- vbuz1=vbuz2 lda collision.return_14 @@ -7455,10 +7269,10 @@ play_move_leftright: { } //SEG322 play_move_down play_move_down: { - .label _2 = $6e - .label _12 = $70 - .label key_event = $4f - .label return = $50 + .label _2 = $6a + .label _12 = $6c + .label key_event = $4b + .label return = $4c .label movedown = $21 .label return_3 = $29 //SEG323 [149] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 @@ -7487,9 +7301,9 @@ play_move_down: { //SEG331 play_move_down::@1 b1: //SEG332 [153] call keyboard_event_pressed - //SEG333 [254] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG333 [236] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG334 [254] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG334 [236] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed @@ -7559,18 +7373,18 @@ play_move_down: { //SEG356 [166] (byte) collision::orientation#0 ← (byte) current_orientation#15 -- vbuz1=vbuz2 lda current_orientation sta collision.orientation - //SEG357 [167] (byte*~) current_piece#71 ← (byte*) current_piece#11 -- pbuz1=pbuz2 + //SEG357 [167] (byte*~) current_piece#72 ← (byte*) current_piece#11 -- pbuz1=pbuz2 lda current_piece - sta current_piece_71 + sta current_piece_72 lda current_piece+1 - sta current_piece_71+1 + sta current_piece_72+1 //SEG358 [168] call collision //SEG359 [103] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] collision_from_b12: //SEG360 [103] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy //SEG361 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy //SEG362 [103] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy - //SEG363 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#71 [phi:play_move_down::@12->collision#3] -- register_copy + //SEG363 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_down::@12->collision#3] -- register_copy jsr collision //SEG364 [169] (byte) collision::return#0 ← (byte) collision::return#14 -- vbuz1=vbuz2 lda collision.return_14 @@ -7610,7 +7424,7 @@ play_move_down: { //SEG378 [183] phi from play_move_down::@20 to spawn_current [phi:play_move_down::@20->spawn_current] spawn_current_from_b20: jsr spawn_current - //SEG379 [178] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG379 [178] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy spawn_current._3 lda PIECES,y sta current_piece @@ -7626,7 +7440,7 @@ play_move_down: { //SEG384 [179] 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 lda #0 sta current_orientation - //SEG385 [179] phi (byte*) current_piece#23 = (byte*~) current_piece#75 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy + //SEG385 [179] phi (byte*) current_piece#23 = (byte*~) current_piece#76 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy //SEG386 [179] 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 lda #0 sta current_ypos @@ -7681,8 +7495,8 @@ play_move_down: { } //SEG417 spawn_current spawn_current: { - .label _1 = $73 - .label _3 = $71 + .label _1 = $6f + .label _3 = $6d .label piece_idx = $2a //SEG418 [184] phi from spawn_current to spawn_current::@1 [phi:spawn_current->spawn_current::@1] b1_from_spawn_current: @@ -7745,8 +7559,8 @@ spawn_current: { } //SEG437 sid_rnd sid_rnd: { - .label return = $74 - .label return_2 = $72 + .label return = $70 + .label return_2 = $6e //SEG438 [195] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 lda SID_VOICE3_OSC sta return @@ -7758,809 +7572,692 @@ sid_rnd: { } //SEG441 remove_lines remove_lines: { - .label line_ypos = $76 - .label done = $2b + .label c = $71 + .label r = $2c + .label w = $2f + .label x = $2d + .label y = $2b + .label full = $2e //SEG442 [198] phi from remove_lines to remove_lines::@1 [phi:remove_lines->remove_lines::@1] b1_from_remove_lines: - //SEG443 [198] phi (byte) remove_lines::done#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines->remove_lines::@1#0] -- vbuz1=vbuc1 - lda #0 - sta done - jmp b1 - //SEG444 [198] phi from remove_lines::@3 to remove_lines::@1 [phi:remove_lines::@3->remove_lines::@1] - b1_from_b3: - //SEG445 [198] phi (byte) remove_lines::done#3 = (byte) remove_lines::done#2 [phi:remove_lines::@3->remove_lines::@1#0] -- register_copy - jmp b1 - //SEG446 remove_lines::@1 - b1: - //SEG447 [199] call find_line - //SEG448 [221] phi from remove_lines::@1 to find_line [phi:remove_lines::@1->find_line] - find_line_from_b1: - jsr find_line - //SEG449 [200] (byte) find_line::return#0 ← (byte) find_line::return#2 -- vbuz1=vbuz2 - lda find_line.return_2 - sta find_line.return - jmp b7 - //SEG450 remove_lines::@7 - b7: - //SEG451 [201] (byte) remove_lines::line_ypos#0 ← (byte) find_line::return#0 -- vbuz1=vbuz2 - lda find_line.return - sta line_ypos - //SEG452 [202] if((byte) remove_lines::line_ypos#0!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 - lda line_ypos - cmp #$ff - bne b2 - //SEG453 [203] phi from remove_lines::@7 to remove_lines::@3 [phi:remove_lines::@7->remove_lines::@3] - b3_from_b7: - //SEG454 [203] phi (byte) remove_lines::done#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines::@7->remove_lines::@3#0] -- vbuz1=vbuc1 - lda #1 - sta done - jmp b3 - //SEG455 remove_lines::@3 - b3: - //SEG456 [204] if((byte) remove_lines::done#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@1 -- vbuz1_eq_0_then_la1 - lda done - cmp #0 - beq b1_from_b3 - jmp breturn - //SEG457 remove_lines::@return - breturn: - //SEG458 [205] return - rts - //SEG459 remove_lines::@2 - b2: - //SEG460 [206] (byte) remove_line::ypos#0 ← (byte) remove_lines::line_ypos#0 -- vbuz1=vbuz2 - lda line_ypos - sta remove_line.ypos - //SEG461 [207] call remove_line - jsr remove_line - //SEG462 [203] phi from remove_lines::@2 to remove_lines::@3 [phi:remove_lines::@2->remove_lines::@3] - b3_from_b2: - //SEG463 [203] phi (byte) remove_lines::done#2 = (byte) remove_lines::done#3 [phi:remove_lines::@2->remove_lines::@3#0] -- register_copy - jmp b3 -} -//SEG464 remove_line -remove_line: { - .label _0 = $77 - .label ypos = $2c - .label i2 = $2e - .label i1 = $2d - .label x = $2f - .label y = $2c - //SEG465 [208] (byte~) remove_line::$0 ← (byte) remove_line::ypos#0 -- vbuz1=vbuz2 - lda ypos - sta _0 - //SEG466 [209] (byte) remove_line::i2#0 ← *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte~) remove_line::$0) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=pbuc1_derefidx_vbuz2_minus_1 - ldy _0 - lda playfield_lines_idx+1,y - sec - sbc #1 - sta i2 - //SEG467 [210] (byte) remove_line::i1#0 ← *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) remove_line::ypos#0) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=pbuc1_derefidx_vbuz2_minus_1 - ldy ypos - lda playfield_lines_idx,y - sec - sbc #1 - sta i1 - //SEG468 [211] phi from remove_line remove_line::@3 to remove_line::@1 [phi:remove_line/remove_line::@3->remove_line::@1] - b1_from_remove_line: - b1_from_b3: - //SEG469 [211] phi (byte) remove_line::y#4 = (byte) remove_line::ypos#0 [phi:remove_line/remove_line::@3->remove_line::@1#0] -- register_copy - //SEG470 [211] phi (byte) remove_line::i2#3 = (byte) remove_line::i2#0 [phi:remove_line/remove_line::@3->remove_line::@1#1] -- register_copy - //SEG471 [211] phi (byte) remove_line::i1#3 = (byte) remove_line::i1#0 [phi:remove_line/remove_line::@3->remove_line::@1#2] -- register_copy - jmp b1 - //SEG472 remove_line::@1 - b1: - //SEG473 [212] phi from remove_line::@1 to remove_line::@2 [phi:remove_line::@1->remove_line::@2] - b2_from_b1: - //SEG474 [212] phi (byte) remove_line::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_line::@1->remove_line::@2#0] -- vbuz1=vbuc1 - lda #0 - sta x - //SEG475 [212] phi (byte) remove_line::i2#2 = (byte) remove_line::i2#3 [phi:remove_line::@1->remove_line::@2#1] -- register_copy - //SEG476 [212] phi (byte) remove_line::i1#2 = (byte) remove_line::i1#3 [phi:remove_line::@1->remove_line::@2#2] -- register_copy - jmp b2 - //SEG477 [212] phi from remove_line::@2 to remove_line::@2 [phi:remove_line::@2->remove_line::@2] - b2_from_b2: - //SEG478 [212] phi (byte) remove_line::x#2 = (byte) remove_line::x#1 [phi:remove_line::@2->remove_line::@2#0] -- register_copy - //SEG479 [212] phi (byte) remove_line::i2#2 = (byte) remove_line::i2#1 [phi:remove_line::@2->remove_line::@2#1] -- register_copy - //SEG480 [212] phi (byte) remove_line::i1#2 = (byte) remove_line::i1#1 [phi:remove_line::@2->remove_line::@2#2] -- register_copy - jmp b2 - //SEG481 remove_line::@2 - b2: - //SEG482 [213] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_line::i2#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_line::i1#2) -- pbuc1_derefidx_vbuz1=pbuc1_derefidx_vbuz2 - ldx i1 - lda playfield,x - ldx i2 - sta playfield,x - //SEG483 [214] (byte) remove_line::i2#1 ← -- (byte) remove_line::i2#2 -- vbuz1=_dec_vbuz1 - dec i2 - //SEG484 [215] (byte) remove_line::i1#1 ← -- (byte) remove_line::i1#2 -- vbuz1=_dec_vbuz1 - dec i1 - //SEG485 [216] (byte) remove_line::x#1 ← ++ (byte) remove_line::x#2 -- vbuz1=_inc_vbuz1 - inc x - //SEG486 [217] if((byte) remove_line::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_line::@2 -- vbuz1_neq_vbuc1_then_la1 - lda x - cmp #PLAYFIELD_COLS-1+1 - bne b2_from_b2 - jmp b3 - //SEG487 remove_line::@3 - b3: - //SEG488 [218] (byte) remove_line::y#1 ← -- (byte) remove_line::y#4 -- vbuz1=_dec_vbuz1 - dec y - //SEG489 [219] if((byte) remove_line::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_line::@1 -- vbuz1_neq_vbuc1_then_la1 - lda y - cmp #1 - bne b1_from_b3 - jmp breturn - //SEG490 remove_line::@return - breturn: - //SEG491 [220] return - rts -} -//SEG492 find_line -find_line: { - .label return = $75 - .label i = $78 - .label x = $31 - .label y = $33 - .label return_2 = $33 - .label i_2 = $30 - .label filled = $32 - .label i_3 = $30 - .label i_8 = $30 - .label i_10 = $30 - //SEG493 [222] phi from find_line to find_line::@1 [phi:find_line->find_line::@1] - b1_from_find_line: - //SEG494 [222] phi (byte) find_line::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:find_line->find_line::@1#0] -- vbuz1=vbuc1 + //SEG443 [198] 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 lda #0 sta y - //SEG495 [222] phi (byte) find_line::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:find_line->find_line::@1#1] -- vbuz1=vbuc1 - lda #0 - sta i_3 + //SEG444 [198] 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 + lda #PLAYFIELD_LINES*PLAYFIELD_COLS-1 + sta w + //SEG445 [198] 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 + lda #PLAYFIELD_LINES*PLAYFIELD_COLS-1 + sta r jmp b1 - //SEG496 find_line::@1 + //SEG446 [198] phi from remove_lines::@4 to remove_lines::@1 [phi:remove_lines::@4->remove_lines::@1] + b1_from_b4: + //SEG447 [198] phi (byte) remove_lines::y#8 = (byte) remove_lines::y#1 [phi:remove_lines::@4->remove_lines::@1#0] -- register_copy + //SEG448 [198] phi (byte) remove_lines::w#12 = (byte) remove_lines::w#11 [phi:remove_lines::@4->remove_lines::@1#1] -- register_copy + //SEG449 [198] phi (byte) remove_lines::r#3 = (byte) remove_lines::r#1 [phi:remove_lines::@4->remove_lines::@1#2] -- register_copy + jmp b1 + //SEG450 remove_lines::@1 b1: - //SEG497 [223] phi from find_line::@1 to find_line::@2 [phi:find_line::@1->find_line::@2] + //SEG451 [199] phi from remove_lines::@1 to remove_lines::@2 [phi:remove_lines::@1->remove_lines::@2] b2_from_b1: - //SEG498 [223] phi (byte) find_line::filled#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:find_line::@1->find_line::@2#0] -- vbuz1=vbuc1 + //SEG452 [199] 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 lda #1 - sta filled - //SEG499 [223] phi (byte) find_line::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:find_line::@1->find_line::@2#1] -- vbuz1=vbuc1 + sta full + //SEG453 [199] 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 lda #0 sta x - //SEG500 [223] phi (byte) find_line::i#2 = (byte) find_line::i#3 [phi:find_line::@1->find_line::@2#2] -- register_copy + //SEG454 [199] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#12 [phi:remove_lines::@1->remove_lines::@2#2] -- register_copy + //SEG455 [199] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#3 [phi:remove_lines::@1->remove_lines::@2#3] -- register_copy jmp b2 - //SEG501 find_line::@2 + //SEG456 [199] phi from remove_lines::@3 to remove_lines::@2 [phi:remove_lines::@3->remove_lines::@2] + b2_from_b3: + //SEG457 [199] phi (byte) remove_lines::full#4 = (byte) remove_lines::full#2 [phi:remove_lines::@3->remove_lines::@2#0] -- register_copy + //SEG458 [199] phi (byte) remove_lines::x#2 = (byte) remove_lines::x#1 [phi:remove_lines::@3->remove_lines::@2#1] -- register_copy + //SEG459 [199] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#1 [phi:remove_lines::@3->remove_lines::@2#2] -- register_copy + //SEG460 [199] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#1 [phi:remove_lines::@3->remove_lines::@2#3] -- register_copy + jmp b2 + //SEG461 remove_lines::@2 b2: - //SEG502 [224] (byte) find_line::i#1 ← ++ (byte) find_line::i#2 -- vbuz1=_inc_vbuz2 - ldy i_2 - iny - sty i - //SEG503 [225] if(*((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) find_line::i#2)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto find_line::@13 -- pbuc1_derefidx_vbuz1_neq_0_then_la1 - ldy i_2 + //SEG462 [200] (byte) remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy r lda playfield,y + sta c + //SEG463 [201] (byte) remove_lines::r#1 ← -- (byte) remove_lines::r#2 -- vbuz1=_dec_vbuz1 + dec r + //SEG464 [202] 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 + lda c cmp #0 - bne b13_from_b2 - //SEG504 [226] phi from find_line::@2 to find_line::@3 [phi:find_line::@2->find_line::@3] + bne b17_from_b2 + //SEG465 [203] phi from remove_lines::@2 to remove_lines::@3 [phi:remove_lines::@2->remove_lines::@3] b3_from_b2: - //SEG505 [226] phi (byte) find_line::filled#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:find_line::@2->find_line::@3#0] -- vbuz1=vbuc1 + //SEG466 [203] 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 lda #0 - sta filled + sta full jmp b3 - //SEG506 find_line::@3 + //SEG467 remove_lines::@3 b3: - //SEG507 [227] (byte) find_line::x#1 ← ++ (byte) find_line::x#2 -- vbuz1=_inc_vbuz1 + //SEG468 [204] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#4) ← (byte) remove_lines::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 + lda c + ldy w + sta playfield,y + //SEG469 [205] (byte) remove_lines::w#1 ← -- (byte) remove_lines::w#4 -- vbuz1=_dec_vbuz1 + dec w + //SEG470 [206] (byte) remove_lines::x#1 ← ++ (byte) remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG508 [228] if((byte) find_line::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 find_line::@12 -- vbuz1_neq_vbuc1_then_la1 + //SEG471 [207] 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 lda x cmp #PLAYFIELD_COLS-1+1 - bne b12 - jmp b6 - //SEG509 find_line::@6 - b6: - //SEG510 [229] if((byte) find_line::filled#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto find_line::@4 -- vbuz1_neq_vbuc1_then_la1 - lda filled + bne b2_from_b3 + jmp b9 + //SEG472 remove_lines::@9 + b9: + //SEG473 [208] 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 + lda full cmp #1 - bne b4 - //SEG511 [230] phi from find_line::@6 to find_line::@return [phi:find_line::@6->find_line::@return] - breturn_from_b6: - //SEG512 [230] phi (byte) find_line::return#2 = (byte) find_line::y#8 [phi:find_line::@6->find_line::@return#0] -- register_copy - jmp breturn - //SEG513 find_line::@return - breturn: - //SEG514 [231] return - rts - //SEG515 find_line::@4 + bne b4_from_b9 + jmp b10 + //SEG474 remove_lines::@10 + b10: + //SEG475 [209] (byte) remove_lines::w#2 ← (byte) remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + lda #PLAYFIELD_COLS + clc + adc w + sta w + //SEG476 [210] phi from remove_lines::@10 remove_lines::@9 to remove_lines::@4 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4] + b4_from_b10: + b4_from_b9: + //SEG477 [210] phi (byte) remove_lines::w#11 = (byte) remove_lines::w#2 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4#0] -- register_copy + jmp b4 + //SEG478 remove_lines::@4 b4: - //SEG516 [232] (byte) find_line::y#1 ← ++ (byte) find_line::y#8 -- vbuz1=_inc_vbuz1 + //SEG479 [211] (byte) remove_lines::y#1 ← ++ (byte) remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG517 [233] if((byte) find_line::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 find_line::@11 -- vbuz1_neq_vbuc1_then_la1 + //SEG480 [212] 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 lda y cmp #PLAYFIELD_LINES-1+1 - bne b11 - //SEG518 [230] phi from find_line::@4 to find_line::@return [phi:find_line::@4->find_line::@return] - breturn_from_b4: - //SEG519 [230] phi (byte) find_line::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:find_line::@4->find_line::@return#0] -- vbuz1=vbuc1 - lda #$ff - sta return_2 + bne b1_from_b4 + //SEG481 [213] phi from remove_lines::@4 remove_lines::@6 to remove_lines::@5 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5] + b5_from_b4: + b5_from_b6: + //SEG482 [213] phi (byte) remove_lines::w#6 = (byte) remove_lines::w#11 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5#0] -- register_copy + jmp b5 + //SEG483 remove_lines::@5 + b5: + //SEG484 [214] if((byte) remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 + lda w + cmp #$ff + bne b6 jmp breturn - //SEG520 find_line::@11 - b11: - //SEG521 [234] (byte~) find_line::i#8 ← (byte) find_line::i#1 -- vbuz1=vbuz2 - lda i - sta i_8 - //SEG522 [222] phi from find_line::@11 to find_line::@1 [phi:find_line::@11->find_line::@1] - b1_from_b11: - //SEG523 [222] phi (byte) find_line::y#8 = (byte) find_line::y#1 [phi:find_line::@11->find_line::@1#0] -- register_copy - //SEG524 [222] phi (byte) find_line::i#3 = (byte~) find_line::i#8 [phi:find_line::@11->find_line::@1#1] -- register_copy - jmp b1 - //SEG525 find_line::@12 - b12: - //SEG526 [235] (byte~) find_line::i#10 ← (byte) find_line::i#1 -- vbuz1=vbuz2 - lda i - sta i_10 - //SEG527 [223] phi from find_line::@12 to find_line::@2 [phi:find_line::@12->find_line::@2] - b2_from_b12: - //SEG528 [223] phi (byte) find_line::filled#4 = (byte) find_line::filled#2 [phi:find_line::@12->find_line::@2#0] -- register_copy - //SEG529 [223] phi (byte) find_line::x#2 = (byte) find_line::x#1 [phi:find_line::@12->find_line::@2#1] -- register_copy - //SEG530 [223] phi (byte) find_line::i#2 = (byte~) find_line::i#10 [phi:find_line::@12->find_line::@2#2] -- register_copy - jmp b2 - //SEG531 [236] phi from find_line::@2 to find_line::@13 [phi:find_line::@2->find_line::@13] - b13_from_b2: - jmp b13 - //SEG532 find_line::@13 - b13: - //SEG533 [226] phi from find_line::@13 to find_line::@3 [phi:find_line::@13->find_line::@3] - b3_from_b13: - //SEG534 [226] phi (byte) find_line::filled#2 = (byte) find_line::filled#4 [phi:find_line::@13->find_line::@3#0] -- register_copy + //SEG485 remove_lines::@return + breturn: + //SEG486 [215] return + rts + //SEG487 remove_lines::@6 + b6: + //SEG488 [216] *((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 + ldy w + lda #0 + sta playfield,y + //SEG489 [217] (byte) remove_lines::w#3 ← -- (byte) remove_lines::w#6 -- vbuz1=_dec_vbuz1 + dec w + jmp b5_from_b6 + //SEG490 [218] phi from remove_lines::@2 to remove_lines::@17 [phi:remove_lines::@2->remove_lines::@17] + b17_from_b2: + jmp b17 + //SEG491 remove_lines::@17 + b17: + //SEG492 [203] phi from remove_lines::@17 to remove_lines::@3 [phi:remove_lines::@17->remove_lines::@3] + b3_from_b17: + //SEG493 [203] phi (byte) remove_lines::full#2 = (byte) remove_lines::full#4 [phi:remove_lines::@17->remove_lines::@3#0] -- register_copy jmp b3 } -//SEG535 lock_current +//SEG494 lock_current lock_current: { - .label ypos2 = $34 - .label playfield_line = $79 - .label col = $37 - .label i = $7b - .label c = $38 - .label l = $35 - .label i_2 = $36 - .label i_3 = $36 - .label i_7 = $36 - .label i_9 = $36 - //SEG536 [237] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + .label ypos2 = $30 + .label playfield_line = $72 + .label col = $33 + .label i = $74 + .label c = $34 + .label l = $31 + .label i_2 = $32 + .label i_3 = $32 + .label i_7 = $32 + .label i_9 = $32 + //SEG495 [219] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda current_ypos asl sta ypos2 - //SEG537 [238] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] + //SEG496 [220] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] b1_from_lock_current: - //SEG538 [238] 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 [220] phi (byte) lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG539 [238] 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 + //SEG498 [220] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG540 [238] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy + //SEG499 [220] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy jmp b1 - //SEG541 lock_current::@1 + //SEG500 lock_current::@1 b1: - //SEG542 [239] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG501 [221] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG543 [240] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG502 [222] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG544 [241] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] + //SEG503 [223] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] b2_from_b1: - //SEG545 [241] 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 + //SEG504 [223] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG546 [241] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy - //SEG547 [241] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy + //SEG505 [223] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy + //SEG506 [223] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy jmp b2 - //SEG548 lock_current::@2 + //SEG507 lock_current::@2 b2: - //SEG549 [242] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG508 [224] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG550 [243] 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 + //SEG509 [225] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 jmp b4 - //SEG551 lock_current::@4 + //SEG510 lock_current::@4 b4: - //SEG552 [244] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG511 [226] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_color ldy col sta (playfield_line),y jmp b3 - //SEG553 lock_current::@3 + //SEG512 lock_current::@3 b3: - //SEG554 [245] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG513 [227] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG555 [246] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuz1=_inc_vbuz1 + //SEG514 [228] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG556 [247] 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 + //SEG515 [229] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@8 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b8 jmp b5 - //SEG557 lock_current::@5 + //SEG516 lock_current::@5 b5: - //SEG558 [248] (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 [230] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG559 [249] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG518 [231] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG560 [250] 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 + //SEG519 [232] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 jmp breturn - //SEG561 lock_current::@return + //SEG520 lock_current::@return breturn: - //SEG562 [251] return + //SEG521 [233] return rts - //SEG563 lock_current::@7 + //SEG522 lock_current::@7 b7: - //SEG564 [252] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG523 [234] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG565 [238] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] + //SEG524 [220] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] b1_from_b7: - //SEG566 [238] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy - //SEG567 [238] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy - //SEG568 [238] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy + //SEG525 [220] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy + //SEG526 [220] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy + //SEG527 [220] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy jmp b1 - //SEG569 lock_current::@8 + //SEG528 lock_current::@8 b8: - //SEG570 [253] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG529 [235] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG571 [241] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] + //SEG530 [223] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] b2_from_b8: - //SEG572 [241] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy - //SEG573 [241] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy - //SEG574 [241] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy + //SEG531 [223] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy + //SEG532 [223] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy + //SEG533 [223] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy jmp b2 } -//SEG575 keyboard_event_pressed +//SEG534 keyboard_event_pressed keyboard_event_pressed: { - .label _0 = $7c - .label _1 = $7e - .label return = $83 - .label return_1 = $85 - .label return_2 = $87 - .label row_bits = $7d - .label return_10 = $89 - .label keycode = $39 - .label return_11 = $7f - .label return_12 = $6d - //SEG576 [255] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 + .label _0 = $75 + .label _1 = $77 + .label return = $7c + .label return_1 = $7e + .label return_2 = $80 + .label row_bits = $76 + .label return_10 = $82 + .label keycode = $35 + .label return_11 = $78 + .label return_12 = $69 + //SEG535 [237] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 lda keycode lsr lsr lsr sta _0 - //SEG577 [256] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG536 [238] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda keyboard_scan_values,y sta row_bits - //SEG578 [257] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG537 [239] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and keycode sta _1 - //SEG579 [258] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG538 [240] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda row_bits ldy _1 and keyboard_matrix_col_bitmask,y sta return_11 jmp breturn - //SEG580 keyboard_event_pressed::@return + //SEG539 keyboard_event_pressed::@return breturn: - //SEG581 [259] return + //SEG540 [241] return rts } -//SEG582 keyboard_event_get +//SEG541 keyboard_event_get keyboard_event_get: { - .label return = $3a - .label return_3 = $4d - //SEG583 [260] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + .label return = $36 + .label return_3 = $49 + //SEG542 [242] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq breturn_from_keyboard_event_get jmp b3 - //SEG584 keyboard_event_get::@3 + //SEG543 keyboard_event_get::@3 b3: - //SEG585 [261] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG544 [243] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG586 [262] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG545 [244] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuz1=pbuc1_derefidx_vbuz2 ldy keyboard_events_size lda keyboard_events,y sta return - //SEG587 [263] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG546 [245] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG588 [263] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG589 [263] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy + //SEG547 [245] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG548 [245] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG590 [263] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG549 [245] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG591 [263] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG592 [263] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuz1=vbuc1 + //SEG550 [245] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG551 [245] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuz1=vbuc1 lda #$ff sta return jmp breturn - //SEG593 keyboard_event_get::@return + //SEG552 keyboard_event_get::@return breturn: - //SEG594 [264] return + //SEG553 [246] return rts } -//SEG595 keyboard_event_scan +//SEG554 keyboard_event_scan keyboard_event_scan: { - .label _3 = $8b - .label _4 = $8c - .label _11 = $8e - .label _14 = $84 - .label _18 = $86 - .label _22 = $88 - .label _26 = $8a - .label row_scan = $82 - .label keycode = $3d - .label row = $3b - .label col = $3c - .label event_type = $8d - //SEG596 [266] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + .label _3 = $84 + .label _4 = $85 + .label _11 = $87 + .label _14 = $7d + .label _18 = $7f + .label _22 = $81 + .label _26 = $83 + .label row_scan = $7b + .label keycode = $39 + .label row = $37 + .label col = $38 + .label event_type = $86 + //SEG555 [248] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG597 [266] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG598 [266] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 + //SEG556 [248] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG557 [248] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG599 [266] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 + //SEG558 [248] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 lda #0 sta row jmp b1 - //SEG600 [266] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG559 [248] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG601 [266] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG602 [266] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy - //SEG603 [266] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy + //SEG560 [248] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG561 [248] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG562 [248] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy jmp b1 - //SEG604 keyboard_event_scan::@1 + //SEG563 keyboard_event_scan::@1 b1: - //SEG605 [267] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 + //SEG564 [249] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 lda row sta keyboard_matrix_read.rowid - //SEG606 [268] call keyboard_matrix_read + //SEG565 [250] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG607 [269] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + //SEG566 [251] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 lda keyboard_matrix_read.return sta keyboard_matrix_read.return_2 jmp b25 - //SEG608 keyboard_event_scan::@25 + //SEG567 keyboard_event_scan::@25 b25: - //SEG609 [270] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 + //SEG568 [252] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 lda keyboard_matrix_read.return_2 sta row_scan - //SEG610 [271] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG569 [253] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda row_scan ldy row cmp keyboard_scan_values,y bne b4_from_b25 jmp b13 - //SEG611 keyboard_event_scan::@13 + //SEG570 keyboard_event_scan::@13 b13: - //SEG612 [272] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 + //SEG571 [254] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG613 [273] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] + //SEG572 [255] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] b3_from_b13: b3_from_b19: - //SEG614 [273] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG615 [273] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy + //SEG573 [255] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG574 [255] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy jmp b3 - //SEG616 keyboard_event_scan::@3 + //SEG575 keyboard_event_scan::@3 b3: - //SEG617 [274] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG576 [256] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG618 [275] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG577 [257] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1_from_b3 - //SEG619 [276] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG578 [258] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] b20_from_b3: jmp b20 - //SEG620 keyboard_event_scan::@20 + //SEG579 keyboard_event_scan::@20 b20: - //SEG621 [277] call keyboard_event_pressed - //SEG622 [254] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG580 [259] call keyboard_event_pressed + //SEG581 [236] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG623 [254] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG582 [236] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG624 [278] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG583 [260] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return jmp b26 - //SEG625 keyboard_event_scan::@26 + //SEG584 keyboard_event_scan::@26 b26: - //SEG626 [279] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 + //SEG585 [261] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_event_pressed.return sta _14 - //SEG627 [280] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuz1_eq_0_then_la1 + //SEG586 [262] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuz1_eq_0_then_la1 lda _14 cmp #0 beq b9_from_b26 - //SEG628 [281] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG587 [263] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] b21_from_b26: jmp b21 - //SEG629 keyboard_event_scan::@21 + //SEG588 keyboard_event_scan::@21 b21: - //SEG630 [282] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG589 [264] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] b9_from_b21: b9_from_b26: jmp b9 - //SEG631 keyboard_event_scan::@9 + //SEG590 keyboard_event_scan::@9 b9: - //SEG632 [283] call keyboard_event_pressed - //SEG633 [254] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG591 [265] call keyboard_event_pressed + //SEG592 [236] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG634 [254] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG593 [236] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG635 [284] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG594 [266] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_1 jmp b27 - //SEG636 keyboard_event_scan::@27 + //SEG595 keyboard_event_scan::@27 b27: - //SEG637 [285] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 + //SEG596 [267] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_1 sta _18 - //SEG638 [286] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuz1_eq_0_then_la1 + //SEG597 [268] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuz1_eq_0_then_la1 lda _18 cmp #0 beq b10_from_b27 - //SEG639 [287] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] + //SEG598 [269] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] b22_from_b27: jmp b22 - //SEG640 keyboard_event_scan::@22 + //SEG599 keyboard_event_scan::@22 b22: - //SEG641 [288] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] + //SEG600 [270] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] b10_from_b22: b10_from_b27: jmp b10 - //SEG642 keyboard_event_scan::@10 + //SEG601 keyboard_event_scan::@10 b10: - //SEG643 [289] call keyboard_event_pressed - //SEG644 [254] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG602 [271] call keyboard_event_pressed + //SEG603 [236] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG645 [254] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG604 [236] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG646 [290] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG605 [272] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_2 jmp b28 - //SEG647 keyboard_event_scan::@28 + //SEG606 keyboard_event_scan::@28 b28: - //SEG648 [291] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 + //SEG607 [273] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_2 sta _22 - //SEG649 [292] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuz1_eq_0_then_la1 + //SEG608 [274] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuz1_eq_0_then_la1 lda _22 cmp #0 beq b11_from_b28 - //SEG650 [293] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] + //SEG609 [275] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] b23_from_b28: jmp b23 - //SEG651 keyboard_event_scan::@23 + //SEG610 keyboard_event_scan::@23 b23: - //SEG652 [294] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] + //SEG611 [276] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] b11_from_b23: b11_from_b28: jmp b11 - //SEG653 keyboard_event_scan::@11 + //SEG612 keyboard_event_scan::@11 b11: - //SEG654 [295] call keyboard_event_pressed - //SEG655 [254] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG613 [277] call keyboard_event_pressed + //SEG614 [236] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG656 [254] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG615 [236] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG657 [296] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG616 [278] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_10 jmp b29 - //SEG658 keyboard_event_scan::@29 + //SEG617 keyboard_event_scan::@29 b29: - //SEG659 [297] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 + //SEG618 [279] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_10 sta _26 - //SEG660 [298] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuz1_eq_0_then_la1 + //SEG619 [280] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuz1_eq_0_then_la1 lda _26 cmp #0 beq breturn - //SEG661 [299] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] + //SEG620 [281] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] b24_from_b29: jmp b24 - //SEG662 keyboard_event_scan::@24 + //SEG621 keyboard_event_scan::@24 b24: jmp breturn - //SEG663 keyboard_event_scan::@return + //SEG622 keyboard_event_scan::@return breturn: - //SEG664 [300] return + //SEG623 [282] return rts - //SEG665 [301] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG624 [283] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG666 [301] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG667 [301] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy - //SEG668 [301] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuz1=vbuc1 + //SEG625 [283] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG626 [283] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG627 [283] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuz1=vbuc1 lda #0 sta col jmp b4 - //SEG669 [301] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG628 [283] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG670 [301] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG671 [301] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy - //SEG672 [301] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy + //SEG629 [283] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG630 [283] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG631 [283] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy jmp b4 - //SEG673 keyboard_event_scan::@4 + //SEG632 keyboard_event_scan::@4 b4: - //SEG674 [302] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuz1=vbuz2_bxor_pbuc1_derefidx_vbuz3 + //SEG633 [284] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuz1=vbuz2_bxor_pbuc1_derefidx_vbuz3 lda row_scan ldy row eor keyboard_scan_values,y sta _3 - //SEG675 [303] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG634 [285] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda _3 ldy col and keyboard_matrix_col_bitmask,y sta _4 - //SEG676 [304] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuz1_eq_0_then_la1 + //SEG635 [286] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuz1_eq_0_then_la1 lda _4 cmp #0 beq b5_from_b4 jmp b15 - //SEG677 keyboard_event_scan::@15 + //SEG636 keyboard_event_scan::@15 b15: - //SEG678 [305] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG637 [287] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5_from_b15 jmp b16 - //SEG679 keyboard_event_scan::@16 + //SEG638 keyboard_event_scan::@16 b16: - //SEG680 [306] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG639 [288] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda row_scan ldy col and keyboard_matrix_col_bitmask,y sta event_type - //SEG681 [307] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuz1_eq_0_then_la1 + //SEG640 [289] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuz1_eq_0_then_la1 lda event_type cmp #0 beq b7 jmp b17 - //SEG682 keyboard_event_scan::@17 + //SEG641 keyboard_event_scan::@17 b17: - //SEG683 [308] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG642 [290] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG684 [309] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG643 [291] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG685 [310] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] + //SEG644 [292] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] b5_from_b15: b5_from_b17: b5_from_b4: b5_from_b7: - //SEG686 [310] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG645 [292] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy jmp b5 - //SEG687 keyboard_event_scan::@5 + //SEG646 keyboard_event_scan::@5 b5: - //SEG688 [311] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG647 [293] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG689 [312] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 + //SEG648 [294] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG690 [313] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG649 [295] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuz1_neq_vbuc1_then_la1 lda col cmp #8 bne b4_from_b5 jmp b19 - //SEG691 keyboard_event_scan::@19 + //SEG650 keyboard_event_scan::@19 b19: - //SEG692 [314] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG651 [296] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3_from_b19 - //SEG693 keyboard_event_scan::@7 + //SEG652 keyboard_event_scan::@7 b7: - //SEG694 [315] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz2_bor_vbuc1 + //SEG653 [297] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz2_bor_vbuc1 lda #$40 ora keycode sta _11 - //SEG695 [316] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG654 [298] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuz2 lda _11 ldy keyboard_events_size sta keyboard_events,y - //SEG696 [317] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG655 [299] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG697 keyboard_matrix_read +//SEG656 keyboard_matrix_read keyboard_matrix_read: { - .label return = $8f - .label rowid = $80 - .label return_2 = $81 - //SEG698 [318] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + .label return = $88 + .label rowid = $79 + .label return_2 = $7a + //SEG657 [300] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy rowid lda keyboard_matrix_row_bitmask,y sta CIA1_PORT_A - //SEG699 [319] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 + //SEG658 [301] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff sta return jmp breturn - //SEG700 keyboard_matrix_read::@return + //SEG659 keyboard_matrix_read::@return breturn: - //SEG701 [320] return + //SEG660 [302] return rts } -//SEG702 tables_init +//SEG661 tables_init tables_init: { - .label _1 = $90 - .label pli = $40 - .label idx = $42 - .label j = $3f - //SEG703 [322] phi from tables_init to tables_init::@1 [phi:tables_init->tables_init::@1] + .label _1 = $89 + .label pli = $3c + .label idx = $3e + .label j = $3b + //SEG662 [304] phi from tables_init to tables_init::@1 [phi:tables_init->tables_init::@1] b1_from_tables_init: - //SEG704 [322] 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 + //SEG663 [304] 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 lda #0 sta idx - //SEG705 [322] 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 + //SEG664 [304] 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 lda #playfield sta pli+1 - //SEG706 [322] 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 + //SEG665 [304] 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 lda #0 sta j jmp b1 - //SEG707 [322] phi from tables_init::@1 to tables_init::@1 [phi:tables_init::@1->tables_init::@1] + //SEG666 [304] phi from tables_init::@1 to tables_init::@1 [phi:tables_init::@1->tables_init::@1] b1_from_b1: - //SEG708 [322] phi (byte) tables_init::idx#2 = (byte) tables_init::idx#1 [phi:tables_init::@1->tables_init::@1#0] -- register_copy - //SEG709 [322] phi (byte*) tables_init::pli#2 = (byte*) tables_init::pli#1 [phi:tables_init::@1->tables_init::@1#1] -- register_copy - //SEG710 [322] phi (byte) tables_init::j#2 = (byte) tables_init::j#1 [phi:tables_init::@1->tables_init::@1#2] -- register_copy + //SEG667 [304] phi (byte) tables_init::idx#2 = (byte) tables_init::idx#1 [phi:tables_init::@1->tables_init::@1#0] -- register_copy + //SEG668 [304] phi (byte*) tables_init::pli#2 = (byte*) tables_init::pli#1 [phi:tables_init::@1->tables_init::@1#1] -- register_copy + //SEG669 [304] phi (byte) tables_init::j#2 = (byte) tables_init::j#1 [phi:tables_init::@1->tables_init::@1#2] -- register_copy jmp b1 - //SEG711 tables_init::@1 + //SEG670 tables_init::@1 b1: - //SEG712 [323] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG671 [305] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda j asl sta _1 - //SEG713 [324] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG672 [306] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _1 lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG714 [325] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG673 [307] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda idx ldy j sta playfield_lines_idx,y - //SEG715 [326] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG674 [308] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -8568,96 +8265,96 @@ tables_init: { bcc !+ inc pli+1 !: - //SEG716 [327] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG675 [309] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG717 [328] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 -- vbuz1=_inc_vbuz1 + //SEG676 [310] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG718 [329] 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 + //SEG677 [311] 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 lda j cmp #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp b2 - //SEG719 tables_init::@2 + //SEG678 tables_init::@2 b2: - //SEG720 [330] *((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 + //SEG679 [312] *((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 - //SEG721 tables_init::@return + //SEG680 tables_init::@return breturn: - //SEG722 [331] return + //SEG681 [313] return rts } -//SEG723 render_init +//SEG682 render_init render_init: { - .label _5 = $91 - .label _10 = $92 - .label li = $44 - .label i = $43 - .label c = $49 - .label line = $46 - .label l = $48 - //SEG724 [333] call fill - //SEG725 [352] phi from render_init to fill [phi:render_init->fill] + .label _5 = $8a + .label _10 = $8b + .label li = $40 + .label i = $3f + .label c = $45 + .label line = $42 + .label l = $44 + //SEG683 [315] call fill + //SEG684 [334] phi from render_init to fill [phi:render_init->fill] fill_from_render_init: - //SEG726 [352] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:render_init->fill#0] -- vbuz1=vbuc1 + //SEG685 [334] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:render_init->fill#0] -- vbuz1=vbuc1 lda #$a0 sta fill.val - //SEG727 [352] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:render_init->fill#1] -- pbuz1=pbuc1 + //SEG686 [334] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:render_init->fill#1] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG728 [334] phi from render_init to render_init::@7 [phi:render_init->render_init::@7] + //SEG687 [316] phi from render_init to render_init::@7 [phi:render_init->render_init::@7] b7_from_render_init: jmp b7 - //SEG729 render_init::@7 + //SEG688 render_init::@7 b7: - //SEG730 [335] call fill - //SEG731 [352] phi from render_init::@7 to fill [phi:render_init::@7->fill] + //SEG689 [317] call fill + //SEG690 [334] phi from render_init::@7 to fill [phi:render_init::@7->fill] fill_from_b7: - //SEG732 [352] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:render_init::@7->fill#0] -- vbuz1=vbuc1 + //SEG691 [334] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:render_init::@7->fill#0] -- vbuz1=vbuc1 lda #BLACK sta fill.val - //SEG733 [352] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:render_init::@7->fill#1] -- pbuz1=pbuc1 + //SEG692 [334] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:render_init::@7->fill#1] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG734 [336] phi from render_init::@7 to render_init::@1 [phi:render_init::@7->render_init::@1] + //SEG693 [318] phi from render_init::@7 to render_init::@1 [phi:render_init::@7->render_init::@1] b1_from_b7: - //SEG735 [336] phi (byte*) render_init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:render_init::@7->render_init::@1#0] -- pbuz1=pbuc1 + //SEG694 [318] phi (byte*) render_init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:render_init::@7->render_init::@1#0] -- pbuz1=pbuc1 lda #COLS+$28+$f sta li+1 - //SEG736 [336] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@7->render_init::@1#1] -- vbuz1=vbuc1 + //SEG695 [318] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@7->render_init::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG737 [336] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG696 [318] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] b1_from_b1: - //SEG738 [336] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG739 [336] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG697 [318] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG698 [318] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy jmp b1 - //SEG740 render_init::@1 + //SEG699 render_init::@1 b1: - //SEG741 [337] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG700 [319] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _5 - //SEG742 [338] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG701 [320] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _5 lda li sta screen_lines,y lda li+1 sta screen_lines+1,y - //SEG743 [339] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG702 [321] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li clc adc #$28 @@ -8665,43 +8362,43 @@ render_init: { bcc !+ inc li+1 !: - //SEG744 [340] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuz1=_inc_vbuz1 + //SEG703 [322] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG745 [341] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG704 [323] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #PLAYFIELD_LINES+2+1 bne b1_from_b1 - //SEG746 [342] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] + //SEG705 [324] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] b2_from_b1: - //SEG747 [342] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 + //SEG706 [324] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG748 [342] phi (byte*) render_init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:render_init::@1->render_init::@2#1] -- pbuz1=pbuc1 + //SEG707 [324] phi (byte*) render_init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:render_init::@1->render_init::@2#1] -- pbuz1=pbuc1 lda #COLS+$e sta line+1 jmp b2 - //SEG749 [342] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] + //SEG708 [324] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] b2_from_b5: - //SEG750 [342] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy - //SEG751 [342] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy + //SEG709 [324] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy + //SEG710 [324] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy jmp b2 - //SEG752 render_init::@2 + //SEG711 render_init::@2 b2: - //SEG753 [343] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] + //SEG712 [325] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] b3_from_b2: - //SEG754 [343] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuz1=vbuc1 + //SEG713 [325] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuz1=vbuc1 lda #0 sta c jmp b3 - //SEG755 [343] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] + //SEG714 [325] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] b3_from_b3: - //SEG756 [343] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy + //SEG715 [325] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy jmp b3 - //SEG757 render_init::@3 + //SEG716 render_init::@3 b3: - //SEG758 [344] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuz3 + //SEG717 [326] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuz3 lda c clc adc line @@ -8709,20 +8406,20 @@ render_init: { lda #0 adc line+1 sta _10+1 - //SEG759 [345] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG718 [327] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (_10),y - //SEG760 [346] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuz1=_inc_vbuz1 + //SEG719 [328] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG761 [347] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG720 [329] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #PLAYFIELD_COLS+1+1 bne b3_from_b3 jmp b5 - //SEG762 render_init::@5 + //SEG721 render_init::@5 b5: - //SEG763 [348] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG722 [330] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -8730,24 +8427,24 @@ render_init: { bcc !+ inc line+1 !: - //SEG764 [349] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 + //SEG723 [331] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG765 [350] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG724 [332] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES+1+1 bne b2_from_b5 jmp breturn - //SEG766 render_init::@return + //SEG725 render_init::@return breturn: - //SEG767 [351] return + //SEG726 [333] return rts } -//SEG768 fill +//SEG727 fill fill: { - .label end = $94 - .label addr = $4b - .label val = $4a - //SEG769 [353] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + .label end = $8d + .label addr = $47 + .label val = $46 + //SEG728 [335] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -8755,23 +8452,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG770 [354] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG729 [336] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG771 [354] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG730 [336] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG772 fill::@1 + //SEG731 fill::@1 b1: - //SEG773 [355] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 + //SEG732 [337] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 lda val ldy #0 sta (addr),y - //SEG774 [356] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG733 [338] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG775 [357] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG734 [339] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 lda addr+1 cmp end+1 bne b1_from_b1 @@ -8779,25 +8476,25 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG776 fill::@return + //SEG735 fill::@return breturn: - //SEG777 [358] return + //SEG736 [340] return rts } -//SEG778 sid_rnd_init +//SEG737 sid_rnd_init sid_rnd_init: { - //SEG779 [359] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + //SEG738 [341] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG780 [360] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG739 [342] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL jmp breturn - //SEG781 sid_rnd_init::@return + //SEG740 sid_rnd_init::@return breturn: - //SEG782 [361] return + //SEG741 [343] return rts } keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f @@ -8826,41 +8523,41 @@ sid_rnd_init: { screen_lines: .fill 2*(PLAYFIELD_LINES+3), 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [14] (byte*~) current_piece_gfx#86 ← (byte*) current_piece_gfx#10 [ current_piece_gfx#86 current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ( main:2 [ current_piece_gfx#86 current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ) always clobbers reg byte a +Statement [14] (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:2 [ 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:113 [ spawn_current::$3 ] -Statement [17] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) [ current_piece_gfx#10 current_piece_color#15 current_piece#70 ] ( main:2 [ current_piece_gfx#10 current_piece_color#15 current_piece#70 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:109 [ spawn_current::$3 ] +Statement [17] (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:2 [ current_piece_gfx#10 current_piece_color#15 current_piece#71 ] ) always clobbers reg byte a Statement [19] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:62 [ 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:58 [ 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 [20] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a Statement [31] (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:2 [ current_piece#13 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_orientation#18 current_piece_gfx#17 current_xpos#19 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:78 [ main::key_event#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:74 [ main::key_event#0 ] Statement [36] (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:2 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#2 current_orientation#18 current_piece_gfx#17 ] ) always clobbers reg byte a Statement [41] (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:2 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#3 ] ) always clobbers reg byte a -Statement [47] (byte*~) current_piece_gfx#87 ← (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#70 current_xpos#95 current_piece_gfx#87 ] ( main:2 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_ypos#70 current_xpos#95 current_piece_gfx#87 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ current_ypos#22 current_ypos#70 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ current_xpos#63 current_xpos#95 ] -Statement [52] (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#63 current_piece_color#66 render_current::ypos2#0 ] ( main:2::render_current:16 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#63 current_piece_gfx#63 current_piece_color#66 render_current::ypos2#0 ] main:2::render_current:49 [ 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#63 current_piece_color#66 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#66 current_piece_color#74 current_piece_color#75 ] -Statement [55] (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#63 current_piece_color#66 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ( main:2::render_current:16 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#63 current_piece_gfx#63 current_piece_color#66 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] main:2::render_current:49 [ 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#63 current_piece_color#66 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ) always clobbers reg byte a +Statement [47] (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:2 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_ypos#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 [52] (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:2::render_current:16 [ 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:2::render_current:49 [ 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 [55] (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:2::render_current:16 [ 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:2::render_current:49 [ 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 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 [58] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#63 + (byte) render_current::i#2) [ current_xpos#63 current_piece_gfx#63 current_piece_color#66 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ( main:2::render_current:16 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#63 current_piece_gfx#63 current_piece_color#66 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] main:2::render_current:49 [ 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#63 current_piece_color#66 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 [58] (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:2::render_current:16 [ 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:2::render_current:49 [ 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 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 [62] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#66 [ current_xpos#63 current_piece_gfx#63 current_piece_color#66 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ( main:2::render_current:16 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#63 current_piece_gfx#63 current_piece_color#66 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] main:2::render_current:49 [ 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#63 current_piece_color#66 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 [62] *((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:2::render_current:16 [ 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:2::render_current:49 [ 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 [73] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ( main:2::render_playfield:13 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] main:2::render_playfield:44 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] Statement [74] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ( main:2::render_playfield:13 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] main:2::render_playfield:44 [ 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 [76] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ( main:2::render_playfield:13 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] main:2::render_playfield:44 [ 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:113 [ spawn_current::$3 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:109 [ 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 ] @@ -8868,12 +8565,12 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:18 [ r 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:62 [ 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:58 [ 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 [88] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::$2 ] ( main:2::play_move_rotate:38 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::$2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:86 [ main::render#2 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:82 [ main::render#2 ] Statement [89] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#2 ] ( main:2::play_move_rotate:38 [ 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 [94] (byte*~) current_piece#74 ← (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#74 ] ( main:2::play_move_rotate:38 [ 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#74 ] ) always clobbers reg byte a +Statement [94] (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:2::play_move_rotate:38 [ 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 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 ] @@ -8882,7 +8579,7 @@ Statement [100] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte Statement [101] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::$4 ] ( main:2::play_move_rotate:38 [ 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 [102] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#1 ] ( main:2::play_move_rotate:38 [ 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 [104] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 [ collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] ( main:2::play_move_rotate:38::collision:95 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_leftright:33::collision:133 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_leftright:33::collision:144 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_down:28::collision:168 [ 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:82 [ main::render#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:78 [ main::render#1 ] Statement [105] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] ( main:2::play_move_rotate:38::collision:95 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_leftright:33::collision:133 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_leftright:33::collision:144 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_down:28::collision:168 [ 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 [107] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] ( main:2::play_move_rotate:38::collision:95 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_leftright:33::collision:133 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_leftright:33::collision:144 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_down:28::collision:168 [ 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 ] @@ -8891,104 +8588,96 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ c Statement [111] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:2::play_move_rotate:38::collision:95 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:33::collision:133 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:33::collision:144 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_down:28::collision:168 [ 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:103 [ collision::i#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:99 [ collision::i#1 ] Statement [115] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] ( main:2::play_move_rotate:38::collision:95 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_leftright:33::collision:133 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_leftright:33::collision:144 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_down:28::collision:168 [ 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 [118] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:2::play_move_rotate:38::collision:95 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:33::collision:133 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:33::collision:144 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_down:28::collision:168 [ 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 [132] (byte*~) current_piece#73 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_orientation#18 current_piece#73 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ( main:2::play_move_leftright:33 [ 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#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ) always clobbers reg byte a -Statement [143] (byte*~) current_piece#72 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_orientation#18 current_piece#72 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ( main:2::play_move_leftright:33 [ 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#72 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ) always clobbers reg byte a -Statement [167] (byte*~) current_piece#71 ← (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#71 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ( main:2::play_move_down:28 [ 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#71 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ) always clobbers reg byte a -Statement [178] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) [ current_piece_gfx#10 current_piece_color#15 current_piece#75 ] ( main:2::play_move_down:28 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_piece_color#15 current_piece#75 ] ) always clobbers reg byte a +Statement [132] (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:2::play_move_leftright:33 [ 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 [143] (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:2::play_move_leftright:33 [ 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 [167] (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:2::play_move_down:28 [ 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 [178] (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:2::play_move_down:28 [ 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 [186] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ spawn_current::$3 spawn_current::piece_idx#2 ] ( main:2::spawn_current:11 [ spawn_current::$3 spawn_current::piece_idx#2 ] main:2::play_move_down:28::spawn_current:177 [ 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 [187] (byte*) current_piece_gfx#10 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#10 spawn_current::$3 spawn_current::piece_idx#2 ] ( main:2::spawn_current:11 [ current_piece_gfx#10 spawn_current::$3 spawn_current::piece_idx#2 ] main:2::play_move_down:28::spawn_current:177 [ 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 [188] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ( main:2::spawn_current:11 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] main:2::play_move_down:28::spawn_current:177 [ 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 [194] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ spawn_current::piece_idx#1 ] ( main:2::spawn_current:11 [ spawn_current::piece_idx#1 ] main:2::play_move_down:28::spawn_current:177 [ keyboard_events_size#16 main::key_event#0 spawn_current::piece_idx#1 ] ) always clobbers reg byte a -Statement [209] (byte) remove_line::i2#0 ← *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte~) remove_line::$0) - (byte/signed byte/word/signed word/dword/signed dword) 1 [ remove_line::ypos#0 remove_line::i2#0 ] ( main:2::play_move_down:28::remove_lines:175::remove_line:207 [ keyboard_events_size#16 main::key_event#0 remove_lines::done#3 remove_line::ypos#0 remove_line::i2#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:43 [ remove_lines::done#3 remove_lines::done#2 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ remove_line::y#4 remove_line::ypos#0 remove_line::y#1 ] -Statement [210] (byte) remove_line::i1#0 ← *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) remove_line::ypos#0) - (byte/signed byte/word/signed word/dword/signed dword) 1 [ remove_line::ypos#0 remove_line::i2#0 remove_line::i1#0 ] ( main:2::play_move_down:28::remove_lines:175::remove_line:207 [ keyboard_events_size#16 main::key_event#0 remove_lines::done#3 remove_line::ypos#0 remove_line::i2#0 remove_line::i1#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ remove_line::i2#2 remove_line::i2#3 remove_line::i2#0 remove_line::i2#1 ] -Statement [213] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_line::i2#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_line::i1#2) [ remove_line::y#4 remove_line::i1#2 remove_line::i2#2 remove_line::x#2 ] ( main:2::play_move_down:28::remove_lines:175::remove_line:207 [ keyboard_events_size#16 main::key_event#0 remove_lines::done#3 remove_line::y#4 remove_line::i1#2 remove_line::i2#2 remove_line::x#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ remove_line::i1#2 remove_line::i1#3 remove_line::i1#0 remove_line::i1#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ remove_line::x#2 remove_line::x#1 ] -Statement [225] if(*((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) find_line::i#2)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto find_line::@13 [ find_line::y#8 find_line::x#2 find_line::filled#4 find_line::i#1 ] ( main:2::play_move_down:28::remove_lines:175::find_line:199 [ keyboard_events_size#16 main::key_event#0 remove_lines::done#3 find_line::y#8 find_line::x#2 find_line::filled#4 find_line::i#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ find_line::return#2 find_line::y#8 find_line::y#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ find_line::x#2 find_line::x#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ find_line::filled#4 find_line::filled#2 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:120 [ find_line::i#1 ] -Statement [237] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#0 ] ( main:2::play_move_down:28::lock_current:173 [ 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 [239] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::i#3 lock_current::l#6 lock_current::playfield_line#0 ] ( main:2::play_move_down:28::lock_current:173 [ 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:52 [ 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:54 [ 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:53 [ lock_current::l#6 lock_current::l#1 ] -Statement [243] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ( main:2::play_move_down:28::lock_current:173 [ 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:55 [ 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:56 [ lock_current::c#2 lock_current::c#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:123 [ lock_current::i#1 ] -Statement [244] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ( main:2::play_move_down:28::lock_current:173 [ 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 [255] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:2::play_move_down:28::keyboard_event_pressed:153 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:277 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:283 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:289 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:295 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Statement [209] (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:2::play_move_down:28::remove_lines:175 [ 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 [216] *((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:2::play_move_down:28::remove_lines:175 [ 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 [219] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#0 ] ( main:2::play_move_down:28::lock_current:173 [ 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 [221] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::i#3 lock_current::l#6 lock_current::playfield_line#0 ] ( main:2::play_move_down:28::lock_current:173 [ 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 [225] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ( main:2::play_move_down:28::lock_current:173 [ 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:116 [ lock_current::i#1 ] +Statement [226] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ( main:2::play_move_down:28::lock_current:173 [ 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 [237] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:2::play_move_down:28::keyboard_event_pressed:153 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:259 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:265 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:271 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:277 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:57 [ keyboard_event_pressed::keycode#5 ] -Statement [257] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::play_move_down:28::keyboard_event_pressed:153 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:277 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:283 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:289 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:295 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:125 [ keyboard_event_pressed::row_bits#0 ] -Statement [258] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:2::play_move_down:28::keyboard_event_pressed:153 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:277 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:283 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:289 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:295 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [272] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:2::keyboard_event_scan:22 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Statement [302] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:2::keyboard_event_scan:22 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:130 [ keyboard_event_scan::row_scan#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:61 [ 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 [303] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:2::keyboard_event_scan:22 [ 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 [306] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:2::keyboard_event_scan:22 [ 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 [308] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:2::keyboard_event_scan:22 [ 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 [314] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:2::keyboard_event_scan:22 [ 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 [315] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:2::keyboard_event_scan:22 [ 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 [318] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_event_scan:22::keyboard_matrix_read:268 [ 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 [319] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_event_scan:22::keyboard_matrix_read:268 [ 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 [323] (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:2::tables_init:9 [ 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:63 [ tables_init::j#2 tables_init::j#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:66 [ tables_init::idx#2 tables_init::idx#1 ] -Statement [324] *((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:2::tables_init:9 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ) always clobbers reg byte a -Statement [325] *((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:2::tables_init:9 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ) always clobbers reg byte a -Statement [326] (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:2::tables_init:9 [ tables_init::j#2 tables_init::idx#2 tables_init::pli#1 ] ) always clobbers reg byte a -Statement [327] (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:2::tables_init:9 [ tables_init::j#2 tables_init::pli#1 tables_init::idx#1 ] ) always clobbers reg byte a -Statement [330] *((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:2::tables_init:9 [ ] ) always clobbers reg byte a -Statement [337] (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:2::render_init:7 [ 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:67 [ render_init::i#2 render_init::i#1 ] -Statement [338] *((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:2::render_init:7 [ render_init::i#2 render_init::li#2 ] ) always clobbers reg byte a -Statement [339] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li#1 ] ( main:2::render_init:7 [ render_init::i#2 render_init::li#1 ] ) always clobbers reg byte a -Statement [344] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$10 ] ( main:2::render_init:7 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$10 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:72 [ render_init::l#4 render_init::l#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:73 [ render_init::c#2 render_init::c#1 ] -Statement [345] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ( main:2::render_init:7 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:72 [ render_init::l#4 render_init::l#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:73 [ render_init::c#2 render_init::c#1 ] -Statement [348] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::l#4 render_init::line#1 ] ( main:2::render_init:7 [ render_init::l#4 render_init::line#1 ] ) always clobbers reg byte a -Statement [353] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:2::render_init:7::fill:333 [ fill::addr#0 fill::val#3 fill::end#0 ] main:2::render_init:7::fill:335 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:74 [ fill::val#3 ] -Statement [355] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:2::render_init:7::fill:333 [ fill::val#3 fill::end#0 fill::addr#2 ] main:2::render_init:7::fill:335 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:74 [ fill::val#3 ] -Statement [357] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:2::render_init:7::fill:333 [ fill::val#3 fill::end#0 fill::addr#1 ] main:2::render_init:7::fill:335 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a -Statement [359] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:2::sid_rnd_init:5 [ ] ) always clobbers reg byte a -Statement [360] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:2::sid_rnd_init:5 [ ] ) always clobbers reg byte a -Statement [14] (byte*~) current_piece_gfx#86 ← (byte*) current_piece_gfx#10 [ current_piece_gfx#86 current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ( main:2 [ current_piece_gfx#86 current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ) always clobbers reg byte a -Statement [17] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) [ current_piece_gfx#10 current_piece_color#15 current_piece#70 ] ( main:2 [ current_piece_gfx#10 current_piece_color#15 current_piece#70 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] +Statement [239] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::play_move_down:28::keyboard_event_pressed:153 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:259 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:265 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:271 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:277 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:118 [ keyboard_event_pressed::row_bits#0 ] +Statement [240] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:2::play_move_down:28::keyboard_event_pressed:153 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:259 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:265 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:271 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:277 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [254] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:2::keyboard_event_scan:22 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Statement [284] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:2::keyboard_event_scan:22 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:123 [ keyboard_event_scan::row_scan#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:57 [ 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 [285] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:2::keyboard_event_scan:22 [ 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 [288] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:2::keyboard_event_scan:22 [ 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 [290] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:2::keyboard_event_scan:22 [ 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 [296] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:2::keyboard_event_scan:22 [ 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 [297] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:2::keyboard_event_scan:22 [ 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 [300] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_event_scan:22::keyboard_matrix_read:250 [ 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 [301] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_event_scan:22::keyboard_matrix_read:250 [ 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 [305] (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:2::tables_init:9 [ 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:59 [ tables_init::j#2 tables_init::j#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:62 [ tables_init::idx#2 tables_init::idx#1 ] +Statement [306] *((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:2::tables_init:9 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ) always clobbers reg byte a +Statement [307] *((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:2::tables_init:9 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ) always clobbers reg byte a +Statement [308] (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:2::tables_init:9 [ tables_init::j#2 tables_init::idx#2 tables_init::pli#1 ] ) always clobbers reg byte a +Statement [309] (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:2::tables_init:9 [ tables_init::j#2 tables_init::pli#1 tables_init::idx#1 ] ) always clobbers reg byte a +Statement [312] *((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:2::tables_init:9 [ ] ) always clobbers reg byte a +Statement [319] (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:2::render_init:7 [ 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:63 [ render_init::i#2 render_init::i#1 ] +Statement [320] *((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:2::render_init:7 [ render_init::i#2 render_init::li#2 ] ) always clobbers reg byte a +Statement [321] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li#1 ] ( main:2::render_init:7 [ render_init::i#2 render_init::li#1 ] ) always clobbers reg byte a +Statement [326] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$10 ] ( main:2::render_init:7 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$10 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:68 [ render_init::l#4 render_init::l#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:69 [ render_init::c#2 render_init::c#1 ] +Statement [327] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ( main:2::render_init:7 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:68 [ render_init::l#4 render_init::l#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:69 [ render_init::c#2 render_init::c#1 ] +Statement [330] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::l#4 render_init::line#1 ] ( main:2::render_init:7 [ render_init::l#4 render_init::line#1 ] ) always clobbers reg byte a +Statement [335] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:2::render_init:7::fill:315 [ fill::addr#0 fill::val#3 fill::end#0 ] main:2::render_init:7::fill:317 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:70 [ fill::val#3 ] +Statement [337] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:2::render_init:7::fill:315 [ fill::val#3 fill::end#0 fill::addr#2 ] main:2::render_init:7::fill:317 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:70 [ fill::val#3 ] +Statement [339] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:2::render_init:7::fill:315 [ fill::val#3 fill::end#0 fill::addr#1 ] main:2::render_init:7::fill:317 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a +Statement [341] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:2::sid_rnd_init:5 [ ] ) always clobbers reg byte a +Statement [342] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:2::sid_rnd_init:5 [ ] ) always clobbers reg byte a +Statement [14] (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:2 [ current_piece_gfx#87 current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ) always clobbers reg byte a +Statement [17] (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:2 [ current_piece_gfx#10 current_piece_color#15 current_piece#71 ] ) always clobbers reg byte a Statement [19] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a Statement [20] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a Statement [31] (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:2 [ current_piece#13 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_orientation#18 current_piece_gfx#17 current_xpos#19 ] ) always clobbers reg byte a Statement [36] (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:2 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#2 current_orientation#18 current_piece_gfx#17 ] ) always clobbers reg byte a Statement [41] (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:2 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#3 ] ) always clobbers reg byte a -Statement [47] (byte*~) current_piece_gfx#87 ← (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#70 current_xpos#95 current_piece_gfx#87 ] ( main:2 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_ypos#70 current_xpos#95 current_piece_gfx#87 ] ) always clobbers reg byte a -Statement [52] (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#63 current_piece_color#66 render_current::ypos2#0 ] ( main:2::render_current:16 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#63 current_piece_gfx#63 current_piece_color#66 render_current::ypos2#0 ] main:2::render_current:49 [ 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#63 current_piece_color#66 render_current::ypos2#0 ] ) always clobbers reg byte a -Statement [55] (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#63 current_piece_color#66 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ( main:2::render_current:16 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#63 current_piece_gfx#63 current_piece_color#66 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] main:2::render_current:49 [ 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#63 current_piece_color#66 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ) always clobbers reg byte a -Statement [58] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#63 + (byte) render_current::i#2) [ current_xpos#63 current_piece_gfx#63 current_piece_color#66 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ( main:2::render_current:16 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#63 current_piece_gfx#63 current_piece_color#66 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] main:2::render_current:49 [ 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#63 current_piece_color#66 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 [62] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#66 [ current_xpos#63 current_piece_gfx#63 current_piece_color#66 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ( main:2::render_current:16 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 current_xpos#63 current_piece_gfx#63 current_piece_color#66 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] main:2::render_current:49 [ 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#63 current_piece_color#66 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 [47] (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:2 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_ypos#71 current_xpos#96 current_piece_gfx#88 ] ) always clobbers reg byte a +Statement [52] (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:2::render_current:16 [ 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:2::render_current:49 [ 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 [55] (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:2::render_current:16 [ 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:2::render_current:49 [ 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 [58] (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:2::render_current:16 [ 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:2::render_current:49 [ 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 [62] *((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:2::render_current:16 [ 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:2::render_current:49 [ 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 [73] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ( main:2::render_playfield:13 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] main:2::render_playfield:44 [ 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 [74] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ( main:2::render_playfield:13 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] main:2::render_playfield:44 [ 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 [76] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ( main:2::render_playfield:13 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] main:2::render_playfield:44 [ 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 [88] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::$2 ] ( main:2::play_move_rotate:38 [ 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 [89] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#2 ] ( main:2::play_move_rotate:38 [ 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 [94] (byte*~) current_piece#74 ← (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#74 ] ( main:2::play_move_rotate:38 [ 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#74 ] ) always clobbers reg byte a +Statement [94] (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:2::play_move_rotate:38 [ 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 [100] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#8 current_piece_gfx#8 ] ( main:2::play_move_rotate:38 [ 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 [101] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::$4 ] ( main:2::play_move_rotate:38 [ 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 [102] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#1 ] ( main:2::play_move_rotate:38 [ 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 @@ -8998,58 +8687,56 @@ Statement [107] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD Statement [111] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:2::play_move_rotate:38::collision:95 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:33::collision:133 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:33::collision:144 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_down:28::collision:168 [ 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 [115] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] ( main:2::play_move_rotate:38::collision:95 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_leftright:33::collision:133 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_leftright:33::collision:144 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_down:28::collision:168 [ 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 [118] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:2::play_move_rotate:38::collision:95 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:33::collision:133 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:33::collision:144 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_down:28::collision:168 [ 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 [132] (byte*~) current_piece#73 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_orientation#18 current_piece#73 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ( main:2::play_move_leftright:33 [ 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#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ) always clobbers reg byte a -Statement [143] (byte*~) current_piece#72 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_orientation#18 current_piece#72 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ( main:2::play_move_leftright:33 [ 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#72 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ) always clobbers reg byte a -Statement [167] (byte*~) current_piece#71 ← (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#71 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ( main:2::play_move_down:28 [ 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#71 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ) always clobbers reg byte a -Statement [178] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) [ current_piece_gfx#10 current_piece_color#15 current_piece#75 ] ( main:2::play_move_down:28 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#10 current_piece_color#15 current_piece#75 ] ) always clobbers reg byte a +Statement [132] (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:2::play_move_leftright:33 [ 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 [143] (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:2::play_move_leftright:33 [ 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 [167] (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:2::play_move_down:28 [ 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 [178] (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:2::play_move_down:28 [ 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 [186] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ spawn_current::$3 spawn_current::piece_idx#2 ] ( main:2::spawn_current:11 [ spawn_current::$3 spawn_current::piece_idx#2 ] main:2::play_move_down:28::spawn_current:177 [ keyboard_events_size#16 main::key_event#0 spawn_current::$3 spawn_current::piece_idx#2 ] ) always clobbers reg byte a Statement [187] (byte*) current_piece_gfx#10 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 [ current_piece_gfx#10 spawn_current::$3 spawn_current::piece_idx#2 ] ( main:2::spawn_current:11 [ current_piece_gfx#10 spawn_current::$3 spawn_current::piece_idx#2 ] main:2::play_move_down:28::spawn_current:177 [ 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 [188] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ( main:2::spawn_current:11 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] main:2::play_move_down:28::spawn_current:177 [ 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 [194] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ spawn_current::piece_idx#1 ] ( main:2::spawn_current:11 [ spawn_current::piece_idx#1 ] main:2::play_move_down:28::spawn_current:177 [ keyboard_events_size#16 main::key_event#0 spawn_current::piece_idx#1 ] ) always clobbers reg byte a -Statement [209] (byte) remove_line::i2#0 ← *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte~) remove_line::$0) - (byte/signed byte/word/signed word/dword/signed dword) 1 [ remove_line::ypos#0 remove_line::i2#0 ] ( main:2::play_move_down:28::remove_lines:175::remove_line:207 [ keyboard_events_size#16 main::key_event#0 remove_lines::done#3 remove_line::ypos#0 remove_line::i2#0 ] ) always clobbers reg byte a -Statement [210] (byte) remove_line::i1#0 ← *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) remove_line::ypos#0) - (byte/signed byte/word/signed word/dword/signed dword) 1 [ remove_line::ypos#0 remove_line::i2#0 remove_line::i1#0 ] ( main:2::play_move_down:28::remove_lines:175::remove_line:207 [ keyboard_events_size#16 main::key_event#0 remove_lines::done#3 remove_line::ypos#0 remove_line::i2#0 remove_line::i1#0 ] ) always clobbers reg byte a -Statement [213] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_line::i2#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_line::i1#2) [ remove_line::y#4 remove_line::i1#2 remove_line::i2#2 remove_line::x#2 ] ( main:2::play_move_down:28::remove_lines:175::remove_line:207 [ keyboard_events_size#16 main::key_event#0 remove_lines::done#3 remove_line::y#4 remove_line::i1#2 remove_line::i2#2 remove_line::x#2 ] ) always clobbers reg byte a -Statement [225] if(*((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) find_line::i#2)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto find_line::@13 [ find_line::y#8 find_line::x#2 find_line::filled#4 find_line::i#1 ] ( main:2::play_move_down:28::remove_lines:175::find_line:199 [ keyboard_events_size#16 main::key_event#0 remove_lines::done#3 find_line::y#8 find_line::x#2 find_line::filled#4 find_line::i#1 ] ) always clobbers reg byte a -Statement [237] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#0 ] ( main:2::play_move_down:28::lock_current:173 [ 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 [239] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::i#3 lock_current::l#6 lock_current::playfield_line#0 ] ( main:2::play_move_down:28::lock_current:173 [ 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 [243] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ( main:2::play_move_down:28::lock_current:173 [ 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 [244] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ( main:2::play_move_down:28::lock_current:173 [ 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 [255] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:2::play_move_down:28::keyboard_event_pressed:153 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:277 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:283 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:289 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:295 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a -Statement [257] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::play_move_down:28::keyboard_event_pressed:153 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:277 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:283 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:289 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:295 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Statement [258] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:2::play_move_down:28::keyboard_event_pressed:153 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:277 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:283 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:289 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:295 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [271] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ( main:2::keyboard_event_scan:22 [ 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 [272] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:2::keyboard_event_scan:22 [ 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 [302] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:2::keyboard_event_scan:22 [ 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 [303] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:2::keyboard_event_scan:22 [ 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 [306] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:2::keyboard_event_scan:22 [ 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 [308] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:2::keyboard_event_scan:22 [ 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 [314] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:2::keyboard_event_scan:22 [ 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 [315] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:2::keyboard_event_scan:22 [ 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 [318] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_event_scan:22::keyboard_matrix_read:268 [ 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 [319] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_event_scan:22::keyboard_matrix_read:268 [ 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 [323] (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:2::tables_init:9 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 tables_init::$1 ] ) always clobbers reg byte a -Statement [324] *((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:2::tables_init:9 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ) always clobbers reg byte a -Statement [325] *((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:2::tables_init:9 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ) always clobbers reg byte a -Statement [326] (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:2::tables_init:9 [ tables_init::j#2 tables_init::idx#2 tables_init::pli#1 ] ) always clobbers reg byte a -Statement [327] (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:2::tables_init:9 [ tables_init::j#2 tables_init::pli#1 tables_init::idx#1 ] ) always clobbers reg byte a -Statement [330] *((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:2::tables_init:9 [ ] ) always clobbers reg byte a -Statement [337] (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:2::render_init:7 [ render_init::i#2 render_init::li#2 render_init::$5 ] ) always clobbers reg byte a -Statement [338] *((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:2::render_init:7 [ render_init::i#2 render_init::li#2 ] ) always clobbers reg byte a -Statement [339] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li#1 ] ( main:2::render_init:7 [ render_init::i#2 render_init::li#1 ] ) always clobbers reg byte a -Statement [344] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$10 ] ( main:2::render_init:7 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$10 ] ) always clobbers reg byte a -Statement [345] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ( main:2::render_init:7 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ) always clobbers reg byte a reg byte y -Statement [348] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::l#4 render_init::line#1 ] ( main:2::render_init:7 [ render_init::l#4 render_init::line#1 ] ) always clobbers reg byte a -Statement [353] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:2::render_init:7::fill:333 [ fill::addr#0 fill::val#3 fill::end#0 ] main:2::render_init:7::fill:335 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a -Statement [355] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:2::render_init:7::fill:333 [ fill::val#3 fill::end#0 fill::addr#2 ] main:2::render_init:7::fill:335 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y -Statement [357] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:2::render_init:7::fill:333 [ fill::val#3 fill::end#0 fill::addr#1 ] main:2::render_init:7::fill:335 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a -Statement [359] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:2::sid_rnd_init:5 [ ] ) always clobbers reg byte a -Statement [360] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:2::sid_rnd_init:5 [ ] ) always clobbers reg byte a +Statement [209] (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:2::play_move_down:28::remove_lines:175 [ 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 [216] *((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:2::play_move_down:28::remove_lines:175 [ keyboard_events_size#16 main::key_event#0 remove_lines::w#6 ] ) always clobbers reg byte a +Statement [219] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#0 ] ( main:2::play_move_down:28::lock_current:173 [ 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 [221] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::i#3 lock_current::l#6 lock_current::playfield_line#0 ] ( main:2::play_move_down:28::lock_current:173 [ 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 [225] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ( main:2::play_move_down:28::lock_current:173 [ 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 [226] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ( main:2::play_move_down:28::lock_current:173 [ 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 [237] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:2::play_move_down:28::keyboard_event_pressed:153 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:259 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:265 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:271 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:277 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Statement [239] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::play_move_down:28::keyboard_event_pressed:153 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:259 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:265 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:271 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:277 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Statement [240] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:2::play_move_down:28::keyboard_event_pressed:153 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:259 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:265 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:271 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:22::keyboard_event_pressed:277 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [253] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ( main:2::keyboard_event_scan:22 [ 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 [254] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:2::keyboard_event_scan:22 [ 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 [284] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:2::keyboard_event_scan:22 [ 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 [285] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:2::keyboard_event_scan:22 [ 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 [288] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:2::keyboard_event_scan:22 [ 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 [290] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:2::keyboard_event_scan:22 [ 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 [296] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:2::keyboard_event_scan:22 [ 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 [297] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:2::keyboard_event_scan:22 [ 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 [300] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_event_scan:22::keyboard_matrix_read:250 [ 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 [301] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_event_scan:22::keyboard_matrix_read:250 [ 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 [305] (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:2::tables_init:9 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 tables_init::$1 ] ) always clobbers reg byte a +Statement [306] *((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:2::tables_init:9 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ) always clobbers reg byte a +Statement [307] *((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:2::tables_init:9 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ) always clobbers reg byte a +Statement [308] (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:2::tables_init:9 [ tables_init::j#2 tables_init::idx#2 tables_init::pli#1 ] ) always clobbers reg byte a +Statement [309] (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:2::tables_init:9 [ tables_init::j#2 tables_init::pli#1 tables_init::idx#1 ] ) always clobbers reg byte a +Statement [312] *((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:2::tables_init:9 [ ] ) always clobbers reg byte a +Statement [319] (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:2::render_init:7 [ render_init::i#2 render_init::li#2 render_init::$5 ] ) always clobbers reg byte a +Statement [320] *((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:2::render_init:7 [ render_init::i#2 render_init::li#2 ] ) always clobbers reg byte a +Statement [321] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li#1 ] ( main:2::render_init:7 [ render_init::i#2 render_init::li#1 ] ) always clobbers reg byte a +Statement [326] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$10 ] ( main:2::render_init:7 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$10 ] ) always clobbers reg byte a +Statement [327] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ( main:2::render_init:7 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ) always clobbers reg byte a reg byte y +Statement [330] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::l#4 render_init::line#1 ] ( main:2::render_init:7 [ render_init::l#4 render_init::line#1 ] ) always clobbers reg byte a +Statement [335] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:2::render_init:7::fill:315 [ fill::addr#0 fill::val#3 fill::end#0 ] main:2::render_init:7::fill:317 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a +Statement [337] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:2::render_init:7::fill:315 [ fill::val#3 fill::end#0 fill::addr#2 ] main:2::render_init:7::fill:317 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [339] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:2::render_init:7::fill:315 [ fill::val#3 fill::end#0 fill::addr#1 ] main:2::render_init:7::fill:317 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a +Statement [341] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:2::sid_rnd_init:5 [ ] ) always clobbers reg byte a +Statement [342] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:2::sid_rnd_init:5 [ ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] : zp ZP_BYTE:3 , reg byte x , -Potential registers zp ZP_BYTE:4 [ current_ypos#22 current_ypos#70 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:5 [ current_xpos#63 current_xpos#95 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:6 [ current_piece_gfx#63 current_piece_gfx#86 current_piece_gfx#87 ] : zp ZP_WORD:6 , -Potential registers zp ZP_BYTE:8 [ current_piece_color#66 current_piece_color#74 current_piece_color#75 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , +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: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 , @@ -9061,7 +8748,7 @@ Potential registers zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::l Potential registers zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] : zp ZP_BYTE:18 , reg byte x , Potential registers zp ZP_BYTE:19 [ play_move_rotate::return#2 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] : zp ZP_BYTE:20 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:21 [ current_piece#15 current_piece#71 current_piece#72 current_piece#73 current_piece#74 ] : zp ZP_WORD:21 , +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 , @@ -9073,360 +8760,337 @@ Potential registers zp ZP_BYTE:30 [ collision::c#2 collision::c#1 ] : zp ZP_BYTE Potential registers zp ZP_BYTE:31 [ collision::return#14 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:32 [ play_move_leftright::return#2 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:33 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] : zp ZP_BYTE:33 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:34 [ current_piece#23 current_piece#75 current_piece#11 current_piece#13 current_piece#70 ] : zp ZP_WORD:34 , +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::done#3 remove_lines::done#2 ] : zp ZP_BYTE:43 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:44 [ remove_line::y#4 remove_line::ypos#0 remove_line::y#1 ] : zp ZP_BYTE:44 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:45 [ remove_line::i1#2 remove_line::i1#3 remove_line::i1#0 remove_line::i1#1 ] : zp ZP_BYTE:45 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:46 [ remove_line::i2#2 remove_line::i2#3 remove_line::i2#0 remove_line::i2#1 ] : zp ZP_BYTE:46 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:47 [ remove_line::x#2 remove_line::x#1 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:48 [ find_line::i#2 find_line::i#3 find_line::i#8 find_line::i#10 ] : zp ZP_BYTE:48 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:49 [ find_line::x#2 find_line::x#1 ] : zp ZP_BYTE:49 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:50 [ find_line::filled#4 find_line::filled#2 ] : zp ZP_BYTE:50 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:51 [ find_line::return#2 find_line::y#8 find_line::y#1 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:52 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] : zp ZP_BYTE:52 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:53 [ lock_current::l#6 lock_current::l#1 ] : zp ZP_BYTE:53 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:54 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] : zp ZP_BYTE:54 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:55 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] : zp ZP_BYTE:55 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:56 [ lock_current::c#2 lock_current::c#1 ] : zp ZP_BYTE:56 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:57 [ keyboard_event_pressed::keycode#5 ] : zp ZP_BYTE:57 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:58 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] : zp ZP_BYTE:58 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] : zp ZP_BYTE:59 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:60 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] : zp ZP_BYTE:60 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:61 [ 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:61 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:62 [ 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:62 , reg byte x , -Potential registers zp ZP_BYTE:63 [ tables_init::j#2 tables_init::j#1 ] : zp ZP_BYTE:63 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:64 [ tables_init::pli#2 tables_init::pli#1 ] : zp ZP_WORD:64 , -Potential registers zp ZP_BYTE:66 [ tables_init::idx#2 tables_init::idx#1 ] : zp ZP_BYTE:66 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:67 [ render_init::i#2 render_init::i#1 ] : zp ZP_BYTE:67 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:68 [ render_init::li#2 render_init::li#1 ] : zp ZP_WORD:68 , -Potential registers zp ZP_WORD:70 [ render_init::line#4 render_init::line#1 ] : zp ZP_WORD:70 , -Potential registers zp ZP_BYTE:72 [ render_init::l#4 render_init::l#1 ] : zp ZP_BYTE:72 , reg byte x , -Potential registers zp ZP_BYTE:73 [ render_init::c#2 render_init::c#1 ] : zp ZP_BYTE:73 , reg byte x , -Potential registers zp ZP_BYTE:74 [ fill::val#3 ] : zp ZP_BYTE:74 , reg byte x , -Potential registers zp ZP_WORD:75 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : zp ZP_WORD:75 , -Potential registers zp ZP_BYTE:77 [ keyboard_event_get::return#3 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:78 [ main::key_event#0 ] : zp ZP_BYTE:78 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:79 [ play_move_down::key_event#0 ] : zp ZP_BYTE:79 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:80 [ play_move_down::return#0 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:81 [ main::$10 ] : zp ZP_BYTE:81 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:82 [ main::render#1 ] : zp ZP_BYTE:82 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:83 [ play_move_leftright::key_event#0 ] : zp ZP_BYTE:83 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:84 [ play_move_leftright::return#0 ] : zp ZP_BYTE:84 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:85 [ main::$11 ] : zp ZP_BYTE:85 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:86 [ main::render#2 ] : zp ZP_BYTE:86 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:87 [ play_move_rotate::key_event#0 ] : zp ZP_BYTE:87 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:88 [ play_move_rotate::return#0 ] : zp ZP_BYTE:88 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:89 [ main::$12 ] : zp ZP_BYTE:89 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:90 [ main::render#3 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:91 [ render_current::screen_line#0 ] : zp ZP_WORD:91 , -Potential registers zp ZP_BYTE:93 [ render_current::current_cell#0 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:94 [ render_playfield::$1 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:95 [ play_move_rotate::$2 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:96 [ collision::return#13 ] : zp ZP_BYTE:96 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:97 [ play_move_rotate::$6 ] : zp ZP_BYTE:97 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:98 [ play_move_rotate::$4 ] : zp ZP_BYTE:98 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:99 [ collision::piece_gfx#0 ] : zp ZP_WORD:99 , -Potential registers zp ZP_WORD:101 [ collision::playfield_line#0 ] : zp ZP_WORD:101 , -Potential registers zp ZP_BYTE:103 [ collision::i#1 ] : zp ZP_BYTE:103 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:104 [ collision::$7 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:105 [ collision::return#12 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:106 [ play_move_leftright::$4 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:107 [ collision::return#1 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:108 [ play_move_leftright::$8 ] : zp ZP_BYTE:108 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:109 [ keyboard_event_pressed::return#12 ] : zp ZP_BYTE:109 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:110 [ play_move_down::$2 ] : zp ZP_BYTE:110 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:111 [ collision::return#0 ] : zp ZP_BYTE:111 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:112 [ play_move_down::$12 ] : zp ZP_BYTE:112 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:113 [ spawn_current::$3 ] : zp ZP_BYTE:113 , reg byte x , -Potential registers zp ZP_BYTE:114 [ sid_rnd::return#2 ] : zp ZP_BYTE:114 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:115 [ spawn_current::$1 ] : zp ZP_BYTE:115 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:116 [ sid_rnd::return#0 ] : zp ZP_BYTE:116 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:117 [ find_line::return#0 ] : zp ZP_BYTE:117 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:118 [ remove_lines::line_ypos#0 ] : zp ZP_BYTE:118 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:119 [ remove_line::$0 ] : zp ZP_BYTE:119 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:120 [ find_line::i#1 ] : zp ZP_BYTE:120 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:121 [ lock_current::playfield_line#0 ] : zp ZP_WORD:121 , -Potential registers zp ZP_BYTE:123 [ lock_current::i#1 ] : zp ZP_BYTE:123 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:124 [ keyboard_event_pressed::$0 ] : zp ZP_BYTE:124 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:125 [ keyboard_event_pressed::row_bits#0 ] : zp ZP_BYTE:125 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:126 [ keyboard_event_pressed::$1 ] : zp ZP_BYTE:126 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:127 [ keyboard_event_pressed::return#11 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:128 [ keyboard_matrix_read::rowid#0 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:129 [ keyboard_matrix_read::return#2 ] : zp ZP_BYTE:129 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:130 [ keyboard_event_scan::row_scan#0 ] : zp ZP_BYTE:130 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:131 [ keyboard_event_pressed::return#0 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:132 [ keyboard_event_scan::$14 ] : zp ZP_BYTE:132 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:133 [ keyboard_event_pressed::return#1 ] : zp ZP_BYTE:133 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:134 [ keyboard_event_scan::$18 ] : zp ZP_BYTE:134 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:135 [ keyboard_event_pressed::return#2 ] : zp ZP_BYTE:135 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:136 [ keyboard_event_scan::$22 ] : zp ZP_BYTE:136 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:137 [ keyboard_event_pressed::return#10 ] : zp ZP_BYTE:137 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:138 [ keyboard_event_scan::$26 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:139 [ keyboard_event_scan::$3 ] : zp ZP_BYTE:139 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:140 [ keyboard_event_scan::$4 ] : zp ZP_BYTE:140 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:141 [ keyboard_event_scan::event_type#0 ] : zp ZP_BYTE:141 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:142 [ keyboard_event_scan::$11 ] : zp ZP_BYTE:142 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:143 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:143 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:144 [ tables_init::$1 ] : zp ZP_BYTE:144 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:145 [ render_init::$5 ] : zp ZP_BYTE:145 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:146 [ render_init::$10 ] : zp ZP_WORD:146 , -Potential registers zp ZP_WORD:148 [ fill::end#0 ] : zp ZP_WORD:148 , +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_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 , +Potential registers zp ZP_BYTE:56 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] : zp ZP_BYTE:56 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:57 [ 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:57 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:58 [ 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:58 , reg byte x , +Potential registers zp ZP_BYTE:59 [ tables_init::j#2 tables_init::j#1 ] : zp ZP_BYTE:59 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:60 [ tables_init::pli#2 tables_init::pli#1 ] : zp ZP_WORD:60 , +Potential registers zp ZP_BYTE:62 [ tables_init::idx#2 tables_init::idx#1 ] : zp ZP_BYTE:62 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:63 [ render_init::i#2 render_init::i#1 ] : zp ZP_BYTE:63 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:64 [ render_init::li#2 render_init::li#1 ] : zp ZP_WORD:64 , +Potential registers zp ZP_WORD:66 [ render_init::line#4 render_init::line#1 ] : zp ZP_WORD:66 , +Potential registers zp ZP_BYTE:68 [ render_init::l#4 render_init::l#1 ] : zp ZP_BYTE:68 , reg byte x , +Potential registers zp ZP_BYTE:69 [ render_init::c#2 render_init::c#1 ] : zp ZP_BYTE:69 , reg byte x , +Potential registers zp ZP_BYTE:70 [ fill::val#3 ] : zp ZP_BYTE:70 , reg byte x , +Potential registers zp ZP_WORD:71 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : zp ZP_WORD:71 , +Potential registers zp ZP_BYTE:73 [ keyboard_event_get::return#3 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:74 [ main::key_event#0 ] : zp ZP_BYTE:74 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:75 [ play_move_down::key_event#0 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:76 [ play_move_down::return#0 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:77 [ main::$10 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:78 [ main::render#1 ] : zp ZP_BYTE:78 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:79 [ play_move_leftright::key_event#0 ] : zp ZP_BYTE:79 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:80 [ play_move_leftright::return#0 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:81 [ main::$11 ] : zp ZP_BYTE:81 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:82 [ main::render#2 ] : zp ZP_BYTE:82 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:83 [ play_move_rotate::key_event#0 ] : zp ZP_BYTE:83 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:84 [ play_move_rotate::return#0 ] : zp ZP_BYTE:84 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:85 [ main::$12 ] : zp ZP_BYTE:85 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:86 [ main::render#3 ] : zp ZP_BYTE:86 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:87 [ render_current::screen_line#0 ] : zp ZP_WORD:87 , +Potential registers zp ZP_BYTE:89 [ render_current::current_cell#0 ] : zp ZP_BYTE:89 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:90 [ render_playfield::$1 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:91 [ play_move_rotate::$2 ] : zp ZP_BYTE:91 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:92 [ collision::return#13 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:93 [ play_move_rotate::$6 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:94 [ play_move_rotate::$4 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:95 [ collision::piece_gfx#0 ] : zp ZP_WORD:95 , +Potential registers zp ZP_WORD:97 [ collision::playfield_line#0 ] : zp ZP_WORD:97 , +Potential registers zp ZP_BYTE:99 [ collision::i#1 ] : zp ZP_BYTE:99 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:100 [ collision::$7 ] : zp ZP_BYTE:100 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:101 [ collision::return#12 ] : zp ZP_BYTE:101 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:102 [ play_move_leftright::$4 ] : zp ZP_BYTE:102 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:103 [ collision::return#1 ] : zp ZP_BYTE:103 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:104 [ play_move_leftright::$8 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:105 [ keyboard_event_pressed::return#12 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:106 [ play_move_down::$2 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:107 [ collision::return#0 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:108 [ play_move_down::$12 ] : zp ZP_BYTE:108 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:109 [ spawn_current::$3 ] : zp ZP_BYTE:109 , reg byte x , +Potential registers zp ZP_BYTE:110 [ sid_rnd::return#2 ] : zp ZP_BYTE:110 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:111 [ spawn_current::$1 ] : zp ZP_BYTE:111 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:112 [ sid_rnd::return#0 ] : zp ZP_BYTE:112 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:113 [ remove_lines::c#0 ] : zp ZP_BYTE:113 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:114 [ lock_current::playfield_line#0 ] : zp ZP_WORD:114 , +Potential registers zp ZP_BYTE:116 [ lock_current::i#1 ] : zp ZP_BYTE:116 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:117 [ keyboard_event_pressed::$0 ] : zp ZP_BYTE:117 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:118 [ keyboard_event_pressed::row_bits#0 ] : zp ZP_BYTE:118 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:119 [ keyboard_event_pressed::$1 ] : zp ZP_BYTE:119 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:120 [ keyboard_event_pressed::return#11 ] : zp ZP_BYTE:120 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:121 [ keyboard_matrix_read::rowid#0 ] : zp ZP_BYTE:121 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:122 [ keyboard_matrix_read::return#2 ] : zp ZP_BYTE:122 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:123 [ keyboard_event_scan::row_scan#0 ] : zp ZP_BYTE:123 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:124 [ keyboard_event_pressed::return#0 ] : zp ZP_BYTE:124 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:125 [ keyboard_event_scan::$14 ] : zp ZP_BYTE:125 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:126 [ keyboard_event_pressed::return#1 ] : zp ZP_BYTE:126 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:127 [ keyboard_event_scan::$18 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:128 [ keyboard_event_pressed::return#2 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:129 [ keyboard_event_scan::$22 ] : zp ZP_BYTE:129 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:130 [ keyboard_event_pressed::return#10 ] : zp ZP_BYTE:130 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:131 [ keyboard_event_scan::$26 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:132 [ keyboard_event_scan::$3 ] : zp ZP_BYTE:132 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:133 [ keyboard_event_scan::$4 ] : zp ZP_BYTE:133 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:134 [ keyboard_event_scan::event_type#0 ] : zp ZP_BYTE:134 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:135 [ keyboard_event_scan::$11 ] : zp ZP_BYTE:135 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:136 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:136 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:137 [ tables_init::$1 ] : zp ZP_BYTE:137 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:138 [ render_init::$5 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:139 [ render_init::$10 ] : zp ZP_WORD:139 , +Potential registers zp ZP_WORD:141 [ fill::end#0 ] : zp ZP_WORD:141 , REGISTER UPLIFT SCOPES -Uplift Scope [find_line] 39,508: zp ZP_BYTE:48 [ find_line::i#2 find_line::i#3 find_line::i#8 find_line::i#10 ] 14,001.4: zp ZP_BYTE:49 [ find_line::x#2 find_line::x#1 ] 10,251.25: zp ZP_BYTE:50 [ find_line::filled#4 find_line::filled#2 ] 2,333.67: zp ZP_BYTE:120 [ find_line::i#1 ] 1,668.63: zp ZP_BYTE:51 [ find_line::return#2 find_line::y#8 find_line::y#1 ] 202: zp ZP_BYTE:117 [ find_line::return#0 ] -Uplift Scope [remove_line] 21,008.5: zp ZP_BYTE:46 [ remove_line::i2#2 remove_line::i2#3 remove_line::i2#0 remove_line::i2#1 ] 20,002: zp ZP_BYTE:47 [ remove_line::x#2 remove_line::x#1 ] 16,543.27: zp ZP_BYTE:45 [ remove_line::i1#2 remove_line::i1#3 remove_line::i1#0 remove_line::i1#1 ] 1,814.54: zp ZP_BYTE:44 [ remove_line::y#4 remove_line::ypos#0 remove_line::y#1 ] 4: zp ZP_BYTE:119 [ remove_line::$0 ] -Uplift Scope [keyboard_event_scan] 2,002: zp ZP_BYTE:139 [ keyboard_event_scan::$3 ] 2,002: zp ZP_BYTE:140 [ keyboard_event_scan::$4 ] 2,002: zp ZP_BYTE:141 [ keyboard_event_scan::event_type#0 ] 2,002: zp ZP_BYTE:142 [ keyboard_event_scan::$11 ] 1,787.5: zp ZP_BYTE:60 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 1,195.02: zp ZP_BYTE:61 [ 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:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 128.06: zp ZP_BYTE:130 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:132 [ keyboard_event_scan::$14 ] 4: zp ZP_BYTE:134 [ keyboard_event_scan::$18 ] 4: zp ZP_BYTE:136 [ keyboard_event_scan::$22 ] 4: zp ZP_BYTE:138 [ 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:104 [ 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:103 [ 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:101 [ collision::playfield_line#0 ] 47.76: zp ZP_WORD:99 [ 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:96 [ collision::return#13 ] 4: zp ZP_BYTE:105 [ collision::return#12 ] 4: zp ZP_BYTE:107 [ collision::return#1 ] 4: zp ZP_BYTE:111 [ collision::return#0 ] 1.33: zp ZP_BYTE:31 [ collision::return#14 ] -Uplift Scope [lock_current] 3,823.33: zp ZP_BYTE:54 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] 1,478.5: zp ZP_BYTE:55 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] 1,401.4: zp ZP_BYTE:56 [ lock_current::c#2 lock_current::c#1 ] 233.67: zp ZP_BYTE:123 [ lock_current::i#1 ] 117.83: zp ZP_BYTE:53 [ lock_current::l#6 lock_current::l#1 ] 110.2: zp ZP_WORD:121 [ lock_current::playfield_line#0 ] 82.23: zp ZP_BYTE:52 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] -Uplift Scope [render_current] 2,357.5: zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] 1,787.5: zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 ] 1,553.5: zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] 1,001: zp ZP_BYTE:93 [ 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:91 [ render_current::screen_line#0 ] -Uplift Scope [] 5,895.76: zp ZP_BYTE:62 [ 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#66 current_piece_color#74 current_piece_color#75 ] 66.37: zp ZP_WORD:6 [ current_piece_gfx#63 current_piece_gfx#86 current_piece_gfx#87 ] 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#71 current_piece#72 current_piece#73 current_piece#74 ] 18.5: zp ZP_BYTE:4 [ current_ypos#22 current_ypos#70 ] 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#75 current_piece#11 current_piece#13 current_piece#70 ] 13.23: zp ZP_BYTE:5 [ current_xpos#63 current_xpos#95 ] 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 [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:94 [ 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:73 [ render_init::c#2 render_init::c#1 ] 202: zp ZP_WORD:146 [ render_init::$10 ] 27.83: zp ZP_WORD:70 [ render_init::line#4 render_init::line#1 ] 24.75: zp ZP_BYTE:67 [ render_init::i#2 render_init::i#1 ] 22: zp ZP_BYTE:145 [ render_init::$5 ] 19.64: zp ZP_BYTE:72 [ render_init::l#4 render_init::l#1 ] 18.33: zp ZP_WORD:68 [ 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:115 [ spawn_current::$1 ] 0.18: zp ZP_BYTE:113 [ spawn_current::$3 ] -Uplift Scope [keyboard_matrix_read] 202: zp ZP_BYTE:129 [ keyboard_matrix_read::return#2 ] 103: zp ZP_BYTE:128 [ keyboard_matrix_read::rowid#0 ] 34.33: zp ZP_BYTE:143 [ keyboard_matrix_read::return#0 ] -Uplift Scope [remove_lines] 180.36: zp ZP_BYTE:43 [ remove_lines::done#3 remove_lines::done#2 ] 151.5: zp ZP_BYTE:118 [ remove_lines::line_ypos#0 ] -Uplift Scope [sid_rnd] 202: zp ZP_BYTE:114 [ sid_rnd::return#2 ] 34.33: zp ZP_BYTE:116 [ sid_rnd::return#0 ] -Uplift Scope [main] 22: zp ZP_BYTE:81 [ main::$10 ] 22: zp ZP_BYTE:85 [ main::$11 ] 22: zp ZP_BYTE:89 [ main::$12 ] 22: zp ZP_BYTE:90 [ main::render#3 ] 4.4: zp ZP_BYTE:82 [ main::render#1 ] 4.4: zp ZP_BYTE:86 [ main::render#2 ] 4: zp ZP_BYTE:78 [ main::key_event#0 ] -Uplift Scope [tables_init] 23.83: zp ZP_BYTE:63 [ tables_init::j#2 tables_init::j#1 ] 22: zp ZP_BYTE:144 [ tables_init::$1 ] 13.93: zp ZP_BYTE:66 [ tables_init::idx#2 tables_init::idx#1 ] 13.75: zp ZP_WORD:64 [ tables_init::pli#2 tables_init::pli#1 ] -Uplift Scope [play_move_down] 22: zp ZP_BYTE:80 [ 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:79 [ play_move_down::key_event#0 ] 4: zp ZP_BYTE:110 [ play_move_down::$2 ] 4: zp ZP_BYTE:112 [ play_move_down::$12 ] 3.67: zp ZP_BYTE:41 [ play_move_down::return#3 ] -Uplift Scope [play_move_rotate] 22: zp ZP_BYTE:88 [ 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:87 [ play_move_rotate::key_event#0 ] 4: zp ZP_BYTE:95 [ play_move_rotate::$2 ] 4: zp ZP_BYTE:97 [ play_move_rotate::$6 ] 4: zp ZP_BYTE:98 [ play_move_rotate::$4 ] 3.67: zp ZP_BYTE:19 [ play_move_rotate::return#2 ] -Uplift Scope [play_move_leftright] 22: zp ZP_BYTE:84 [ play_move_leftright::return#0 ] 7.5: zp ZP_BYTE:83 [ play_move_leftright::key_event#0 ] 4: zp ZP_BYTE:106 [ play_move_leftright::$4 ] 4: zp ZP_BYTE:108 [ play_move_leftright::$8 ] 3.67: zp ZP_BYTE:32 [ play_move_leftright::return#2 ] -Uplift Scope [fill] 36: zp ZP_WORD:75 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp ZP_WORD:148 [ fill::end#0 ] 1.83: zp ZP_BYTE:74 [ fill::val#3 ] -Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:109 [ keyboard_event_pressed::return#12 ] 4: zp ZP_BYTE:124 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:126 [ keyboard_event_pressed::$1 ] 4: zp ZP_BYTE:131 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:133 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:135 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:137 [ keyboard_event_pressed::return#10 ] 2: zp ZP_BYTE:125 [ keyboard_event_pressed::row_bits#0 ] 1.71: zp ZP_BYTE:127 [ keyboard_event_pressed::return#11 ] 1.33: zp ZP_BYTE:57 [ keyboard_event_pressed::keycode#5 ] -Uplift Scope [keyboard_event_get] 22: zp ZP_BYTE:77 [ keyboard_event_get::return#3 ] 8.33: zp ZP_BYTE:58 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplift Scope [keyboard_event_scan] 2,002: zp ZP_BYTE:132 [ keyboard_event_scan::$3 ] 2,002: zp ZP_BYTE:133 [ keyboard_event_scan::$4 ] 2,002: zp ZP_BYTE:134 [ keyboard_event_scan::event_type#0 ] 2,002: zp ZP_BYTE:135 [ keyboard_event_scan::$11 ] 1,787.5: zp ZP_BYTE:56 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 1,195.02: zp ZP_BYTE:57 [ 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:123 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:125 [ keyboard_event_scan::$14 ] 4: zp ZP_BYTE:127 [ keyboard_event_scan::$18 ] 4: zp ZP_BYTE:129 [ keyboard_event_scan::$22 ] 4: zp ZP_BYTE:131 [ 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:100 [ 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:99 [ 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:97 [ collision::playfield_line#0 ] 47.76: zp ZP_WORD:95 [ 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:92 [ collision::return#13 ] 4: zp ZP_BYTE:101 [ collision::return#12 ] 4: zp ZP_BYTE:103 [ collision::return#1 ] 4: zp ZP_BYTE:107 [ 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:116 [ lock_current::i#1 ] 117.83: zp ZP_BYTE:49 [ lock_current::l#6 lock_current::l#1 ] 110.2: zp ZP_WORD:114 [ 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:113 [ remove_lines::c#0 ] 165.93: zp ZP_BYTE:43 [ remove_lines::y#8 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:89 [ 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:87 [ render_current::screen_line#0 ] +Uplift Scope [] 5,895.76: zp ZP_BYTE:58 [ 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 ] 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 ] 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 [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:90 [ 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:69 [ render_init::c#2 render_init::c#1 ] 202: zp ZP_WORD:139 [ render_init::$10 ] 27.83: zp ZP_WORD:66 [ render_init::line#4 render_init::line#1 ] 24.75: zp ZP_BYTE:63 [ render_init::i#2 render_init::i#1 ] 22: zp ZP_BYTE:138 [ render_init::$5 ] 19.64: zp ZP_BYTE:68 [ render_init::l#4 render_init::l#1 ] 18.33: zp ZP_WORD:64 [ 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:111 [ spawn_current::$1 ] 0.18: zp ZP_BYTE:109 [ spawn_current::$3 ] +Uplift Scope [keyboard_matrix_read] 202: zp ZP_BYTE:122 [ keyboard_matrix_read::return#2 ] 103: zp ZP_BYTE:121 [ keyboard_matrix_read::rowid#0 ] 34.33: zp ZP_BYTE:136 [ keyboard_matrix_read::return#0 ] +Uplift Scope [sid_rnd] 202: zp ZP_BYTE:110 [ sid_rnd::return#2 ] 34.33: zp ZP_BYTE:112 [ sid_rnd::return#0 ] +Uplift Scope [main] 22: zp ZP_BYTE:77 [ main::$10 ] 22: zp ZP_BYTE:81 [ main::$11 ] 22: zp ZP_BYTE:85 [ main::$12 ] 22: zp ZP_BYTE:86 [ main::render#3 ] 4.4: zp ZP_BYTE:78 [ main::render#1 ] 4.4: zp ZP_BYTE:82 [ main::render#2 ] 4: zp ZP_BYTE:74 [ main::key_event#0 ] +Uplift Scope [tables_init] 23.83: zp ZP_BYTE:59 [ tables_init::j#2 tables_init::j#1 ] 22: zp ZP_BYTE:137 [ tables_init::$1 ] 13.93: zp ZP_BYTE:62 [ tables_init::idx#2 tables_init::idx#1 ] 13.75: zp ZP_WORD:60 [ tables_init::pli#2 tables_init::pli#1 ] +Uplift Scope [play_move_down] 22: zp ZP_BYTE:76 [ 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:75 [ play_move_down::key_event#0 ] 4: zp ZP_BYTE:106 [ play_move_down::$2 ] 4: zp ZP_BYTE:108 [ play_move_down::$12 ] 3.67: zp ZP_BYTE:41 [ play_move_down::return#3 ] +Uplift Scope [play_move_rotate] 22: zp ZP_BYTE:84 [ 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:83 [ play_move_rotate::key_event#0 ] 4: zp ZP_BYTE:91 [ play_move_rotate::$2 ] 4: zp ZP_BYTE:93 [ play_move_rotate::$6 ] 4: zp ZP_BYTE:94 [ play_move_rotate::$4 ] 3.67: zp ZP_BYTE:19 [ play_move_rotate::return#2 ] +Uplift Scope [play_move_leftright] 22: zp ZP_BYTE:80 [ play_move_leftright::return#0 ] 7.5: zp ZP_BYTE:79 [ play_move_leftright::key_event#0 ] 4: zp ZP_BYTE:102 [ play_move_leftright::$4 ] 4: zp ZP_BYTE:104 [ play_move_leftright::$8 ] 3.67: zp ZP_BYTE:32 [ play_move_leftright::return#2 ] +Uplift Scope [fill] 36: zp ZP_WORD:71 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp ZP_WORD:141 [ fill::end#0 ] 1.83: zp ZP_BYTE:70 [ fill::val#3 ] +Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:105 [ keyboard_event_pressed::return#12 ] 4: zp ZP_BYTE:117 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:119 [ keyboard_event_pressed::$1 ] 4: zp ZP_BYTE:124 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:126 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:128 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:130 [ keyboard_event_pressed::return#10 ] 2: zp ZP_BYTE:118 [ keyboard_event_pressed::row_bits#0 ] 1.71: zp ZP_BYTE:120 [ 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:73 [ keyboard_event_get::return#3 ] 8.33: zp ZP_BYTE:54 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] Uplift Scope [sid_rnd_init] -Uplifting [find_line] best 1740913 combination zp ZP_BYTE:48 [ find_line::i#2 find_line::i#3 find_line::i#8 find_line::i#10 ] reg byte x [ find_line::x#2 find_line::x#1 ] zp ZP_BYTE:50 [ find_line::filled#4 find_line::filled#2 ] zp ZP_BYTE:120 [ find_line::i#1 ] zp ZP_BYTE:51 [ find_line::return#2 find_line::y#8 find_line::y#1 ] zp ZP_BYTE:117 [ find_line::return#0 ] -Limited combination testing to 100 combinations of 1296 possible. -Uplifting [remove_line] best 1620903 combination reg byte y [ remove_line::i2#2 remove_line::i2#3 remove_line::i2#0 remove_line::i2#1 ] zp ZP_BYTE:47 [ remove_line::x#2 remove_line::x#1 ] reg byte x [ remove_line::i1#2 remove_line::i1#3 remove_line::i1#0 remove_line::i1#1 ] zp ZP_BYTE:44 [ remove_line::y#4 remove_line::ypos#0 remove_line::y#1 ] reg byte a [ remove_line::$0 ] -Limited combination testing to 100 combinations of 324 possible. -Uplifting [keyboard_event_scan] best 1596903 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:60 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:61 [ 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:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:130 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:132 [ keyboard_event_scan::$14 ] zp ZP_BYTE:134 [ keyboard_event_scan::$18 ] zp ZP_BYTE:136 [ keyboard_event_scan::$22 ] zp ZP_BYTE:138 [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 598000 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:56 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:57 [ 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:123 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:125 [ keyboard_event_scan::$14 ] zp ZP_BYTE:127 [ keyboard_event_scan::$18 ] zp ZP_BYTE:129 [ keyboard_event_scan::$22 ] zp ZP_BYTE:131 [ keyboard_event_scan::$26 ] Limited combination testing to 100 combinations of 5308416 possible. -Uplifting [collision] best 1581903 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:103 [ 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:101 [ collision::playfield_line#0 ] zp ZP_WORD:99 [ 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:96 [ collision::return#13 ] zp ZP_BYTE:105 [ collision::return#12 ] zp ZP_BYTE:107 [ collision::return#1 ] zp ZP_BYTE:111 [ collision::return#0 ] zp ZP_BYTE:31 [ collision::return#14 ] +Uplifting [collision] best 583000 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:99 [ 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:97 [ collision::playfield_line#0 ] zp ZP_WORD:95 [ 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:92 [ collision::return#13 ] zp ZP_BYTE:101 [ collision::return#12 ] zp ZP_BYTE:103 [ collision::return#1 ] zp ZP_BYTE:107 [ collision::return#0 ] zp ZP_BYTE:31 [ collision::return#14 ] Limited combination testing to 100 combinations of 80621568 possible. -Uplifting [lock_current] best 1572903 combination zp ZP_BYTE:54 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] zp ZP_BYTE:55 [ 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:123 [ lock_current::i#1 ] zp ZP_BYTE:53 [ lock_current::l#6 lock_current::l#1 ] zp ZP_WORD:121 [ lock_current::playfield_line#0 ] zp ZP_BYTE:52 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] +Uplifting [lock_current] best 574000 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:116 [ lock_current::i#1 ] zp ZP_BYTE:49 [ lock_current::l#6 lock_current::l#1 ] zp ZP_WORD:114 [ lock_current::playfield_line#0 ] zp ZP_BYTE:48 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] Limited combination testing to 100 combinations of 729 possible. -Uplifting [render_current] best 1557903 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:91 [ render_current::screen_line#0 ] -Limited combination testing to 100 combinations of 972 possible. -Uplifting [] best 1557869 combination zp ZP_BYTE:62 [ 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#66 current_piece_color#74 current_piece_color#75 ] zp ZP_WORD:6 [ current_piece_gfx#63 current_piece_gfx#86 current_piece_gfx#87 ] 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#71 current_piece#72 current_piece#73 current_piece#74 ] reg byte x [ current_ypos#22 current_ypos#70 ] 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#75 current_piece#11 current_piece#13 current_piece#70 ] zp ZP_BYTE:5 [ current_xpos#63 current_xpos#95 ] 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 [remove_lines] best 560300 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:113 [ remove_lines::c#0 ] zp ZP_BYTE:43 [ remove_lines::y#8 remove_lines::y#1 ] Limited combination testing to 100 combinations of 1728 possible. -Uplifting [render_playfield] best 1548469 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 1547329 combination reg byte x [ render_init::c#2 render_init::c#1 ] zp ZP_WORD:146 [ render_init::$10 ] zp ZP_WORD:70 [ 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:72 [ render_init::l#4 render_init::l#1 ] zp ZP_WORD:68 [ render_init::li#2 render_init::li#1 ] -Uplifting [spawn_current] best 1546025 combination reg byte x [ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] reg byte a [ spawn_current::$1 ] zp ZP_BYTE:113 [ spawn_current::$3 ] -Uplifting [keyboard_matrix_read] best 1544819 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 [remove_lines] best 1543919 combination zp ZP_BYTE:43 [ remove_lines::done#3 remove_lines::done#2 ] reg byte a [ remove_lines::line_ypos#0 ] -Uplifting [sid_rnd] best 1543016 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] -Uplifting [main] best 1542776 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:82 [ main::render#1 ] zp ZP_BYTE:86 [ main::render#2 ] zp ZP_BYTE:78 [ main::key_event#0 ] +Uplifting [render_current] best 545300 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:87 [ render_current::screen_line#0 ] +Limited combination testing to 100 combinations of 972 possible. +Uplifting [] best 545266 combination zp ZP_BYTE:58 [ 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 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:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] +Limited combination testing to 100 combinations of 1728 possible. +Uplifting [render_playfield] best 535866 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 534726 combination reg byte x [ render_init::c#2 render_init::c#1 ] zp ZP_WORD:139 [ render_init::$10 ] zp ZP_WORD:66 [ 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:68 [ render_init::l#4 render_init::l#1 ] zp ZP_WORD:64 [ render_init::li#2 render_init::li#1 ] +Uplifting [spawn_current] best 533422 combination reg byte x [ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] reg byte a [ spawn_current::$1 ] zp ZP_BYTE:109 [ spawn_current::$3 ] +Uplifting [keyboard_matrix_read] best 532216 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 531313 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] +Uplifting [main] best 531073 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:78 [ main::render#1 ] zp ZP_BYTE:82 [ main::render#2 ] zp ZP_BYTE:74 [ main::key_event#0 ] Limited combination testing to 100 combinations of 6912 possible. -Uplifting [tables_init] best 1542606 combination reg byte x [ tables_init::j#2 tables_init::j#1 ] reg byte a [ tables_init::$1 ] zp ZP_BYTE:66 [ tables_init::idx#2 tables_init::idx#1 ] zp ZP_WORD:64 [ tables_init::pli#2 tables_init::pli#1 ] -Uplifting [play_move_down] best 1542492 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:112 [ play_move_down::$12 ] zp ZP_BYTE:41 [ play_move_down::return#3 ] +Uplifting [tables_init] best 530903 combination reg byte x [ tables_init::j#2 tables_init::j#1 ] reg byte a [ tables_init::$1 ] zp ZP_BYTE:62 [ tables_init::idx#2 tables_init::idx#1 ] zp ZP_WORD:60 [ tables_init::pli#2 tables_init::pli#1 ] +Uplifting [play_move_down] best 530789 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:108 [ play_move_down::$12 ] zp ZP_BYTE:41 [ play_move_down::return#3 ] Limited combination testing to 100 combinations of 3072 possible. -Uplifting [play_move_rotate] best 1542390 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:97 [ play_move_rotate::$6 ] zp ZP_BYTE:98 [ play_move_rotate::$4 ] zp ZP_BYTE:19 [ play_move_rotate::return#2 ] +Uplifting [play_move_rotate] best 530687 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:93 [ play_move_rotate::$6 ] zp ZP_BYTE:94 [ play_move_rotate::$4 ] zp ZP_BYTE:19 [ play_move_rotate::return#2 ] Limited combination testing to 100 combinations of 12288 possible. -Uplifting [play_move_leftright] best 1542282 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 530579 combination reg byte a [ play_move_leftright::return#0 ] reg byte a [ play_move_leftright::key_event#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] zp ZP_BYTE:32 [ play_move_leftright::return#2 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [fill] best 1542266 combination zp ZP_WORD:75 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:148 [ fill::end#0 ] reg byte x [ fill::val#3 ] -Uplifting [keyboard_event_pressed] best 1542246 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:133 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:135 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:137 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:125 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:127 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:57 [ keyboard_event_pressed::keycode#5 ] +Uplifting [fill] best 530563 combination zp ZP_WORD:71 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:141 [ fill::end#0 ] reg byte x [ fill::val#3 ] +Uplifting [keyboard_event_pressed] best 530543 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:126 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:128 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:130 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:118 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:120 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] Limited combination testing to 100 combinations of 589824 possible. -Uplifting [keyboard_event_get] best 1542150 combination reg byte a [ keyboard_event_get::return#3 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Uplifting [sid_rnd_init] best 1542150 combination -Attempting to uplift remaining variables inzp ZP_BYTE:48 [ find_line::i#2 find_line::i#3 find_line::i#8 find_line::i#10 ] -Uplifting [find_line] best 1542150 combination zp ZP_BYTE:48 [ find_line::i#2 find_line::i#3 find_line::i#8 find_line::i#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:47 [ remove_line::x#2 remove_line::x#1 ] -Uplifting [remove_line] best 1542150 combination zp ZP_BYTE:47 [ remove_line::x#2 remove_line::x#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:50 [ find_line::filled#4 find_line::filled#2 ] -Uplifting [find_line] best 1542150 combination zp ZP_BYTE:50 [ find_line::filled#4 find_line::filled#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:62 [ 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 1542150 combination zp ZP_BYTE:62 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Uplifting [keyboard_event_get] best 530447 combination reg byte a [ keyboard_event_get::return#3 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplifting [sid_rnd_init] best 530447 combination +Attempting to uplift remaining variables inzp ZP_BYTE:58 [ 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 530447 combination zp ZP_BYTE:58 [ 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 1542150 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:54 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] -Uplifting [lock_current] best 1542150 combination zp ZP_BYTE:54 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] +Uplifting [collision] best 530447 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 530447 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:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] -Uplifting [render_current] best 1542150 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:120 [ find_line::i#1 ] -Uplifting [find_line] best 1542150 combination zp ZP_BYTE:120 [ find_line::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:44 [ remove_line::y#4 remove_line::ypos#0 remove_line::y#1 ] -Uplifting [remove_line] best 1542150 combination zp ZP_BYTE:44 [ remove_line::y#4 remove_line::ypos#0 remove_line::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:60 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Uplifting [keyboard_event_scan] best 1527150 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:51 [ find_line::return#2 find_line::y#8 find_line::y#1 ] -Uplifting [find_line] best 1527150 combination zp ZP_BYTE:51 [ find_line::return#2 find_line::y#8 find_line::y#1 ] +Uplifting [render_current] best 530447 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:56 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Uplifting [keyboard_event_scan] best 515447 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 515447 combination zp ZP_BYTE:45 [ remove_lines::x#2 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 1527150 combination zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] +Uplifting [render_current] best 515447 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 1527150 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:55 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] -Uplifting [lock_current] best 1527150 combination zp ZP_BYTE:55 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] +Uplifting [render_playfield] best 515447 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 515447 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 1527150 combination zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:61 [ 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 1527150 combination zp ZP_BYTE:61 [ 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:123 [ lock_current::i#1 ] -Uplifting [lock_current] best 1527150 combination zp ZP_BYTE:123 [ lock_current::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Uplifting [keyboard_event_scan] best 1527150 combination zp ZP_BYTE:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:117 [ find_line::return#0 ] -Uplifting [find_line] best 1526550 combination reg byte a [ find_line::return#0 ] +Uplifting [collision] best 515447 combination zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:57 [ 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 515447 combination zp ZP_BYTE:57 [ 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 515447 combination zp ZP_BYTE:46 [ remove_lines::full#4 remove_lines::full#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:113 [ remove_lines::c#0 ] +Uplifting [remove_lines] best 515447 combination zp ZP_BYTE:113 [ remove_lines::c#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:116 [ lock_current::i#1 ] +Uplifting [lock_current] best 515447 combination zp ZP_BYTE:116 [ 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 515447 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 1526550 combination zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:43 [ remove_lines::done#3 remove_lines::done#2 ] -Uplifting [remove_lines] best 1526550 combination zp ZP_BYTE:43 [ remove_lines::done#3 remove_lines::done#2 ] +Uplifting [render_playfield] best 515447 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 515447 combination zp ZP_BYTE:43 [ remove_lines::y#8 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 1526550 combination zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:103 [ collision::i#1 ] -Uplifting [collision] best 1526550 combination zp ZP_BYTE:103 [ collision::i#1 ] +Uplifting [render_current] best 515447 combination zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:99 [ collision::i#1 ] +Uplifting [collision] best 515447 combination zp ZP_BYTE:99 [ collision::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] -Uplifting [collision] best 1526550 combination zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:130 [ keyboard_event_scan::row_scan#0 ] -Uplifting [keyboard_event_scan] best 1526550 combination zp ZP_BYTE:130 [ keyboard_event_scan::row_scan#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:53 [ lock_current::l#6 lock_current::l#1 ] -Uplifting [lock_current] best 1526550 combination zp ZP_BYTE:53 [ lock_current::l#6 lock_current::l#1 ] +Uplifting [collision] best 515447 combination zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:123 [ keyboard_event_scan::row_scan#0 ] +Uplifting [keyboard_event_scan] best 515447 combination zp ZP_BYTE:123 [ 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 515447 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 1526550 combination zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] +Uplifting [collision] best 515447 combination zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] -Uplifting [render_current] best 1526550 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:52 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] -Uplifting [lock_current] best 1526550 combination zp ZP_BYTE:52 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:8 [ current_piece_color#66 current_piece_color#74 current_piece_color#75 ] -Uplifting [] best 1526550 combination zp ZP_BYTE:8 [ current_piece_color#66 current_piece_color#74 current_piece_color#75 ] +Uplifting [render_current] best 515447 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 515447 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 515447 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 1526550 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:72 [ render_init::l#4 render_init::l#1 ] -Uplifting [render_init] best 1526550 combination zp ZP_BYTE:72 [ render_init::l#4 render_init::l#1 ] +Uplifting [] best 515447 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:68 [ render_init::l#4 render_init::l#1 ] +Uplifting [render_init] best 515447 combination zp ZP_BYTE:68 [ 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 1526537 combination reg byte x [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] +Uplifting [collision] best 515434 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 1526537 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:66 [ tables_init::idx#2 tables_init::idx#1 ] -Uplifting [tables_init] best 1526537 combination zp ZP_BYTE:66 [ tables_init::idx#2 tables_init::idx#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:5 [ current_xpos#63 current_xpos#95 ] -Uplifting [] best 1526537 combination zp ZP_BYTE:5 [ current_xpos#63 current_xpos#95 ] +Uplifting [] best 515434 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:62 [ tables_init::idx#2 tables_init::idx#1 ] +Uplifting [tables_init] best 515434 combination zp ZP_BYTE:62 [ 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 515434 combination zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 ] 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 1526524 combination reg byte y [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] +Uplifting [collision] best 515421 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 1526524 combination zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] +Uplifting [collision] best 515421 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 1526524 combination zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] +Uplifting [] best 515421 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 1526524 combination zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] +Uplifting [] best 515421 combination zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] Attempting to uplift remaining variables inzp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Uplifting [play_move_rotate] best 1526524 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:82 [ main::render#1 ] -Uplifting [main] best 1526524 combination zp ZP_BYTE:82 [ main::render#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:86 [ main::render#2 ] -Uplifting [main] best 1526524 combination zp ZP_BYTE:86 [ main::render#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:78 [ main::key_event#0 ] -Uplifting [main] best 1526524 combination zp ZP_BYTE:78 [ main::key_event#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:96 [ collision::return#13 ] -Uplifting [collision] best 1526518 combination reg byte a [ collision::return#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:97 [ play_move_rotate::$6 ] -Uplifting [play_move_rotate] best 1526512 combination reg byte a [ play_move_rotate::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:98 [ play_move_rotate::$4 ] -Uplifting [play_move_rotate] best 1526506 combination reg byte a [ play_move_rotate::$4 ] -Attempting to uplift remaining variables inzp ZP_BYTE:105 [ collision::return#12 ] -Uplifting [collision] best 1526500 combination reg byte a [ collision::return#12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:107 [ collision::return#1 ] -Uplifting [collision] best 1526494 combination reg byte a [ collision::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:111 [ collision::return#0 ] -Uplifting [collision] best 1526488 combination reg byte a [ collision::return#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:112 [ play_move_down::$12 ] -Uplifting [play_move_down] best 1526482 combination reg byte a [ play_move_down::$12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:132 [ keyboard_event_scan::$14 ] -Uplifting [keyboard_event_scan] best 1526476 combination reg byte a [ keyboard_event_scan::$14 ] -Attempting to uplift remaining variables inzp ZP_BYTE:133 [ keyboard_event_pressed::return#1 ] -Uplifting [keyboard_event_pressed] best 1526470 combination reg byte a [ keyboard_event_pressed::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:134 [ keyboard_event_scan::$18 ] -Uplifting [keyboard_event_scan] best 1526464 combination reg byte a [ keyboard_event_scan::$18 ] -Attempting to uplift remaining variables inzp ZP_BYTE:135 [ keyboard_event_pressed::return#2 ] -Uplifting [keyboard_event_pressed] best 1526458 combination reg byte a [ keyboard_event_pressed::return#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:136 [ keyboard_event_scan::$22 ] -Uplifting [keyboard_event_scan] best 1526452 combination reg byte a [ keyboard_event_scan::$22 ] -Attempting to uplift remaining variables inzp ZP_BYTE:137 [ keyboard_event_pressed::return#10 ] -Uplifting [keyboard_event_pressed] best 1526446 combination reg byte a [ keyboard_event_pressed::return#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:138 [ keyboard_event_scan::$26 ] -Uplifting [keyboard_event_scan] best 1526440 combination reg byte a [ keyboard_event_scan::$26 ] +Uplifting [play_move_rotate] best 515421 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:78 [ main::render#1 ] +Uplifting [main] best 515421 combination zp ZP_BYTE:78 [ main::render#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:82 [ main::render#2 ] +Uplifting [main] best 515421 combination zp ZP_BYTE:82 [ main::render#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:74 [ main::key_event#0 ] +Uplifting [main] best 515421 combination zp ZP_BYTE:74 [ main::key_event#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:92 [ collision::return#13 ] +Uplifting [collision] best 515415 combination reg byte a [ collision::return#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:93 [ play_move_rotate::$6 ] +Uplifting [play_move_rotate] best 515409 combination reg byte a [ play_move_rotate::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:94 [ play_move_rotate::$4 ] +Uplifting [play_move_rotate] best 515403 combination reg byte a [ play_move_rotate::$4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:101 [ collision::return#12 ] +Uplifting [collision] best 515397 combination reg byte a [ collision::return#12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:103 [ collision::return#1 ] +Uplifting [collision] best 515391 combination reg byte a [ collision::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:107 [ collision::return#0 ] +Uplifting [collision] best 515385 combination reg byte a [ collision::return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:108 [ play_move_down::$12 ] +Uplifting [play_move_down] best 515379 combination reg byte a [ play_move_down::$12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:125 [ keyboard_event_scan::$14 ] +Uplifting [keyboard_event_scan] best 515373 combination reg byte a [ keyboard_event_scan::$14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:126 [ keyboard_event_pressed::return#1 ] +Uplifting [keyboard_event_pressed] best 515367 combination reg byte a [ keyboard_event_pressed::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:127 [ keyboard_event_scan::$18 ] +Uplifting [keyboard_event_scan] best 515361 combination reg byte a [ keyboard_event_scan::$18 ] +Attempting to uplift remaining variables inzp ZP_BYTE:128 [ keyboard_event_pressed::return#2 ] +Uplifting [keyboard_event_pressed] best 515355 combination reg byte a [ keyboard_event_pressed::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:129 [ keyboard_event_scan::$22 ] +Uplifting [keyboard_event_scan] best 515349 combination reg byte a [ keyboard_event_scan::$22 ] +Attempting to uplift remaining variables inzp ZP_BYTE:130 [ keyboard_event_pressed::return#10 ] +Uplifting [keyboard_event_pressed] best 515343 combination reg byte a [ keyboard_event_pressed::return#10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:131 [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 515337 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 1526404 combination reg byte a [ play_move_rotate::return#2 ] +Uplifting [play_move_rotate] best 515301 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 1526368 combination reg byte a [ play_move_leftright::return#2 ] +Uplifting [play_move_leftright] best 515265 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 1526352 combination reg byte x [ play_move_down::return#3 ] +Uplifting [play_move_down] best 515249 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 1526352 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:125 [ keyboard_event_pressed::row_bits#0 ] -Uplifting [keyboard_event_pressed] best 1526352 combination zp ZP_BYTE:125 [ keyboard_event_pressed::row_bits#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:127 [ keyboard_event_pressed::return#11 ] -Uplifting [keyboard_event_pressed] best 1526334 combination reg byte a [ keyboard_event_pressed::return#11 ] +Uplifting [] best 515249 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:118 [ keyboard_event_pressed::row_bits#0 ] +Uplifting [keyboard_event_pressed] best 515249 combination zp ZP_BYTE:118 [ keyboard_event_pressed::row_bits#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:120 [ keyboard_event_pressed::return#11 ] +Uplifting [keyboard_event_pressed] best 515231 combination reg byte a [ keyboard_event_pressed::return#11 ] Attempting to uplift remaining variables inzp ZP_BYTE:31 [ collision::return#14 ] -Uplifting [collision] best 1526307 combination reg byte a [ collision::return#14 ] -Attempting to uplift remaining variables inzp ZP_BYTE:57 [ keyboard_event_pressed::keycode#5 ] -Uplifting [keyboard_event_pressed] best 1526307 combination zp ZP_BYTE:57 [ keyboard_event_pressed::keycode#5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:113 [ spawn_current::$3 ] -Uplifting [spawn_current] best 1526307 combination zp ZP_BYTE:113 [ 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:52 [ 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#71 current_piece#72 current_piece#73 current_piece#74 ] ] with [ zp ZP_WORD:99 [ collision::piece_gfx#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:82 [ main::render#1 ] ] with [ zp ZP_BYTE:86 [ 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::done#3 remove_lines::done#2 ] ] -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::done#3 remove_lines::done#2 ] ] with [ zp ZP_BYTE:66 [ 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::done#3 remove_lines::done#2 tables_init::idx#2 tables_init::idx#1 ] ] with [ zp ZP_BYTE:72 [ 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::done#3 remove_lines::done#2 tables_init::idx#2 tables_init::idx#1 render_init::l#4 render_init::l#1 ] ] with [ zp ZP_BYTE:113 [ spawn_current::$3 ] ] -Coalescing zero page register [ zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] ] with [ zp ZP_BYTE:44 [ remove_line::y#4 remove_line::ypos#0 remove_line::y#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 remove_line::y#4 remove_line::ypos#0 remove_line::y#1 ] ] with [ zp ZP_BYTE:48 [ find_line::i#2 find_line::i#3 find_line::i#8 find_line::i#10 ] ] -Coalescing zero page register [ zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 remove_line::y#4 remove_line::ypos#0 remove_line::y#1 find_line::i#2 find_line::i#3 find_line::i#8 find_line::i#10 ] ] with [ zp ZP_BYTE:53 [ lock_current::l#6 lock_current::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#63 current_xpos#95 ] ] 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#95 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#95 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:47 [ remove_line::x#2 remove_line::x#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#63 current_xpos#95 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 remove_line::x#2 remove_line::x#1 ] ] with [ zp ZP_BYTE:50 [ find_line::filled#4 find_line::filled#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#63 current_xpos#95 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 remove_line::x#2 remove_line::x#1 find_line::filled#4 find_line::filled#2 ] ] with [ zp ZP_BYTE:54 [ 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#95 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 remove_line::x#2 remove_line::x#1 find_line::filled#4 find_line::filled#2 lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] ] with [ zp ZP_BYTE:57 [ keyboard_event_pressed::keycode#5 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#63 current_xpos#95 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 remove_line::x#2 remove_line::x#1 find_line::filled#4 find_line::filled#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:59 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#63 current_piece_gfx#86 current_piece_gfx#87 ] ] 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#63 current_piece_gfx#86 current_piece_gfx#87 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] ] with [ zp ZP_WORD:21 [ current_piece#15 current_piece#71 current_piece#72 current_piece#73 current_piece#74 collision::piece_gfx#0 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#63 current_piece_gfx#86 current_piece_gfx#87 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#71 current_piece#72 current_piece#73 current_piece#74 collision::piece_gfx#0 ] ] with [ zp ZP_WORD:64 [ tables_init::pli#2 tables_init::pli#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#63 current_piece_gfx#86 current_piece_gfx#87 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#71 current_piece#72 current_piece#73 current_piece#74 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 ] ] with [ zp ZP_WORD:68 [ render_init::li#2 render_init::li#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#63 current_piece_gfx#86 current_piece_gfx#87 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#71 current_piece#72 current_piece#73 current_piece#74 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 render_init::li#2 render_init::li#1 ] ] with [ zp ZP_WORD:70 [ render_init::line#4 render_init::line#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#63 current_piece_gfx#86 current_piece_gfx#87 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#71 current_piece#72 current_piece#73 current_piece#74 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:75 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#63 current_piece_gfx#86 current_piece_gfx#87 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#71 current_piece#72 current_piece#73 current_piece#74 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:121 [ lock_current::playfield_line#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#66 current_piece_color#74 current_piece_color#75 ] ] 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#66 current_piece_color#74 current_piece_color#75 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#66 current_piece_color#74 current_piece_color#75 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 [ find_line::return#2 find_line::y#8 find_line::y#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#66 current_piece_color#74 current_piece_color#75 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 find_line::return#2 find_line::y#8 find_line::y#1 ] ] with [ zp ZP_BYTE:55 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#66 current_piece_color#74 current_piece_color#75 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 find_line::return#2 find_line::y#8 find_line::y#1 lock_current::col#2 lock_current::col#0 lock_current::col#1 ] ] with [ zp ZP_BYTE:61 [ 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#66 current_piece_color#74 current_piece_color#75 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 find_line::return#2 find_line::y#8 find_line::y#1 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:125 [ keyboard_event_pressed::row_bits#0 ] ] +Uplifting [collision] best 515204 combination reg byte a [ collision::return#14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] +Uplifting [keyboard_event_pressed] best 515204 combination zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:109 [ spawn_current::$3 ] +Uplifting [spawn_current] best 515204 combination zp ZP_BYTE:109 [ 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:95 [ collision::piece_gfx#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:78 [ main::render#1 ] ] with [ zp ZP_BYTE:82 [ 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:62 [ 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:68 [ 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:109 [ 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:60 [ 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:64 [ 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:66 [ 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:71 [ 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:114 [ 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:57 [ 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:113 [ 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:118 [ 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:120 [ find_line::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 find_line::i#1 ] ] with [ zp ZP_BYTE:123 [ 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 find_line::i#1 lock_current::i#1 ] ] with [ zp ZP_BYTE:130 [ keyboard_event_scan::row_scan#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] ] with [ zp ZP_BYTE:116 [ 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:123 [ 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#75 current_piece#11 current_piece#13 current_piece#70 ] ] with [ zp ZP_WORD:146 [ render_init::$10 ] ] -Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#23 current_piece#75 current_piece#11 current_piece#13 current_piece#70 render_init::$10 ] ] with [ zp ZP_WORD:148 [ fill::end#0 ] ] -Coalescing zero page register [ zp ZP_WORD:91 [ render_current::screen_line#0 ] ] with [ zp ZP_WORD:101 [ collision::playfield_line#0 ] ] -Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ current_xpos#63 current_xpos#95 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 remove_line::x#2 remove_line::x#1 find_line::filled#4 find_line::filled#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#63 current_piece_gfx#86 current_piece_gfx#87 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#71 current_piece#72 current_piece#73 current_piece#74 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#66 current_piece_color#74 current_piece_color#75 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 find_line::return#2 find_line::y#8 find_line::y#1 lock_current::col#2 lock_current::col#0 lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 keyboard_event_pressed::row_bits#0 ] -Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:8 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 find_line::i#1 lock_current::i#1 keyboard_event_scan::row_scan#0 ] +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:139 [ 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:141 [ fill::end#0 ] ] +Coalescing zero page register [ zp ZP_WORD:87 [ render_current::screen_line#0 ] ] with [ zp ZP_WORD:97 [ 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#75 current_piece#11 current_piece#13 current_piece#70 render_init::$10 fill::end#0 ] +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 ] -Allocated (was zp ZP_BYTE:62) 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:78) zp ZP_BYTE:20 [ main::key_event#0 ] -Allocated (was zp ZP_BYTE:82) zp ZP_BYTE:21 [ main::render#1 main::render#2 ] -Allocated (was zp ZP_WORD:91) zp ZP_WORD:22 [ render_current::screen_line#0 collision::playfield_line#0 ] -Allocated (was zp ZP_BYTE:103) zp ZP_BYTE:24 [ collision::i#1 ] +Allocated (was zp ZP_BYTE:58) 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:74) zp ZP_BYTE:20 [ main::key_event#0 ] +Allocated (was zp ZP_BYTE:78) zp ZP_BYTE:21 [ main::render#1 main::render#2 ] +Allocated (was zp ZP_WORD:87) zp ZP_WORD:22 [ render_current::screen_line#0 collision::playfield_line#0 ] +Allocated (was zp ZP_BYTE:99) zp ZP_BYTE:24 [ collision::i#1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -9461,12 +9125,12 @@ ASSEMBLER BEFORE OPTIMIZATION .const PLAYFIELD_COLS = $a .const current_movedown_slow = $32 .const current_movedown_fast = 5 - .label SCREEN = $400 .const COLLISION_NONE = 0 .const COLLISION_PLAYFIELD = 1 .const COLLISION_BOTTOM = 2 .const COLLISION_LEFT = 4 .const COLLISION_RIGHT = 8 + .label SCREEN = $400 .label keyboard_events_size = $13 .label current_ypos = 2 .label current_xpos = $11 @@ -9477,30 +9141,30 @@ ASSEMBLER BEFORE OPTIMIZATION .label current_movedown_counter = 3 .label current_piece_15 = 5 .label current_xpos_63 = 4 - .label current_piece_gfx_63 = 5 - .label current_piece_color_66 = 7 - .label current_xpos_95 = 4 - .label current_piece_gfx_86 = 5 + .label current_piece_gfx_64 = 5 + .label current_piece_color_67 = 7 + .label current_xpos_96 = 4 .label current_piece_gfx_87 = 5 - .label current_piece_color_74 = 7 + .label current_piece_gfx_88 = 5 .label current_piece_color_75 = 7 - .label current_piece_71 = 5 + .label current_piece_color_76 = 7 .label current_piece_72 = 5 .label current_piece_73 = 5 .label current_piece_74 = 5 + .label current_piece_75 = 5 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @27 [phi:@begin->@27] -b27_from_bbegin: - jmp b27 -//SEG4 @27 -b27: +//SEG3 [1] phi from @begin to @25 [phi:@begin->@25] +b25_from_bbegin: + jmp b25 +//SEG4 @25 +b25: //SEG5 [2] call main -//SEG6 [4] phi from @27 to main [phi:@27->main] -main_from_b27: +//SEG6 [4] phi from @25 to main [phi:@25->main] +main_from_b25: jsr main -//SEG7 [3] phi from @27 to @end [phi:@27->@end] -bend_from_b27: +//SEG7 [3] phi from @25 to @end [phi:@25->@end] +bend_from_b25: jmp bend //SEG8 @end bend: @@ -9516,7 +9180,7 @@ main: { //SEG12 asm { sei } sei //SEG13 [7] call render_init - //SEG14 [332] phi from main::@21 to render_init [phi:main::@21->render_init] + //SEG14 [314] phi from main::@21 to render_init [phi:main::@21->render_init] render_init_from_b21: jsr render_init //SEG15 [8] phi from main::@21 to main::@22 [phi:main::@21->main::@22] @@ -9525,7 +9189,7 @@ main: { //SEG16 main::@22 b22: //SEG17 [9] call tables_init - //SEG18 [321] phi from main::@22 to tables_init [phi:main::@22->tables_init] + //SEG18 [303] phi from main::@22 to tables_init [phi:main::@22->tables_init] tables_init_from_b22: jsr tables_init //SEG19 [10] phi from main::@22 to main::@23 [phi:main::@22->main::@23] @@ -9549,26 +9213,26 @@ main: { jmp b25 //SEG27 main::@25 b25: - //SEG28 [14] (byte*~) current_piece_gfx#86 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 + //SEG28 [14] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_86 + sta current_piece_gfx_87 lda current_piece_gfx+1 - sta current_piece_gfx_86+1 - //SEG29 [15] (byte~) current_piece_color#74 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 + sta current_piece_gfx_87+1 + //SEG29 [15] (byte~) current_piece_color#75 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 lda current_piece_color - sta current_piece_color_74 + sta current_piece_color_75 //SEG30 [16] call render_current //SEG31 [51] phi from main::@25 to render_current [phi:main::@25->render_current] render_current_from_b25: - //SEG32 [51] phi (byte) current_piece_color#66 = (byte~) current_piece_color#74 [phi:main::@25->render_current#0] -- register_copy - //SEG33 [51] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#86 [phi:main::@25->render_current#1] -- register_copy + //SEG32 [51] phi (byte) current_piece_color#67 = (byte~) current_piece_color#75 [phi:main::@25->render_current#0] -- register_copy + //SEG33 [51] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy //SEG34 [51] phi (byte) current_xpos#63 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 lda #3 sta current_xpos_63 //SEG35 [51] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->render_current#3] -- vbuxx=vbuc1 ldx #0 jsr render_current - //SEG36 [17] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG36 [17] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy spawn_current._3 lda PIECES,y sta current_piece @@ -9593,7 +9257,7 @@ main: { //SEG44 [18] phi (byte) current_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG45 [18] phi (byte*) current_piece#11 = (byte*~) current_piece#70 [phi:main::@25->main::@1#7] -- register_copy + //SEG45 [18] phi (byte*) current_piece#11 = (byte*~) current_piece#71 [phi:main::@25->main::@1#7] -- register_copy jmp b1 //SEG46 main::@1 b1: @@ -9617,7 +9281,7 @@ main: { //SEG52 [21] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL //SEG53 [22] call keyboard_event_scan - //SEG54 [265] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] + //SEG54 [247] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] keyboard_event_scan_from_b9: jsr keyboard_event_scan //SEG55 [23] phi from main::@9 to main::@27 [phi:main::@9->main::@27] @@ -9693,26 +9357,26 @@ main: { jmp b32 //SEG84 main::@32 b32: - //SEG85 [45] (byte~) current_ypos#70 ← (byte) current_ypos#16 -- vbuxx=vbuz1 + //SEG85 [45] (byte~) current_ypos#71 ← (byte) current_ypos#16 -- vbuxx=vbuz1 ldx current_ypos - //SEG86 [46] (byte~) current_xpos#95 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG86 [46] (byte~) current_xpos#96 ← (byte) current_xpos#23 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_95 - //SEG87 [47] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + sta current_xpos_96 + //SEG87 [47] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_87 + sta current_piece_gfx_88 lda current_piece_gfx+1 - sta current_piece_gfx_87+1 - //SEG88 [48] (byte~) current_piece_color#75 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 + sta current_piece_gfx_88+1 + //SEG88 [48] (byte~) current_piece_color#76 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 lda current_piece_color - sta current_piece_color_75 + sta current_piece_color_76 //SEG89 [49] call render_current //SEG90 [51] phi from main::@32 to render_current [phi:main::@32->render_current] render_current_from_b32: - //SEG91 [51] phi (byte) current_piece_color#66 = (byte~) current_piece_color#75 [phi:main::@32->render_current#0] -- register_copy - //SEG92 [51] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#87 [phi:main::@32->render_current#1] -- register_copy - //SEG93 [51] phi (byte) current_xpos#63 = (byte~) current_xpos#95 [phi:main::@32->render_current#2] -- register_copy - //SEG94 [51] phi (byte) current_ypos#22 = (byte~) current_ypos#70 [phi:main::@32->render_current#3] -- register_copy + //SEG91 [51] phi (byte) current_piece_color#67 = (byte~) current_piece_color#76 [phi:main::@32->render_current#0] -- register_copy + //SEG92 [51] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy + //SEG93 [51] phi (byte) current_xpos#63 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy + //SEG94 [51] phi (byte) current_ypos#22 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy jsr render_current jmp b10 //SEG95 main::@10 @@ -9791,9 +9455,9 @@ render_current: { jmp b3 //SEG129 render_current::@3 b3: - //SEG130 [58] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#63 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG130 [58] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i - lda (current_piece_gfx_63),y + lda (current_piece_gfx_64),y //SEG131 [59] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 inc i //SEG132 [60] 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 @@ -9809,8 +9473,8 @@ render_current: { jmp b8 //SEG135 render_current::@8 b8: - //SEG136 [62] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#66 -- pbuz1_derefidx_vbuz2=vbuz3 - lda current_piece_color_66 + //SEG136 [62] *((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 ldy xpos sta (screen_line),y jmp b4 @@ -9971,18 +9635,18 @@ play_move_rotate: { ldy current_ypos //SEG196 [93] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG197 [94] (byte*~) current_piece#74 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG197 [94] (byte*~) current_piece#75 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece - sta current_piece_74 + sta current_piece_75 lda current_piece+1 - sta current_piece_74+1 + sta current_piece_75+1 //SEG198 [95] call collision //SEG199 [103] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] collision_from_b4: //SEG200 [103] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy //SEG201 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy //SEG202 [103] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy - //SEG203 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#74 [phi:play_move_rotate::@4->collision#3] -- register_copy + //SEG203 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#75 [phi:play_move_rotate::@4->collision#3] -- register_copy jsr collision //SEG204 [96] (byte) collision::return#13 ← (byte) collision::return#14 // (byte) collision::return#13 = (byte) collision::return#14 // register copy reg byte a @@ -10215,18 +9879,18 @@ play_move_leftright: { ldy current_ypos //SEG283 [131] (byte) collision::orientation#2 ← (byte) current_orientation#18 -- vbuxx=vbuz1 ldx current_orientation - //SEG284 [132] (byte*~) current_piece#73 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG284 [132] (byte*~) current_piece#74 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece - sta current_piece_73 + sta current_piece_74 lda current_piece+1 - sta current_piece_73+1 + sta current_piece_74+1 //SEG285 [133] call collision //SEG286 [103] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] collision_from_b7: //SEG287 [103] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy //SEG288 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy //SEG289 [103] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy - //SEG290 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#73 [phi:play_move_leftright::@7->collision#3] -- register_copy + //SEG290 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#74 [phi:play_move_leftright::@7->collision#3] -- register_copy jsr collision //SEG291 [134] (byte) collision::return#12 ← (byte) collision::return#14 // (byte) collision::return#12 = (byte) collision::return#14 // register copy reg byte a @@ -10272,18 +9936,18 @@ play_move_leftright: { ldy current_ypos //SEG308 [142] (byte) collision::orientation#1 ← (byte) current_orientation#18 -- vbuxx=vbuz1 ldx current_orientation - //SEG309 [143] (byte*~) current_piece#72 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG309 [143] (byte*~) current_piece#73 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece - sta current_piece_72 + sta current_piece_73 lda current_piece+1 - sta current_piece_72+1 + sta current_piece_73+1 //SEG310 [144] call collision //SEG311 [103] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] collision_from_b1: //SEG312 [103] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy //SEG313 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy //SEG314 [103] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy - //SEG315 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_leftright::@1->collision#3] -- register_copy + //SEG315 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#73 [phi:play_move_leftright::@1->collision#3] -- register_copy jsr collision //SEG316 [145] (byte) collision::return#1 ← (byte) collision::return#14 // (byte) collision::return#1 = (byte) collision::return#14 // register copy reg byte a @@ -10327,9 +9991,9 @@ play_move_down: { //SEG331 play_move_down::@1 b1: //SEG332 [153] call keyboard_event_pressed - //SEG333 [254] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG333 [236] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG334 [254] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG334 [236] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed @@ -10393,18 +10057,18 @@ play_move_down: { sta collision.xpos //SEG356 [166] (byte) collision::orientation#0 ← (byte) current_orientation#15 -- vbuxx=vbuz1 ldx current_orientation - //SEG357 [167] (byte*~) current_piece#71 ← (byte*) current_piece#11 -- pbuz1=pbuz2 + //SEG357 [167] (byte*~) current_piece#72 ← (byte*) current_piece#11 -- pbuz1=pbuz2 lda current_piece - sta current_piece_71 + sta current_piece_72 lda current_piece+1 - sta current_piece_71+1 + sta current_piece_72+1 //SEG358 [168] call collision //SEG359 [103] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] collision_from_b12: //SEG360 [103] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy //SEG361 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy //SEG362 [103] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy - //SEG363 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#71 [phi:play_move_down::@12->collision#3] -- register_copy + //SEG363 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_down::@12->collision#3] -- register_copy jsr collision //SEG364 [169] (byte) collision::return#0 ← (byte) collision::return#14 // (byte) collision::return#0 = (byte) collision::return#14 // register copy reg byte a @@ -10441,7 +10105,7 @@ play_move_down: { //SEG378 [183] phi from play_move_down::@20 to spawn_current [phi:play_move_down::@20->spawn_current] spawn_current_from_b20: jsr spawn_current - //SEG379 [178] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG379 [178] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy spawn_current._3 lda PIECES,y sta current_piece @@ -10457,7 +10121,7 @@ play_move_down: { //SEG384 [179] 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 lda #0 sta current_orientation - //SEG385 [179] phi (byte*) current_piece#23 = (byte*~) current_piece#75 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy + //SEG385 [179] phi (byte*) current_piece#23 = (byte*~) current_piece#76 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy //SEG386 [179] 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 lda #0 sta current_ypos @@ -10576,246 +10240,138 @@ sid_rnd: { } //SEG441 remove_lines remove_lines: { - .label done = 2 + .label c = 7 + .label x = 3 + .label y = 2 + .label full = 4 //SEG442 [198] phi from remove_lines to remove_lines::@1 [phi:remove_lines->remove_lines::@1] b1_from_remove_lines: - //SEG443 [198] phi (byte) remove_lines::done#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines->remove_lines::@1#0] -- vbuz1=vbuc1 - lda #0 - sta done - jmp b1 - //SEG444 [198] phi from remove_lines::@3 to remove_lines::@1 [phi:remove_lines::@3->remove_lines::@1] - b1_from_b3: - //SEG445 [198] phi (byte) remove_lines::done#3 = (byte) remove_lines::done#2 [phi:remove_lines::@3->remove_lines::@1#0] -- register_copy - jmp b1 - //SEG446 remove_lines::@1 - b1: - //SEG447 [199] call find_line - //SEG448 [221] phi from remove_lines::@1 to find_line [phi:remove_lines::@1->find_line] - find_line_from_b1: - jsr find_line - //SEG449 [200] (byte) find_line::return#0 ← (byte) find_line::return#2 -- vbuaa=vbuz1 - lda find_line.return - jmp b7 - //SEG450 remove_lines::@7 - b7: - //SEG451 [201] (byte) remove_lines::line_ypos#0 ← (byte) find_line::return#0 - // (byte) remove_lines::line_ypos#0 = (byte) find_line::return#0 // register copy reg byte a - //SEG452 [202] if((byte) remove_lines::line_ypos#0!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@2 -- vbuaa_neq_vbuc1_then_la1 - cmp #$ff - bne b2 - //SEG453 [203] phi from remove_lines::@7 to remove_lines::@3 [phi:remove_lines::@7->remove_lines::@3] - b3_from_b7: - //SEG454 [203] phi (byte) remove_lines::done#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines::@7->remove_lines::@3#0] -- vbuz1=vbuc1 - lda #1 - sta done - jmp b3 - //SEG455 remove_lines::@3 - b3: - //SEG456 [204] if((byte) remove_lines::done#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@1 -- vbuz1_eq_0_then_la1 - lda done - cmp #0 - beq b1_from_b3 - jmp breturn - //SEG457 remove_lines::@return - breturn: - //SEG458 [205] return - rts - //SEG459 remove_lines::@2 - b2: - //SEG460 [206] (byte) remove_line::ypos#0 ← (byte) remove_lines::line_ypos#0 -- vbuz1=vbuaa - sta remove_line.ypos - //SEG461 [207] call remove_line - jsr remove_line - //SEG462 [203] phi from remove_lines::@2 to remove_lines::@3 [phi:remove_lines::@2->remove_lines::@3] - b3_from_b2: - //SEG463 [203] phi (byte) remove_lines::done#2 = (byte) remove_lines::done#3 [phi:remove_lines::@2->remove_lines::@3#0] -- register_copy - jmp b3 -} -//SEG464 remove_line -remove_line: { - .label ypos = 3 - .label x = 4 - .label y = 3 - //SEG465 [208] (byte~) remove_line::$0 ← (byte) remove_line::ypos#0 -- vbuaa=vbuz1 - lda ypos - //SEG466 [209] (byte) remove_line::i2#0 ← *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte~) remove_line::$0) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=pbuc1_derefidx_vbuaa_minus_1 - tay - lda playfield_lines_idx+1,y - tay - dey - //SEG467 [210] (byte) remove_line::i1#0 ← *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) remove_line::ypos#0) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=pbuc1_derefidx_vbuz1_minus_1 - ldx ypos - lda playfield_lines_idx,x - tax - dex - //SEG468 [211] phi from remove_line remove_line::@3 to remove_line::@1 [phi:remove_line/remove_line::@3->remove_line::@1] - b1_from_remove_line: - b1_from_b3: - //SEG469 [211] phi (byte) remove_line::y#4 = (byte) remove_line::ypos#0 [phi:remove_line/remove_line::@3->remove_line::@1#0] -- register_copy - //SEG470 [211] phi (byte) remove_line::i2#3 = (byte) remove_line::i2#0 [phi:remove_line/remove_line::@3->remove_line::@1#1] -- register_copy - //SEG471 [211] phi (byte) remove_line::i1#3 = (byte) remove_line::i1#0 [phi:remove_line/remove_line::@3->remove_line::@1#2] -- register_copy - jmp b1 - //SEG472 remove_line::@1 - b1: - //SEG473 [212] phi from remove_line::@1 to remove_line::@2 [phi:remove_line::@1->remove_line::@2] - b2_from_b1: - //SEG474 [212] phi (byte) remove_line::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_line::@1->remove_line::@2#0] -- vbuz1=vbuc1 - lda #0 - sta x - //SEG475 [212] phi (byte) remove_line::i2#2 = (byte) remove_line::i2#3 [phi:remove_line::@1->remove_line::@2#1] -- register_copy - //SEG476 [212] phi (byte) remove_line::i1#2 = (byte) remove_line::i1#3 [phi:remove_line::@1->remove_line::@2#2] -- register_copy - jmp b2 - //SEG477 [212] phi from remove_line::@2 to remove_line::@2 [phi:remove_line::@2->remove_line::@2] - b2_from_b2: - //SEG478 [212] phi (byte) remove_line::x#2 = (byte) remove_line::x#1 [phi:remove_line::@2->remove_line::@2#0] -- register_copy - //SEG479 [212] phi (byte) remove_line::i2#2 = (byte) remove_line::i2#1 [phi:remove_line::@2->remove_line::@2#1] -- register_copy - //SEG480 [212] phi (byte) remove_line::i1#2 = (byte) remove_line::i1#1 [phi:remove_line::@2->remove_line::@2#2] -- register_copy - jmp b2 - //SEG481 remove_line::@2 - b2: - //SEG482 [213] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_line::i2#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_line::i1#2) -- pbuc1_derefidx_vbuyy=pbuc1_derefidx_vbuxx - lda playfield,x - sta playfield,y - //SEG483 [214] (byte) remove_line::i2#1 ← -- (byte) remove_line::i2#2 -- vbuyy=_dec_vbuyy - dey - //SEG484 [215] (byte) remove_line::i1#1 ← -- (byte) remove_line::i1#2 -- vbuxx=_dec_vbuxx - dex - //SEG485 [216] (byte) remove_line::x#1 ← ++ (byte) remove_line::x#2 -- vbuz1=_inc_vbuz1 - inc x - //SEG486 [217] if((byte) remove_line::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_line::@2 -- vbuz1_neq_vbuc1_then_la1 - lda x - cmp #PLAYFIELD_COLS-1+1 - bne b2_from_b2 - jmp b3 - //SEG487 remove_line::@3 - b3: - //SEG488 [218] (byte) remove_line::y#1 ← -- (byte) remove_line::y#4 -- vbuz1=_dec_vbuz1 - dec y - //SEG489 [219] if((byte) remove_line::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_line::@1 -- vbuz1_neq_vbuc1_then_la1 - lda y - cmp #1 - bne b1_from_b3 - jmp breturn - //SEG490 remove_line::@return - breturn: - //SEG491 [220] return - rts -} -//SEG492 find_line -find_line: { - .label i = 8 - .label y = 7 - .label return = 7 - .label i_2 = 3 - .label filled = 4 - .label i_3 = 3 - .label i_8 = 3 - .label i_10 = 3 - //SEG493 [222] phi from find_line to find_line::@1 [phi:find_line->find_line::@1] - b1_from_find_line: - //SEG494 [222] phi (byte) find_line::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:find_line->find_line::@1#0] -- vbuz1=vbuc1 + //SEG443 [198] 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 lda #0 sta y - //SEG495 [222] phi (byte) find_line::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:find_line->find_line::@1#1] -- vbuz1=vbuc1 - lda #0 - sta i_3 + //SEG444 [198] 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 + ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1 + //SEG445 [198] 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 + ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1 jmp b1 - //SEG496 find_line::@1 + //SEG446 [198] phi from remove_lines::@4 to remove_lines::@1 [phi:remove_lines::@4->remove_lines::@1] + b1_from_b4: + //SEG447 [198] phi (byte) remove_lines::y#8 = (byte) remove_lines::y#1 [phi:remove_lines::@4->remove_lines::@1#0] -- register_copy + //SEG448 [198] phi (byte) remove_lines::w#12 = (byte) remove_lines::w#11 [phi:remove_lines::@4->remove_lines::@1#1] -- register_copy + //SEG449 [198] phi (byte) remove_lines::r#3 = (byte) remove_lines::r#1 [phi:remove_lines::@4->remove_lines::@1#2] -- register_copy + jmp b1 + //SEG450 remove_lines::@1 b1: - //SEG497 [223] phi from find_line::@1 to find_line::@2 [phi:find_line::@1->find_line::@2] + //SEG451 [199] phi from remove_lines::@1 to remove_lines::@2 [phi:remove_lines::@1->remove_lines::@2] b2_from_b1: - //SEG498 [223] phi (byte) find_line::filled#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:find_line::@1->find_line::@2#0] -- vbuz1=vbuc1 + //SEG452 [199] 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 lda #1 - sta filled - //SEG499 [223] phi (byte) find_line::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:find_line::@1->find_line::@2#1] -- vbuxx=vbuc1 - ldx #0 - //SEG500 [223] phi (byte) find_line::i#2 = (byte) find_line::i#3 [phi:find_line::@1->find_line::@2#2] -- register_copy - jmp b2 - //SEG501 find_line::@2 - b2: - //SEG502 [224] (byte) find_line::i#1 ← ++ (byte) find_line::i#2 -- vbuz1=_inc_vbuz2 - ldy i_2 - iny - sty i - //SEG503 [225] if(*((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) find_line::i#2)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto find_line::@13 -- pbuc1_derefidx_vbuz1_neq_0_then_la1 - ldy i_2 - lda playfield,y - cmp #0 - bne b13_from_b2 - //SEG504 [226] phi from find_line::@2 to find_line::@3 [phi:find_line::@2->find_line::@3] - b3_from_b2: - //SEG505 [226] phi (byte) find_line::filled#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:find_line::@2->find_line::@3#0] -- vbuz1=vbuc1 + sta full + //SEG453 [199] 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 lda #0 - sta filled + sta x + //SEG454 [199] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#12 [phi:remove_lines::@1->remove_lines::@2#2] -- register_copy + //SEG455 [199] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#3 [phi:remove_lines::@1->remove_lines::@2#3] -- register_copy + jmp b2 + //SEG456 [199] phi from remove_lines::@3 to remove_lines::@2 [phi:remove_lines::@3->remove_lines::@2] + b2_from_b3: + //SEG457 [199] phi (byte) remove_lines::full#4 = (byte) remove_lines::full#2 [phi:remove_lines::@3->remove_lines::@2#0] -- register_copy + //SEG458 [199] phi (byte) remove_lines::x#2 = (byte) remove_lines::x#1 [phi:remove_lines::@3->remove_lines::@2#1] -- register_copy + //SEG459 [199] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#1 [phi:remove_lines::@3->remove_lines::@2#2] -- register_copy + //SEG460 [199] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#1 [phi:remove_lines::@3->remove_lines::@2#3] -- register_copy + jmp b2 + //SEG461 remove_lines::@2 + b2: + //SEG462 [200] (byte) remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy + lda playfield,y + sta c + //SEG463 [201] (byte) remove_lines::r#1 ← -- (byte) remove_lines::r#2 -- vbuyy=_dec_vbuyy + dey + //SEG464 [202] 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 + lda c + cmp #0 + bne b17_from_b2 + //SEG465 [203] phi from remove_lines::@2 to remove_lines::@3 [phi:remove_lines::@2->remove_lines::@3] + b3_from_b2: + //SEG466 [203] 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 + lda #0 + sta full jmp b3 - //SEG506 find_line::@3 + //SEG467 remove_lines::@3 b3: - //SEG507 [227] (byte) find_line::x#1 ← ++ (byte) find_line::x#2 -- vbuxx=_inc_vbuxx - inx - //SEG508 [228] if((byte) find_line::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 find_line::@12 -- vbuxx_neq_vbuc1_then_la1 - cpx #PLAYFIELD_COLS-1+1 - bne b12 - jmp b6 - //SEG509 find_line::@6 - b6: - //SEG510 [229] if((byte) find_line::filled#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto find_line::@4 -- vbuz1_neq_vbuc1_then_la1 - lda filled + //SEG468 [204] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#4) ← (byte) remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 + lda c + sta playfield,x + //SEG469 [205] (byte) remove_lines::w#1 ← -- (byte) remove_lines::w#4 -- vbuxx=_dec_vbuxx + dex + //SEG470 [206] (byte) remove_lines::x#1 ← ++ (byte) remove_lines::x#2 -- vbuz1=_inc_vbuz1 + inc x + //SEG471 [207] 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 + lda x + cmp #PLAYFIELD_COLS-1+1 + bne b2_from_b3 + jmp b9 + //SEG472 remove_lines::@9 + b9: + //SEG473 [208] 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 + lda full cmp #1 - bne b4 - //SEG511 [230] phi from find_line::@6 to find_line::@return [phi:find_line::@6->find_line::@return] - breturn_from_b6: - //SEG512 [230] phi (byte) find_line::return#2 = (byte) find_line::y#8 [phi:find_line::@6->find_line::@return#0] -- register_copy - jmp breturn - //SEG513 find_line::@return - breturn: - //SEG514 [231] return - rts - //SEG515 find_line::@4 + bne b4_from_b9 + jmp b10 + //SEG474 remove_lines::@10 + b10: + //SEG475 [209] (byte) remove_lines::w#2 ← (byte) remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + txa + clc + adc #PLAYFIELD_COLS + tax + //SEG476 [210] phi from remove_lines::@10 remove_lines::@9 to remove_lines::@4 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4] + b4_from_b10: + b4_from_b9: + //SEG477 [210] phi (byte) remove_lines::w#11 = (byte) remove_lines::w#2 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4#0] -- register_copy + jmp b4 + //SEG478 remove_lines::@4 b4: - //SEG516 [232] (byte) find_line::y#1 ← ++ (byte) find_line::y#8 -- vbuz1=_inc_vbuz1 + //SEG479 [211] (byte) remove_lines::y#1 ← ++ (byte) remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG517 [233] if((byte) find_line::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 find_line::@11 -- vbuz1_neq_vbuc1_then_la1 + //SEG480 [212] 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 lda y cmp #PLAYFIELD_LINES-1+1 - bne b11 - //SEG518 [230] phi from find_line::@4 to find_line::@return [phi:find_line::@4->find_line::@return] - breturn_from_b4: - //SEG519 [230] phi (byte) find_line::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:find_line::@4->find_line::@return#0] -- vbuz1=vbuc1 - lda #$ff - sta return + bne b1_from_b4 + //SEG481 [213] phi from remove_lines::@4 remove_lines::@6 to remove_lines::@5 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5] + b5_from_b4: + b5_from_b6: + //SEG482 [213] phi (byte) remove_lines::w#6 = (byte) remove_lines::w#11 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5#0] -- register_copy + jmp b5 + //SEG483 remove_lines::@5 + b5: + //SEG484 [214] if((byte) remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 + cpx #$ff + bne b6 jmp breturn - //SEG520 find_line::@11 - b11: - //SEG521 [234] (byte~) find_line::i#8 ← (byte) find_line::i#1 -- vbuz1=vbuz2 - lda i - sta i_8 - //SEG522 [222] phi from find_line::@11 to find_line::@1 [phi:find_line::@11->find_line::@1] - b1_from_b11: - //SEG523 [222] phi (byte) find_line::y#8 = (byte) find_line::y#1 [phi:find_line::@11->find_line::@1#0] -- register_copy - //SEG524 [222] phi (byte) find_line::i#3 = (byte~) find_line::i#8 [phi:find_line::@11->find_line::@1#1] -- register_copy - jmp b1 - //SEG525 find_line::@12 - b12: - //SEG526 [235] (byte~) find_line::i#10 ← (byte) find_line::i#1 -- vbuz1=vbuz2 - lda i - sta i_10 - //SEG527 [223] phi from find_line::@12 to find_line::@2 [phi:find_line::@12->find_line::@2] - b2_from_b12: - //SEG528 [223] phi (byte) find_line::filled#4 = (byte) find_line::filled#2 [phi:find_line::@12->find_line::@2#0] -- register_copy - //SEG529 [223] phi (byte) find_line::x#2 = (byte) find_line::x#1 [phi:find_line::@12->find_line::@2#1] -- register_copy - //SEG530 [223] phi (byte) find_line::i#2 = (byte~) find_line::i#10 [phi:find_line::@12->find_line::@2#2] -- register_copy - jmp b2 - //SEG531 [236] phi from find_line::@2 to find_line::@13 [phi:find_line::@2->find_line::@13] - b13_from_b2: - jmp b13 - //SEG532 find_line::@13 - b13: - //SEG533 [226] phi from find_line::@13 to find_line::@3 [phi:find_line::@13->find_line::@3] - b3_from_b13: - //SEG534 [226] phi (byte) find_line::filled#2 = (byte) find_line::filled#4 [phi:find_line::@13->find_line::@3#0] -- register_copy + //SEG485 remove_lines::@return + breturn: + //SEG486 [215] return + rts + //SEG487 remove_lines::@6 + b6: + //SEG488 [216] *((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 + lda #0 + sta playfield,x + //SEG489 [217] (byte) remove_lines::w#3 ← -- (byte) remove_lines::w#6 -- vbuxx=_dec_vbuxx + dex + jmp b5_from_b6 + //SEG490 [218] phi from remove_lines::@2 to remove_lines::@17 [phi:remove_lines::@2->remove_lines::@17] + b17_from_b2: + jmp b17 + //SEG491 remove_lines::@17 + b17: + //SEG492 [203] phi from remove_lines::@17 to remove_lines::@3 [phi:remove_lines::@17->remove_lines::@3] + b3_from_b17: + //SEG493 [203] phi (byte) remove_lines::full#2 = (byte) remove_lines::full#4 [phi:remove_lines::@17->remove_lines::@3#0] -- register_copy jmp b3 } -//SEG535 lock_current +//SEG494 lock_current lock_current: { .label ypos2 = 2 .label playfield_line = 5 @@ -10826,476 +10382,476 @@ lock_current: { .label i_3 = 4 .label i_7 = 4 .label i_9 = 4 - //SEG536 [237] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG495 [219] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl ypos2 - //SEG537 [238] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] + //SEG496 [220] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] b1_from_lock_current: - //SEG538 [238] 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 [220] phi (byte) lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG539 [238] 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 + //SEG498 [220] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG540 [238] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy + //SEG499 [220] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy jmp b1 - //SEG541 lock_current::@1 + //SEG500 lock_current::@1 b1: - //SEG542 [239] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG501 [221] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG543 [240] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG502 [222] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG544 [241] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] + //SEG503 [223] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] b2_from_b1: - //SEG545 [241] 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 [223] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG546 [241] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy - //SEG547 [241] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy + //SEG505 [223] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy + //SEG506 [223] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy jmp b2 - //SEG548 lock_current::@2 + //SEG507 lock_current::@2 b2: - //SEG549 [242] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG508 [224] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG550 [243] 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 + //SEG509 [225] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 jmp b4 - //SEG551 lock_current::@4 + //SEG510 lock_current::@4 b4: - //SEG552 [244] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG511 [226] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_color ldy col sta (playfield_line),y jmp b3 - //SEG553 lock_current::@3 + //SEG512 lock_current::@3 b3: - //SEG554 [245] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG513 [227] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG555 [246] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG514 [228] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG556 [247] 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 + //SEG515 [229] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b8 jmp b5 - //SEG557 lock_current::@5 + //SEG516 lock_current::@5 b5: - //SEG558 [248] (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 [230] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG559 [249] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG518 [231] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG560 [250] 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 + //SEG519 [232] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 jmp breturn - //SEG561 lock_current::@return + //SEG520 lock_current::@return breturn: - //SEG562 [251] return + //SEG521 [233] return rts - //SEG563 lock_current::@7 + //SEG522 lock_current::@7 b7: - //SEG564 [252] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG523 [234] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG565 [238] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] + //SEG524 [220] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] b1_from_b7: - //SEG566 [238] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy - //SEG567 [238] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy - //SEG568 [238] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy + //SEG525 [220] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy + //SEG526 [220] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy + //SEG527 [220] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy jmp b1 - //SEG569 lock_current::@8 + //SEG528 lock_current::@8 b8: - //SEG570 [253] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG529 [235] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG571 [241] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] + //SEG530 [223] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] b2_from_b8: - //SEG572 [241] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy - //SEG573 [241] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy - //SEG574 [241] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy + //SEG531 [223] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy + //SEG532 [223] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy + //SEG533 [223] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy jmp b2 } -//SEG575 keyboard_event_pressed +//SEG534 keyboard_event_pressed keyboard_event_pressed: { .label row_bits = 7 .label keycode = 4 - //SEG576 [255] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 + //SEG535 [237] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 lda keycode lsr lsr lsr - //SEG577 [256] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG536 [238] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda keyboard_scan_values,y sta row_bits - //SEG578 [257] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 + //SEG537 [239] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 lda #7 and keycode - //SEG579 [258] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa + //SEG538 [240] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa tay lda keyboard_matrix_col_bitmask,y and row_bits jmp breturn - //SEG580 keyboard_event_pressed::@return + //SEG539 keyboard_event_pressed::@return breturn: - //SEG581 [259] return + //SEG540 [241] return rts } -//SEG582 keyboard_event_get +//SEG541 keyboard_event_get keyboard_event_get: { - //SEG583 [260] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + //SEG542 [242] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq breturn_from_keyboard_event_get jmp b3 - //SEG584 keyboard_event_get::@3 + //SEG543 keyboard_event_get::@3 b3: - //SEG585 [261] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG544 [243] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG586 [262] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG545 [244] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 ldy keyboard_events_size lda keyboard_events,y - //SEG587 [263] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG546 [245] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG588 [263] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG589 [263] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy + //SEG547 [245] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG548 [245] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG590 [263] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG549 [245] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG591 [263] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG592 [263] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 + //SEG550 [245] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG551 [245] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 lda #$ff jmp breturn - //SEG593 keyboard_event_get::@return + //SEG552 keyboard_event_get::@return breturn: - //SEG594 [264] return + //SEG553 [246] return rts } -//SEG595 keyboard_event_scan +//SEG554 keyboard_event_scan keyboard_event_scan: { .label row_scan = 8 .label keycode = 7 .label row = 4 - //SEG596 [266] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG555 [248] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG597 [266] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG598 [266] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 + //SEG556 [248] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG557 [248] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG599 [266] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 + //SEG558 [248] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 lda #0 sta row jmp b1 - //SEG600 [266] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG559 [248] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG601 [266] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG602 [266] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy - //SEG603 [266] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy + //SEG560 [248] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG561 [248] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG562 [248] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy jmp b1 - //SEG604 keyboard_event_scan::@1 + //SEG563 keyboard_event_scan::@1 b1: - //SEG605 [267] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG564 [249] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG606 [268] call keyboard_matrix_read + //SEG565 [250] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG607 [269] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG566 [251] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 // (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#0 // register copy reg byte a jmp b25 - //SEG608 keyboard_event_scan::@25 + //SEG567 keyboard_event_scan::@25 b25: - //SEG609 [270] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG568 [252] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG610 [271] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG569 [253] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda row_scan ldy row cmp keyboard_scan_values,y bne b4_from_b25 jmp b13 - //SEG611 keyboard_event_scan::@13 + //SEG570 keyboard_event_scan::@13 b13: - //SEG612 [272] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 + //SEG571 [254] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG613 [273] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] + //SEG572 [255] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] b3_from_b13: b3_from_b19: - //SEG614 [273] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG615 [273] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy + //SEG573 [255] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG574 [255] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy jmp b3 - //SEG616 keyboard_event_scan::@3 + //SEG575 keyboard_event_scan::@3 b3: - //SEG617 [274] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG576 [256] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG618 [275] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG577 [257] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1_from_b3 - //SEG619 [276] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG578 [258] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] b20_from_b3: jmp b20 - //SEG620 keyboard_event_scan::@20 + //SEG579 keyboard_event_scan::@20 b20: - //SEG621 [277] call keyboard_event_pressed - //SEG622 [254] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG580 [259] call keyboard_event_pressed + //SEG581 [236] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG623 [254] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG582 [236] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG624 [278] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG583 [260] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b26 - //SEG625 keyboard_event_scan::@26 + //SEG584 keyboard_event_scan::@26 b26: - //SEG626 [279] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG585 [261] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 // (byte~) keyboard_event_scan::$14 = (byte) keyboard_event_pressed::return#0 // register copy reg byte a - //SEG627 [280] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 + //SEG586 [262] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 cmp #0 beq b9_from_b26 - //SEG628 [281] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG587 [263] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] b21_from_b26: jmp b21 - //SEG629 keyboard_event_scan::@21 + //SEG588 keyboard_event_scan::@21 b21: - //SEG630 [282] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG589 [264] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] b9_from_b21: b9_from_b26: jmp b9 - //SEG631 keyboard_event_scan::@9 + //SEG590 keyboard_event_scan::@9 b9: - //SEG632 [283] call keyboard_event_pressed - //SEG633 [254] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG591 [265] call keyboard_event_pressed + //SEG592 [236] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG634 [254] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG593 [236] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG635 [284] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG594 [266] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b27 - //SEG636 keyboard_event_scan::@27 + //SEG595 keyboard_event_scan::@27 b27: - //SEG637 [285] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG596 [267] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 // (byte~) keyboard_event_scan::$18 = (byte) keyboard_event_pressed::return#1 // register copy reg byte a - //SEG638 [286] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 + //SEG597 [268] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10_from_b27 - //SEG639 [287] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] + //SEG598 [269] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] b22_from_b27: jmp b22 - //SEG640 keyboard_event_scan::@22 + //SEG599 keyboard_event_scan::@22 b22: - //SEG641 [288] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] + //SEG600 [270] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] b10_from_b22: b10_from_b27: jmp b10 - //SEG642 keyboard_event_scan::@10 + //SEG601 keyboard_event_scan::@10 b10: - //SEG643 [289] call keyboard_event_pressed - //SEG644 [254] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG602 [271] call keyboard_event_pressed + //SEG603 [236] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG645 [254] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG604 [236] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG646 [290] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG605 [272] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b28 - //SEG647 keyboard_event_scan::@28 + //SEG606 keyboard_event_scan::@28 b28: - //SEG648 [291] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG607 [273] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 // (byte~) keyboard_event_scan::$22 = (byte) keyboard_event_pressed::return#2 // register copy reg byte a - //SEG649 [292] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 + //SEG608 [274] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11_from_b28 - //SEG650 [293] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] + //SEG609 [275] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] b23_from_b28: jmp b23 - //SEG651 keyboard_event_scan::@23 + //SEG610 keyboard_event_scan::@23 b23: - //SEG652 [294] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] + //SEG611 [276] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] b11_from_b23: b11_from_b28: jmp b11 - //SEG653 keyboard_event_scan::@11 + //SEG612 keyboard_event_scan::@11 b11: - //SEG654 [295] call keyboard_event_pressed - //SEG655 [254] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG613 [277] call keyboard_event_pressed + //SEG614 [236] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG656 [254] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG615 [236] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG657 [296] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG616 [278] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#10 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b29 - //SEG658 keyboard_event_scan::@29 + //SEG617 keyboard_event_scan::@29 b29: - //SEG659 [297] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + //SEG618 [279] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 // (byte~) keyboard_event_scan::$26 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a - //SEG660 [298] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 + //SEG619 [280] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 cmp #0 beq breturn - //SEG661 [299] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] + //SEG620 [281] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] b24_from_b29: jmp b24 - //SEG662 keyboard_event_scan::@24 + //SEG621 keyboard_event_scan::@24 b24: jmp breturn - //SEG663 keyboard_event_scan::@return + //SEG622 keyboard_event_scan::@return breturn: - //SEG664 [300] return + //SEG623 [282] return rts - //SEG665 [301] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG624 [283] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG666 [301] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG667 [301] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy - //SEG668 [301] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 + //SEG625 [283] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG626 [283] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG627 [283] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG669 [301] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG628 [283] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG670 [301] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG671 [301] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy - //SEG672 [301] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy + //SEG629 [283] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG630 [283] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG631 [283] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy jmp b4 - //SEG673 keyboard_event_scan::@4 + //SEG632 keyboard_event_scan::@4 b4: - //SEG674 [302] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 + //SEG633 [284] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 lda row_scan ldy row eor keyboard_scan_values,y - //SEG675 [303] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx + //SEG634 [285] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx and keyboard_matrix_col_bitmask,x - //SEG676 [304] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 + //SEG635 [286] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5_from_b4 jmp b15 - //SEG677 keyboard_event_scan::@15 + //SEG636 keyboard_event_scan::@15 b15: - //SEG678 [305] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG637 [287] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5_from_b15 jmp b16 - //SEG679 keyboard_event_scan::@16 + //SEG638 keyboard_event_scan::@16 b16: - //SEG680 [306] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx + //SEG639 [288] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx lda keyboard_matrix_col_bitmask,x and row_scan - //SEG681 [307] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 + //SEG640 [289] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 jmp b17 - //SEG682 keyboard_event_scan::@17 + //SEG641 keyboard_event_scan::@17 b17: - //SEG683 [308] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG642 [290] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG684 [309] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG643 [291] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG685 [310] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] + //SEG644 [292] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] b5_from_b15: b5_from_b17: b5_from_b4: b5_from_b7: - //SEG686 [310] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG645 [292] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy jmp b5 - //SEG687 keyboard_event_scan::@5 + //SEG646 keyboard_event_scan::@5 b5: - //SEG688 [311] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG647 [293] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG689 [312] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG648 [294] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG690 [313] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG649 [295] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b4_from_b5 jmp b19 - //SEG691 keyboard_event_scan::@19 + //SEG650 keyboard_event_scan::@19 b19: - //SEG692 [314] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG651 [296] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3_from_b19 - //SEG693 keyboard_event_scan::@7 + //SEG652 keyboard_event_scan::@7 b7: - //SEG694 [315] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 + //SEG653 [297] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 lda #$40 ora keycode - //SEG695 [316] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG654 [298] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa ldy keyboard_events_size sta keyboard_events,y - //SEG696 [317] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG655 [299] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG697 keyboard_matrix_read +//SEG656 keyboard_matrix_read keyboard_matrix_read: { - //SEG698 [318] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx + //SEG657 [300] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A - //SEG699 [319] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG658 [301] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff jmp breturn - //SEG700 keyboard_matrix_read::@return + //SEG659 keyboard_matrix_read::@return breturn: - //SEG701 [320] return + //SEG660 [302] return rts } -//SEG702 tables_init +//SEG661 tables_init tables_init: { .label pli = 5 .label idx = 2 - //SEG703 [322] phi from tables_init to tables_init::@1 [phi:tables_init->tables_init::@1] + //SEG662 [304] phi from tables_init to tables_init::@1 [phi:tables_init->tables_init::@1] b1_from_tables_init: - //SEG704 [322] 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 + //SEG663 [304] 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 lda #0 sta idx - //SEG705 [322] 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 + //SEG664 [304] 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 lda #playfield sta pli+1 - //SEG706 [322] 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 + //SEG665 [304] 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 ldx #0 jmp b1 - //SEG707 [322] phi from tables_init::@1 to tables_init::@1 [phi:tables_init::@1->tables_init::@1] + //SEG666 [304] phi from tables_init::@1 to tables_init::@1 [phi:tables_init::@1->tables_init::@1] b1_from_b1: - //SEG708 [322] phi (byte) tables_init::idx#2 = (byte) tables_init::idx#1 [phi:tables_init::@1->tables_init::@1#0] -- register_copy - //SEG709 [322] phi (byte*) tables_init::pli#2 = (byte*) tables_init::pli#1 [phi:tables_init::@1->tables_init::@1#1] -- register_copy - //SEG710 [322] phi (byte) tables_init::j#2 = (byte) tables_init::j#1 [phi:tables_init::@1->tables_init::@1#2] -- register_copy + //SEG667 [304] phi (byte) tables_init::idx#2 = (byte) tables_init::idx#1 [phi:tables_init::@1->tables_init::@1#0] -- register_copy + //SEG668 [304] phi (byte*) tables_init::pli#2 = (byte*) tables_init::pli#1 [phi:tables_init::@1->tables_init::@1#1] -- register_copy + //SEG669 [304] phi (byte) tables_init::j#2 = (byte) tables_init::j#1 [phi:tables_init::@1->tables_init::@1#2] -- register_copy jmp b1 - //SEG711 tables_init::@1 + //SEG670 tables_init::@1 b1: - //SEG712 [323] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG671 [305] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG713 [324] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG672 [306] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG714 [325] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG673 [307] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda idx sta playfield_lines_idx,x - //SEG715 [326] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG674 [308] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -11303,88 +10859,88 @@ tables_init: { bcc !+ inc pli+1 !: - //SEG716 [327] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG675 [309] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG717 [328] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 -- vbuxx=_inc_vbuxx + //SEG676 [310] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG718 [329] 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 + //SEG677 [311] 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 cpx #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp b2 - //SEG719 tables_init::@2 + //SEG678 tables_init::@2 b2: - //SEG720 [330] *((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 + //SEG679 [312] *((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 - //SEG721 tables_init::@return + //SEG680 tables_init::@return breturn: - //SEG722 [331] return + //SEG681 [313] return rts } -//SEG723 render_init +//SEG682 render_init render_init: { .label _10 = $c .label li = 5 .label line = 5 .label l = 2 - //SEG724 [333] call fill - //SEG725 [352] phi from render_init to fill [phi:render_init->fill] + //SEG683 [315] call fill + //SEG684 [334] phi from render_init to fill [phi:render_init->fill] fill_from_render_init: - //SEG726 [352] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:render_init->fill#0] -- vbuxx=vbuc1 + //SEG685 [334] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:render_init->fill#0] -- vbuxx=vbuc1 ldx #$a0 - //SEG727 [352] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:render_init->fill#1] -- pbuz1=pbuc1 + //SEG686 [334] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:render_init->fill#1] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG728 [334] phi from render_init to render_init::@7 [phi:render_init->render_init::@7] + //SEG687 [316] phi from render_init to render_init::@7 [phi:render_init->render_init::@7] b7_from_render_init: jmp b7 - //SEG729 render_init::@7 + //SEG688 render_init::@7 b7: - //SEG730 [335] call fill - //SEG731 [352] phi from render_init::@7 to fill [phi:render_init::@7->fill] + //SEG689 [317] call fill + //SEG690 [334] phi from render_init::@7 to fill [phi:render_init::@7->fill] fill_from_b7: - //SEG732 [352] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:render_init::@7->fill#0] -- vbuxx=vbuc1 + //SEG691 [334] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:render_init::@7->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG733 [352] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:render_init::@7->fill#1] -- pbuz1=pbuc1 + //SEG692 [334] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:render_init::@7->fill#1] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG734 [336] phi from render_init::@7 to render_init::@1 [phi:render_init::@7->render_init::@1] + //SEG693 [318] phi from render_init::@7 to render_init::@1 [phi:render_init::@7->render_init::@1] b1_from_b7: - //SEG735 [336] phi (byte*) render_init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:render_init::@7->render_init::@1#0] -- pbuz1=pbuc1 + //SEG694 [318] phi (byte*) render_init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:render_init::@7->render_init::@1#0] -- pbuz1=pbuc1 lda #COLS+$28+$f sta li+1 - //SEG736 [336] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@7->render_init::@1#1] -- vbuxx=vbuc1 + //SEG695 [318] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@7->render_init::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG737 [336] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG696 [318] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] b1_from_b1: - //SEG738 [336] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG739 [336] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG697 [318] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG698 [318] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy jmp b1 - //SEG740 render_init::@1 + //SEG699 render_init::@1 b1: - //SEG741 [337] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG700 [319] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG742 [338] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG701 [320] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li sta screen_lines,y lda li+1 sta screen_lines+1,y - //SEG743 [339] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG702 [321] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li clc adc #$28 @@ -11392,41 +10948,41 @@ render_init: { bcc !+ inc li+1 !: - //SEG744 [340] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx + //SEG703 [322] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG745 [341] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG704 [323] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES+2+1 bne b1_from_b1 - //SEG746 [342] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] + //SEG705 [324] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] b2_from_b1: - //SEG747 [342] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 + //SEG706 [324] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG748 [342] phi (byte*) render_init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:render_init::@1->render_init::@2#1] -- pbuz1=pbuc1 + //SEG707 [324] phi (byte*) render_init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:render_init::@1->render_init::@2#1] -- pbuz1=pbuc1 lda #COLS+$e sta line+1 jmp b2 - //SEG749 [342] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] + //SEG708 [324] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] b2_from_b5: - //SEG750 [342] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy - //SEG751 [342] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy + //SEG709 [324] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy + //SEG710 [324] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy jmp b2 - //SEG752 render_init::@2 + //SEG711 render_init::@2 b2: - //SEG753 [343] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] + //SEG712 [325] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] b3_from_b2: - //SEG754 [343] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuxx=vbuc1 + //SEG713 [325] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG755 [343] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] + //SEG714 [325] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] b3_from_b3: - //SEG756 [343] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy + //SEG715 [325] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy jmp b3 - //SEG757 render_init::@3 + //SEG716 render_init::@3 b3: - //SEG758 [344] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuxx + //SEG717 [326] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuxx txa clc adc line @@ -11434,19 +10990,19 @@ render_init: { lda #0 adc line+1 sta _10+1 - //SEG759 [345] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG718 [327] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (_10),y - //SEG760 [346] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuxx=_inc_vbuxx + //SEG719 [328] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG761 [347] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG720 [329] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS+1+1 bne b3_from_b3 jmp b5 - //SEG762 render_init::@5 + //SEG721 render_init::@5 b5: - //SEG763 [348] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG722 [330] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -11454,23 +11010,23 @@ render_init: { bcc !+ inc line+1 !: - //SEG764 [349] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 + //SEG723 [331] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG765 [350] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG724 [332] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES+1+1 bne b2_from_b5 jmp breturn - //SEG766 render_init::@return + //SEG725 render_init::@return breturn: - //SEG767 [351] return + //SEG726 [333] return rts } -//SEG768 fill +//SEG727 fill fill: { .label end = $c .label addr = 5 - //SEG769 [353] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG728 [335] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -11478,23 +11034,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG770 [354] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG729 [336] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG771 [354] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG730 [336] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG772 fill::@1 + //SEG731 fill::@1 b1: - //SEG773 [355] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG732 [337] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG774 [356] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG733 [338] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG775 [357] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG734 [339] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 lda addr+1 cmp end+1 bne b1_from_b1 @@ -11502,25 +11058,25 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG776 fill::@return + //SEG735 fill::@return breturn: - //SEG777 [358] return + //SEG736 [340] return rts } -//SEG778 sid_rnd_init +//SEG737 sid_rnd_init sid_rnd_init: { - //SEG779 [359] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + //SEG738 [341] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG780 [360] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG739 [342] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL jmp breturn - //SEG781 sid_rnd_init::@return + //SEG740 sid_rnd_init::@return breturn: - //SEG782 [361] return + //SEG741 [343] return rts } keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f @@ -11549,7 +11105,7 @@ sid_rnd_init: { screen_lines: .fill 2*(PLAYFIELD_LINES+3), 0 ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b27 +Removing instruction jmp b25 Removing instruction jmp bend Removing instruction jmp b21 Removing instruction jmp b22 @@ -11619,19 +11175,14 @@ Removing instruction jmp b2 Removing instruction jmp b7 Removing instruction jmp breturn Removing instruction jmp b1 -Removing instruction jmp b7 -Removing instruction jmp b3 -Removing instruction jmp breturn -Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b3 +Removing instruction jmp b9 +Removing instruction jmp b10 +Removing instruction jmp b4 +Removing instruction jmp b5 Removing instruction jmp breturn -Removing instruction jmp b1 -Removing instruction jmp b2 -Removing instruction jmp b3 -Removing instruction jmp b6 -Removing instruction jmp breturn -Removing instruction jmp b13 +Removing instruction jmp b17 Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b4 @@ -11687,7 +11238,7 @@ Removing instruction lda current_orientation Removing instruction lda #0 Removing instruction lda #0 Replacing instruction ldy _3 with TAY -Removing instruction lda #0 +Removing instruction lda c Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda row_scan @@ -11707,10 +11258,11 @@ Replacing label b2_from_b17 with b2 Replacing label b2_from_b9 with b2 Replacing label b4_from_b2 with b4 Replacing label b2_from_b1 with b2 -Replacing label b1_from_b3 with b1 -Replacing label b2_from_b2 with b2 -Replacing label b1_from_b3 with b1 -Replacing label b13_from_b2 with b13 +Replacing label b17_from_b2 with b17 +Replacing label b2_from_b3 with b2 +Replacing label b4_from_b9 with b4 +Replacing label b1_from_b4 with b1 +Replacing label b5_from_b6 with b5 Replacing label b1_from_b3 with b1 Replacing label b9_from_b26 with b9 Replacing label b10_from_b27 with b10 @@ -11728,9 +11280,9 @@ Replacing label b2_from_b5 with b2 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b27_from_bbegin: -Removing instruction main_from_b27: -Removing instruction bend_from_b27: +Removing instruction b25_from_bbegin: +Removing instruction main_from_b25: +Removing instruction bend_from_b25: Removing instruction b22_from_b21: Removing instruction tables_init_from_b22: Removing instruction b23_from_b22: @@ -11768,16 +11320,15 @@ Removing instruction b20_from_b19: Removing instruction spawn_current_from_b20: Removing instruction breturn_from_b7: Removing instruction b2_from_b1: -Removing instruction b1_from_b3: -Removing instruction find_line_from_b1: -Removing instruction b1_from_remove_line: -Removing instruction b1_from_b3: +Removing instruction b1_from_b4: Removing instruction b2_from_b1: -Removing instruction b2_from_b2: -Removing instruction b2_from_b1: -Removing instruction breturn_from_b6: -Removing instruction b13_from_b2: -Removing instruction b3_from_b13: +Removing instruction b2_from_b3: +Removing instruction b4_from_b10: +Removing instruction b4_from_b9: +Removing instruction b5_from_b4: +Removing instruction b5_from_b6: +Removing instruction b17_from_b2: +Removing instruction b3_from_b17: Removing instruction b1_from_b3: Removing instruction b3_from_b13: Removing instruction b3_from_b19: @@ -11815,7 +11366,7 @@ Removing instruction b3_from_b3: Removing instruction b1_from_fill: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b27: +Removing instruction b25: Removing instruction bend: Removing instruction b21: Removing instruction render_init_from_b21: @@ -11890,18 +11441,10 @@ Removing instruction b7: Removing instruction b1_from_b7: Removing instruction breturn: Removing instruction b1_from_remove_lines: -Removing instruction b7: -Removing instruction b3_from_b7: -Removing instruction breturn: Removing instruction b3_from_b2: -Removing instruction b3: +Removing instruction b9: +Removing instruction b10: Removing instruction breturn: -Removing instruction b1_from_find_line: -Removing instruction b3_from_b2: -Removing instruction b6: -Removing instruction breturn_from_b4: -Removing instruction b1_from_b11: -Removing instruction b2_from_b12: Removing instruction b1_from_lock_current: Removing instruction b2_from_b1: Removing instruction b4: @@ -11937,7 +11480,7 @@ Removing instruction breturn: Removing instruction breturn: Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination -Skipping double jump to b3 in bne b13 +Skipping double jump to b3 in bne b17 Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label breturn_from_b6 to b3 Relabelling long label breturn_from_b8 to b2 @@ -11965,7 +11508,7 @@ Removing instruction jmp b2 Removing instruction jmp b3 Succesful ASM optimization Pass5NextJumpElimination Replacing instruction ldy ypos2 with TAY -Removing instruction b13: +Removing instruction b17: Removing instruction b9: Removing instruction b10: Removing instruction b11: @@ -11975,7 +11518,7 @@ Removing unreachable instruction jmp b3 Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @27 +(label) @25 (label) @begin (label) @end (byte) BLACK @@ -12142,30 +11685,30 @@ FINAL SYMBOL TABLE (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#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#71 current_piece zp ZP_WORD:12 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 zp ZP_WORD:12 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_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#66 current_piece_color#66 zp ZP_BYTE:7 53.368421052631575 -(byte~) current_piece_color#74 current_piece_color#74 zp ZP_BYTE:7 4.0 -(byte~) current_piece_color#75 current_piece_color#75 zp ZP_BYTE:7 22.0 +(byte) current_piece_color#67 current_piece_color#67 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#63 current_piece_gfx#63 zp ZP_WORD:5 53.368421052631575 +(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#86 current_piece_gfx#86 zp ZP_WORD:5 2.0 -(byte*~) current_piece_gfx#87 current_piece_gfx#87 zp ZP_WORD:5 11.0 +(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 @@ -12174,14 +11717,14 @@ FINAL SYMBOL TABLE (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#95 current_xpos#95 zp ZP_BYTE:4 7.333333333333333 +(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#70 reg byte x 5.5 +(byte~) current_ypos#71 reg byte x 5.5 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (label) fill::@1 (label) fill::@return @@ -12195,34 +11738,6 @@ FINAL SYMBOL TABLE (byte*) fill::start (byte) fill::val (byte) fill::val#3 reg byte x 1.8333333333333333 -(byte()) find_line() -(label) find_line::@1 -(label) find_line::@11 -(label) find_line::@12 -(label) find_line::@13 -(label) find_line::@2 -(label) find_line::@3 -(label) find_line::@4 -(label) find_line::@6 -(label) find_line::@return -(byte) find_line::filled -(byte) find_line::filled#2 filled zp ZP_BYTE:4 5250.75 -(byte) find_line::filled#4 filled zp ZP_BYTE:4 5000.5 -(byte) find_line::i -(byte) find_line::i#1 i zp ZP_BYTE:8 2333.6666666666665 -(byte~) find_line::i#10 i#10 zp ZP_BYTE:3 20002.0 -(byte) find_line::i#2 i#2 zp ZP_BYTE:3 15502.0 -(byte) find_line::i#3 i#3 zp ZP_BYTE:3 2002.0 -(byte~) find_line::i#8 i#8 zp ZP_BYTE:3 2002.0 -(byte) find_line::return -(byte) find_line::return#0 reg byte a 202.0 -(byte) find_line::return#2 return zp ZP_BYTE:7 367.33333333333337 -(byte) find_line::x -(byte) find_line::x#1 reg byte x 10001.0 -(byte) find_line::x#2 reg byte x 4000.4 -(byte) find_line::y -(byte) find_line::y#1 y zp ZP_BYTE:7 1001.0 -(byte) find_line::y#8 y zp ZP_BYTE:7 300.29999999999995 (byte()) keyboard_event_get() (label) keyboard_event_get::@3 (label) keyboard_event_get::@return @@ -12450,41 +11965,40 @@ FINAL SYMBOL TABLE (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_line((byte) remove_line::ypos) -(byte~) remove_line::$0 reg byte a 4.0 -(label) remove_line::@1 -(label) remove_line::@2 -(label) remove_line::@3 -(label) remove_line::@return -(byte) remove_line::i1 -(byte) remove_line::i1#0 reg byte x 4.0 -(byte) remove_line::i1#1 reg byte x 4200.6 -(byte) remove_line::i1#2 reg byte x 10334.666666666666 -(byte) remove_line::i1#3 reg byte x 2004.0 -(byte) remove_line::i2 -(byte) remove_line::i2#0 reg byte y 2.0 -(byte) remove_line::i2#1 reg byte y 3500.5 -(byte) remove_line::i2#2 reg byte y 15502.0 -(byte) remove_line::i2#3 reg byte y 2004.0 -(byte) remove_line::x -(byte) remove_line::x#1 x zp ZP_BYTE:4 15001.5 -(byte) remove_line::x#2 x zp ZP_BYTE:4 5000.5 -(byte) remove_line::y -(byte) remove_line::y#1 y zp ZP_BYTE:3 1501.5 -(byte) remove_line::y#4 y zp ZP_BYTE:3 286.2857142857143 -(byte) remove_line::ypos -(byte) remove_line::ypos#0 ypos zp ZP_BYTE:3 26.75 (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::@7 +(label) remove_lines::@4 +(label) remove_lines::@5 +(label) remove_lines::@6 +(label) remove_lines::@9 (label) remove_lines::@return -(byte) remove_lines::done -(byte) remove_lines::done#2 done zp ZP_BYTE:2 151.5 -(byte) remove_lines::done#3 done zp ZP_BYTE:2 28.857142857142858 -(byte) remove_lines::line_ypos -(byte) remove_lines::line_ypos#0 reg byte a 151.5 +(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 @@ -12596,13 +12110,13 @@ FINAL SYMBOL TABLE (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::done#3 remove_lines::done#2 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_line::y#4 remove_line::ypos#0 remove_line::y#1 find_line::i#2 find_line::i#3 find_line::i#8 find_line::i#10 lock_current::l#6 lock_current::l#1 ] -reg byte x [ current_ypos#22 current_ypos#70 ] -zp ZP_BYTE:4 [ current_xpos#63 current_xpos#95 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 remove_line::x#2 remove_line::x#1 find_line::filled#4 find_line::filled#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#63 current_piece_gfx#86 current_piece_gfx#87 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#71 current_piece#72 current_piece#73 current_piece#74 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#66 current_piece_color#74 current_piece_color#75 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 find_line::return#2 find_line::y#8 find_line::y#1 lock_current::col#2 lock_current::col#0 lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 keyboard_event_pressed::row_bits#0 ] -zp ZP_BYTE:8 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 find_line::i#1 lock_current::i#1 keyboard_event_scan::row_scan#0 ] +zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 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 ] @@ -12615,16 +12129,15 @@ reg byte x [ collision::c#2 collision::c#1 ] reg byte a [ collision::return#14 ] reg byte a [ play_move_leftright::return#2 ] reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -zp ZP_WORD:12 [ current_piece#23 current_piece#75 current_piece#11 current_piece#13 current_piece#70 render_init::$10 fill::end#0 ] +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 x [ remove_line::i1#2 remove_line::i1#3 remove_line::i1#0 remove_line::i1#1 ] -reg byte y [ remove_line::i2#2 remove_line::i2#3 remove_line::i2#0 remove_line::i2#1 ] -reg byte x [ find_line::x#2 find_line::x#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 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] @@ -12666,9 +12179,6 @@ reg byte a [ play_move_down::$12 ] reg byte a [ sid_rnd::return#2 ] reg byte a [ spawn_current::$1 ] reg byte a [ sid_rnd::return#0 ] -reg byte a [ find_line::return#0 ] -reg byte a [ remove_lines::line_ypos#0 ] -reg byte a [ remove_line::$0 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#11 ] @@ -12692,7 +12202,7 @@ reg byte a [ render_init::$5 ] FINAL ASSEMBLER -Score: 1198073 +Score: 416673 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -12726,12 +12236,12 @@ Score: 1198073 .const PLAYFIELD_COLS = $a .const current_movedown_slow = $32 .const current_movedown_fast = 5 - .label SCREEN = $400 .const COLLISION_NONE = 0 .const COLLISION_PLAYFIELD = 1 .const COLLISION_BOTTOM = 2 .const COLLISION_LEFT = 4 .const COLLISION_RIGHT = 8 + .label SCREEN = $400 .label keyboard_events_size = $13 .label current_ypos = 2 .label current_xpos = $11 @@ -12742,24 +12252,24 @@ Score: 1198073 .label current_movedown_counter = 3 .label current_piece_15 = 5 .label current_xpos_63 = 4 - .label current_piece_gfx_63 = 5 - .label current_piece_color_66 = 7 - .label current_xpos_95 = 4 - .label current_piece_gfx_86 = 5 + .label current_piece_gfx_64 = 5 + .label current_piece_color_67 = 7 + .label current_xpos_96 = 4 .label current_piece_gfx_87 = 5 - .label current_piece_color_74 = 7 + .label current_piece_gfx_88 = 5 .label current_piece_color_75 = 7 - .label current_piece_71 = 5 + .label current_piece_color_76 = 7 .label current_piece_72 = 5 .label current_piece_73 = 5 .label current_piece_74 = 5 + .label current_piece_75 = 5 //SEG2 @begin -//SEG3 [1] phi from @begin to @27 [phi:@begin->@27] -//SEG4 @27 +//SEG3 [1] phi from @begin to @25 [phi:@begin->@25] +//SEG4 @25 //SEG5 [2] call main -//SEG6 [4] phi from @27 to main [phi:@27->main] +//SEG6 [4] phi from @25 to main [phi:@25->main] jsr main -//SEG7 [3] phi from @27 to @end [phi:@27->@end] +//SEG7 [3] phi from @25 to @end [phi:@25->@end] //SEG8 @end //SEG9 main main: { @@ -12771,12 +12281,12 @@ main: { //SEG12 asm { sei } sei //SEG13 [7] call render_init - //SEG14 [332] phi from main::@21 to render_init [phi:main::@21->render_init] + //SEG14 [314] phi from main::@21 to render_init [phi:main::@21->render_init] jsr render_init //SEG15 [8] phi from main::@21 to main::@22 [phi:main::@21->main::@22] //SEG16 main::@22 //SEG17 [9] call tables_init - //SEG18 [321] phi from main::@22 to tables_init [phi:main::@22->tables_init] + //SEG18 [303] phi from main::@22 to tables_init [phi:main::@22->tables_init] jsr tables_init //SEG19 [10] phi from main::@22 to main::@23 [phi:main::@22->main::@23] //SEG20 main::@23 @@ -12789,25 +12299,25 @@ main: { //SEG26 [71] phi from main::@24 to render_playfield [phi:main::@24->render_playfield] jsr render_playfield //SEG27 main::@25 - //SEG28 [14] (byte*~) current_piece_gfx#86 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 + //SEG28 [14] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_86 + sta current_piece_gfx_87 lda current_piece_gfx+1 - sta current_piece_gfx_86+1 - //SEG29 [15] (byte~) current_piece_color#74 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 + sta current_piece_gfx_87+1 + //SEG29 [15] (byte~) current_piece_color#75 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 lda current_piece_color - sta current_piece_color_74 + sta current_piece_color_75 //SEG30 [16] call render_current //SEG31 [51] phi from main::@25 to render_current [phi:main::@25->render_current] - //SEG32 [51] phi (byte) current_piece_color#66 = (byte~) current_piece_color#74 [phi:main::@25->render_current#0] -- register_copy - //SEG33 [51] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#86 [phi:main::@25->render_current#1] -- register_copy + //SEG32 [51] phi (byte) current_piece_color#67 = (byte~) current_piece_color#75 [phi:main::@25->render_current#0] -- register_copy + //SEG33 [51] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy //SEG34 [51] phi (byte) current_xpos#63 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 lda #3 sta current_xpos_63 //SEG35 [51] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->render_current#3] -- vbuxx=vbuc1 ldx #0 jsr render_current - //SEG36 [17] (byte*~) current_piece#70 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG36 [17] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy spawn_current._3 lda PIECES,y sta current_piece @@ -12829,7 +12339,7 @@ main: { //SEG44 [18] phi (byte) current_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG45 [18] phi (byte*) current_piece#11 = (byte*~) current_piece#70 [phi:main::@25->main::@1#7] -- register_copy + //SEG45 [18] phi (byte*) current_piece#11 = (byte*~) current_piece#71 [phi:main::@25->main::@1#7] -- register_copy //SEG46 main::@1 //SEG47 main::@4 b4: @@ -12847,7 +12357,7 @@ main: { //SEG52 [21] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL //SEG53 [22] call keyboard_event_scan - //SEG54 [265] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] + //SEG54 [247] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] jsr keyboard_event_scan //SEG55 [23] phi from main::@9 to main::@27 [phi:main::@9->main::@27] //SEG56 main::@27 @@ -12904,25 +12414,25 @@ main: { //SEG83 [71] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] jsr render_playfield //SEG84 main::@32 - //SEG85 [45] (byte~) current_ypos#70 ← (byte) current_ypos#16 -- vbuxx=vbuz1 + //SEG85 [45] (byte~) current_ypos#71 ← (byte) current_ypos#16 -- vbuxx=vbuz1 ldx current_ypos - //SEG86 [46] (byte~) current_xpos#95 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG86 [46] (byte~) current_xpos#96 ← (byte) current_xpos#23 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_95 - //SEG87 [47] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + sta current_xpos_96 + //SEG87 [47] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 lda current_piece_gfx - sta current_piece_gfx_87 + sta current_piece_gfx_88 lda current_piece_gfx+1 - sta current_piece_gfx_87+1 - //SEG88 [48] (byte~) current_piece_color#75 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 + sta current_piece_gfx_88+1 + //SEG88 [48] (byte~) current_piece_color#76 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 lda current_piece_color - sta current_piece_color_75 + sta current_piece_color_76 //SEG89 [49] call render_current //SEG90 [51] phi from main::@32 to render_current [phi:main::@32->render_current] - //SEG91 [51] phi (byte) current_piece_color#66 = (byte~) current_piece_color#75 [phi:main::@32->render_current#0] -- register_copy - //SEG92 [51] phi (byte*) current_piece_gfx#63 = (byte*~) current_piece_gfx#87 [phi:main::@32->render_current#1] -- register_copy - //SEG93 [51] phi (byte) current_xpos#63 = (byte~) current_xpos#95 [phi:main::@32->render_current#2] -- register_copy - //SEG94 [51] phi (byte) current_ypos#22 = (byte~) current_ypos#70 [phi:main::@32->render_current#3] -- register_copy + //SEG91 [51] phi (byte) current_piece_color#67 = (byte~) current_piece_color#76 [phi:main::@32->render_current#0] -- register_copy + //SEG92 [51] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy + //SEG93 [51] phi (byte) current_xpos#63 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy + //SEG94 [51] phi (byte) current_ypos#22 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy jsr render_current //SEG95 main::@10 b10: @@ -12988,9 +12498,9 @@ render_current: { //SEG128 [57] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy //SEG129 render_current::@3 b3: - //SEG130 [58] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#63 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG130 [58] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i - lda (current_piece_gfx_63),y + lda (current_piece_gfx_64),y //SEG131 [59] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 inc i //SEG132 [60] 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 @@ -13002,8 +12512,8 @@ render_current: { cmp #PLAYFIELD_COLS bcs b4 //SEG135 render_current::@8 - //SEG136 [62] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#66 -- pbuz1_derefidx_vbuz2=vbuz3 - lda current_piece_color_66 + //SEG136 [62] *((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 ldy xpos sta (screen_line),y //SEG137 render_current::@4 @@ -13138,17 +12648,17 @@ play_move_rotate: { ldy current_ypos //SEG196 [93] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG197 [94] (byte*~) current_piece#74 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG197 [94] (byte*~) current_piece#75 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece - sta current_piece_74 + sta current_piece_75 lda current_piece+1 - sta current_piece_74+1 + sta current_piece_75+1 //SEG198 [95] call collision //SEG199 [103] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] //SEG200 [103] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy //SEG201 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy //SEG202 [103] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy - //SEG203 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#74 [phi:play_move_rotate::@4->collision#3] -- register_copy + //SEG203 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#75 [phi:play_move_rotate::@4->collision#3] -- register_copy jsr collision //SEG204 [96] (byte) collision::return#13 ← (byte) collision::return#14 // (byte) collision::return#13 = (byte) collision::return#14 // register copy reg byte a @@ -13354,17 +12864,17 @@ play_move_leftright: { ldy current_ypos //SEG283 [131] (byte) collision::orientation#2 ← (byte) current_orientation#18 -- vbuxx=vbuz1 ldx current_orientation - //SEG284 [132] (byte*~) current_piece#73 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG284 [132] (byte*~) current_piece#74 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece - sta current_piece_73 + sta current_piece_74 lda current_piece+1 - sta current_piece_73+1 + sta current_piece_74+1 //SEG285 [133] call collision //SEG286 [103] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] //SEG287 [103] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy //SEG288 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy //SEG289 [103] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy - //SEG290 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#73 [phi:play_move_leftright::@7->collision#3] -- register_copy + //SEG290 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#74 [phi:play_move_leftright::@7->collision#3] -- register_copy jsr collision //SEG291 [134] (byte) collision::return#12 ← (byte) collision::return#14 // (byte) collision::return#12 = (byte) collision::return#14 // register copy reg byte a @@ -13402,17 +12912,17 @@ play_move_leftright: { ldy current_ypos //SEG308 [142] (byte) collision::orientation#1 ← (byte) current_orientation#18 -- vbuxx=vbuz1 ldx current_orientation - //SEG309 [143] (byte*~) current_piece#72 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG309 [143] (byte*~) current_piece#73 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece - sta current_piece_72 + sta current_piece_73 lda current_piece+1 - sta current_piece_72+1 + sta current_piece_73+1 //SEG310 [144] call collision //SEG311 [103] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] //SEG312 [103] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy //SEG313 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy //SEG314 [103] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy - //SEG315 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_leftright::@1->collision#3] -- register_copy + //SEG315 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#73 [phi:play_move_leftright::@1->collision#3] -- register_copy jsr collision //SEG316 [145] (byte) collision::return#1 ← (byte) collision::return#14 // (byte) collision::return#1 = (byte) collision::return#14 // register copy reg byte a @@ -13447,8 +12957,8 @@ play_move_down: { //SEG331 play_move_down::@1 b1: //SEG332 [153] call keyboard_event_pressed - //SEG333 [254] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] - //SEG334 [254] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG333 [236] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG334 [236] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed @@ -13495,17 +13005,17 @@ play_move_down: { sta collision.xpos //SEG356 [166] (byte) collision::orientation#0 ← (byte) current_orientation#15 -- vbuxx=vbuz1 ldx current_orientation - //SEG357 [167] (byte*~) current_piece#71 ← (byte*) current_piece#11 -- pbuz1=pbuz2 + //SEG357 [167] (byte*~) current_piece#72 ← (byte*) current_piece#11 -- pbuz1=pbuz2 lda current_piece - sta current_piece_71 + sta current_piece_72 lda current_piece+1 - sta current_piece_71+1 + sta current_piece_72+1 //SEG358 [168] call collision //SEG359 [103] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] //SEG360 [103] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy //SEG361 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy //SEG362 [103] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy - //SEG363 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#71 [phi:play_move_down::@12->collision#3] -- register_copy + //SEG363 [103] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_down::@12->collision#3] -- register_copy jsr collision //SEG364 [169] (byte) collision::return#0 ← (byte) collision::return#14 // (byte) collision::return#0 = (byte) collision::return#14 // register copy reg byte a @@ -13529,7 +13039,7 @@ play_move_down: { //SEG377 [177] call spawn_current //SEG378 [183] phi from play_move_down::@20 to spawn_current [phi:play_move_down::@20->spawn_current] jsr spawn_current - //SEG379 [178] (byte*~) current_piece#75 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG379 [178] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy spawn_current._3 lda PIECES,y sta current_piece @@ -13544,7 +13054,7 @@ play_move_down: { //SEG384 [179] 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 lda #0 sta current_orientation - //SEG385 [179] phi (byte*) current_piece#23 = (byte*~) current_piece#75 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy + //SEG385 [179] phi (byte*) current_piece#23 = (byte*~) current_piece#76 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy //SEG386 [179] 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 sta current_ypos //SEG387 play_move_down::@7 @@ -13645,204 +13155,110 @@ sid_rnd: { } //SEG441 remove_lines remove_lines: { - .label done = 2 + .label c = 7 + .label x = 3 + .label y = 2 + .label full = 4 //SEG442 [198] phi from remove_lines to remove_lines::@1 [phi:remove_lines->remove_lines::@1] - //SEG443 [198] phi (byte) remove_lines::done#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines->remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG443 [198] 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 lda #0 - sta done - //SEG444 [198] phi from remove_lines::@3 to remove_lines::@1 [phi:remove_lines::@3->remove_lines::@1] - //SEG445 [198] phi (byte) remove_lines::done#3 = (byte) remove_lines::done#2 [phi:remove_lines::@3->remove_lines::@1#0] -- register_copy - //SEG446 remove_lines::@1 + sta y + //SEG444 [198] 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 + ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1 + //SEG445 [198] 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 + ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1 + //SEG446 [198] phi from remove_lines::@4 to remove_lines::@1 [phi:remove_lines::@4->remove_lines::@1] + //SEG447 [198] phi (byte) remove_lines::y#8 = (byte) remove_lines::y#1 [phi:remove_lines::@4->remove_lines::@1#0] -- register_copy + //SEG448 [198] phi (byte) remove_lines::w#12 = (byte) remove_lines::w#11 [phi:remove_lines::@4->remove_lines::@1#1] -- register_copy + //SEG449 [198] phi (byte) remove_lines::r#3 = (byte) remove_lines::r#1 [phi:remove_lines::@4->remove_lines::@1#2] -- register_copy + //SEG450 remove_lines::@1 b1: - //SEG447 [199] call find_line - //SEG448 [221] phi from remove_lines::@1 to find_line [phi:remove_lines::@1->find_line] - jsr find_line - //SEG449 [200] (byte) find_line::return#0 ← (byte) find_line::return#2 -- vbuaa=vbuz1 - lda find_line.return - //SEG450 remove_lines::@7 - //SEG451 [201] (byte) remove_lines::line_ypos#0 ← (byte) find_line::return#0 - // (byte) remove_lines::line_ypos#0 = (byte) find_line::return#0 // register copy reg byte a - //SEG452 [202] if((byte) remove_lines::line_ypos#0!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@2 -- vbuaa_neq_vbuc1_then_la1 - cmp #$ff - bne b2 - //SEG453 [203] phi from remove_lines::@7 to remove_lines::@3 [phi:remove_lines::@7->remove_lines::@3] - //SEG454 [203] phi (byte) remove_lines::done#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines::@7->remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG451 [199] phi from remove_lines::@1 to remove_lines::@2 [phi:remove_lines::@1->remove_lines::@2] + //SEG452 [199] 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 lda #1 - sta done - //SEG455 remove_lines::@3 - b3: - //SEG456 [204] if((byte) remove_lines::done#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@1 -- vbuz1_eq_0_then_la1 - lda done - cmp #0 - beq b1 - //SEG457 remove_lines::@return - //SEG458 [205] return - rts - //SEG459 remove_lines::@2 - b2: - //SEG460 [206] (byte) remove_line::ypos#0 ← (byte) remove_lines::line_ypos#0 -- vbuz1=vbuaa - sta remove_line.ypos - //SEG461 [207] call remove_line - jsr remove_line - //SEG462 [203] phi from remove_lines::@2 to remove_lines::@3 [phi:remove_lines::@2->remove_lines::@3] - //SEG463 [203] phi (byte) remove_lines::done#2 = (byte) remove_lines::done#3 [phi:remove_lines::@2->remove_lines::@3#0] -- register_copy - jmp b3 -} -//SEG464 remove_line -remove_line: { - .label ypos = 3 - .label x = 4 - .label y = 3 - //SEG465 [208] (byte~) remove_line::$0 ← (byte) remove_line::ypos#0 -- vbuaa=vbuz1 - lda ypos - //SEG466 [209] (byte) remove_line::i2#0 ← *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte~) remove_line::$0) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=pbuc1_derefidx_vbuaa_minus_1 - tay - lda playfield_lines_idx+1,y - tay - dey - //SEG467 [210] (byte) remove_line::i1#0 ← *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) remove_line::ypos#0) - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=pbuc1_derefidx_vbuz1_minus_1 - ldx ypos - lda playfield_lines_idx,x - tax - dex - //SEG468 [211] phi from remove_line remove_line::@3 to remove_line::@1 [phi:remove_line/remove_line::@3->remove_line::@1] - //SEG469 [211] phi (byte) remove_line::y#4 = (byte) remove_line::ypos#0 [phi:remove_line/remove_line::@3->remove_line::@1#0] -- register_copy - //SEG470 [211] phi (byte) remove_line::i2#3 = (byte) remove_line::i2#0 [phi:remove_line/remove_line::@3->remove_line::@1#1] -- register_copy - //SEG471 [211] phi (byte) remove_line::i1#3 = (byte) remove_line::i1#0 [phi:remove_line/remove_line::@3->remove_line::@1#2] -- register_copy - //SEG472 remove_line::@1 - b1: - //SEG473 [212] phi from remove_line::@1 to remove_line::@2 [phi:remove_line::@1->remove_line::@2] - //SEG474 [212] phi (byte) remove_line::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_line::@1->remove_line::@2#0] -- vbuz1=vbuc1 + sta full + //SEG453 [199] 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 lda #0 sta x - //SEG475 [212] phi (byte) remove_line::i2#2 = (byte) remove_line::i2#3 [phi:remove_line::@1->remove_line::@2#1] -- register_copy - //SEG476 [212] phi (byte) remove_line::i1#2 = (byte) remove_line::i1#3 [phi:remove_line::@1->remove_line::@2#2] -- register_copy - //SEG477 [212] phi from remove_line::@2 to remove_line::@2 [phi:remove_line::@2->remove_line::@2] - //SEG478 [212] phi (byte) remove_line::x#2 = (byte) remove_line::x#1 [phi:remove_line::@2->remove_line::@2#0] -- register_copy - //SEG479 [212] phi (byte) remove_line::i2#2 = (byte) remove_line::i2#1 [phi:remove_line::@2->remove_line::@2#1] -- register_copy - //SEG480 [212] phi (byte) remove_line::i1#2 = (byte) remove_line::i1#1 [phi:remove_line::@2->remove_line::@2#2] -- register_copy - //SEG481 remove_line::@2 + //SEG454 [199] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#12 [phi:remove_lines::@1->remove_lines::@2#2] -- register_copy + //SEG455 [199] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#3 [phi:remove_lines::@1->remove_lines::@2#3] -- register_copy + //SEG456 [199] phi from remove_lines::@3 to remove_lines::@2 [phi:remove_lines::@3->remove_lines::@2] + //SEG457 [199] phi (byte) remove_lines::full#4 = (byte) remove_lines::full#2 [phi:remove_lines::@3->remove_lines::@2#0] -- register_copy + //SEG458 [199] phi (byte) remove_lines::x#2 = (byte) remove_lines::x#1 [phi:remove_lines::@3->remove_lines::@2#1] -- register_copy + //SEG459 [199] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#1 [phi:remove_lines::@3->remove_lines::@2#2] -- register_copy + //SEG460 [199] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#1 [phi:remove_lines::@3->remove_lines::@2#3] -- register_copy + //SEG461 remove_lines::@2 b2: - //SEG482 [213] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_line::i2#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_line::i1#2) -- pbuc1_derefidx_vbuyy=pbuc1_derefidx_vbuxx - lda playfield,x - sta playfield,y - //SEG483 [214] (byte) remove_line::i2#1 ← -- (byte) remove_line::i2#2 -- vbuyy=_dec_vbuyy + //SEG462 [200] (byte) remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy + lda playfield,y + sta c + //SEG463 [201] (byte) remove_lines::r#1 ← -- (byte) remove_lines::r#2 -- vbuyy=_dec_vbuyy dey - //SEG484 [215] (byte) remove_line::i1#1 ← -- (byte) remove_line::i1#2 -- vbuxx=_dec_vbuxx + //SEG464 [202] 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 + cmp #0 + bne b3 + //SEG465 [203] phi from remove_lines::@2 to remove_lines::@3 [phi:remove_lines::@2->remove_lines::@3] + //SEG466 [203] 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 + lda #0 + sta full + //SEG467 remove_lines::@3 + b3: + //SEG468 [204] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#4) ← (byte) remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 + lda c + sta playfield,x + //SEG469 [205] (byte) remove_lines::w#1 ← -- (byte) remove_lines::w#4 -- vbuxx=_dec_vbuxx dex - //SEG485 [216] (byte) remove_line::x#1 ← ++ (byte) remove_line::x#2 -- vbuz1=_inc_vbuz1 + //SEG470 [206] (byte) remove_lines::x#1 ← ++ (byte) remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG486 [217] if((byte) remove_line::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_line::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG471 [207] 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 lda x cmp #PLAYFIELD_COLS-1+1 bne b2 - //SEG487 remove_line::@3 - //SEG488 [218] (byte) remove_line::y#1 ← -- (byte) remove_line::y#4 -- vbuz1=_dec_vbuz1 - dec y - //SEG489 [219] if((byte) remove_line::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_line::@1 -- vbuz1_neq_vbuc1_then_la1 - lda y - cmp #1 - bne b1 - //SEG490 remove_line::@return - //SEG491 [220] return - rts -} -//SEG492 find_line -find_line: { - .label i = 8 - .label y = 7 - .label return = 7 - .label i_2 = 3 - .label filled = 4 - .label i_3 = 3 - .label i_8 = 3 - .label i_10 = 3 - //SEG493 [222] phi from find_line to find_line::@1 [phi:find_line->find_line::@1] - //SEG494 [222] phi (byte) find_line::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:find_line->find_line::@1#0] -- vbuz1=vbuc1 - lda #0 - sta y - //SEG495 [222] phi (byte) find_line::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:find_line->find_line::@1#1] -- vbuz1=vbuc1 - sta i_3 - //SEG496 find_line::@1 - b1: - //SEG497 [223] phi from find_line::@1 to find_line::@2 [phi:find_line::@1->find_line::@2] - //SEG498 [223] phi (byte) find_line::filled#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:find_line::@1->find_line::@2#0] -- vbuz1=vbuc1 - lda #1 - sta filled - //SEG499 [223] phi (byte) find_line::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:find_line::@1->find_line::@2#1] -- vbuxx=vbuc1 - ldx #0 - //SEG500 [223] phi (byte) find_line::i#2 = (byte) find_line::i#3 [phi:find_line::@1->find_line::@2#2] -- register_copy - //SEG501 find_line::@2 - b2: - //SEG502 [224] (byte) find_line::i#1 ← ++ (byte) find_line::i#2 -- vbuz1=_inc_vbuz2 - ldy i_2 - iny - sty i - //SEG503 [225] if(*((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) find_line::i#2)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto find_line::@13 -- pbuc1_derefidx_vbuz1_neq_0_then_la1 - ldy i_2 - lda playfield,y - cmp #0 - bne b3 - //SEG504 [226] phi from find_line::@2 to find_line::@3 [phi:find_line::@2->find_line::@3] - //SEG505 [226] phi (byte) find_line::filled#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:find_line::@2->find_line::@3#0] -- vbuz1=vbuc1 - lda #0 - sta filled - //SEG506 find_line::@3 - b3: - //SEG507 [227] (byte) find_line::x#1 ← ++ (byte) find_line::x#2 -- vbuxx=_inc_vbuxx - inx - //SEG508 [228] if((byte) find_line::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 find_line::@12 -- vbuxx_neq_vbuc1_then_la1 - cpx #PLAYFIELD_COLS-1+1 - bne b12 - //SEG509 find_line::@6 - //SEG510 [229] if((byte) find_line::filled#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto find_line::@4 -- vbuz1_neq_vbuc1_then_la1 - lda filled + //SEG472 remove_lines::@9 + //SEG473 [208] 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 + lda full cmp #1 bne b4 - //SEG511 [230] phi from find_line::@6 to find_line::@return [phi:find_line::@6->find_line::@return] - //SEG512 [230] phi (byte) find_line::return#2 = (byte) find_line::y#8 [phi:find_line::@6->find_line::@return#0] -- register_copy - //SEG513 find_line::@return - breturn: - //SEG514 [231] return - rts - //SEG515 find_line::@4 + //SEG474 remove_lines::@10 + //SEG475 [209] (byte) remove_lines::w#2 ← (byte) remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + txa + clc + adc #PLAYFIELD_COLS + tax + //SEG476 [210] phi from remove_lines::@10 remove_lines::@9 to remove_lines::@4 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4] + //SEG477 [210] 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 remove_lines::@4 b4: - //SEG516 [232] (byte) find_line::y#1 ← ++ (byte) find_line::y#8 -- vbuz1=_inc_vbuz1 + //SEG479 [211] (byte) remove_lines::y#1 ← ++ (byte) remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG517 [233] if((byte) find_line::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 find_line::@11 -- vbuz1_neq_vbuc1_then_la1 + //SEG480 [212] 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 lda y cmp #PLAYFIELD_LINES-1+1 - bne b11 - //SEG518 [230] phi from find_line::@4 to find_line::@return [phi:find_line::@4->find_line::@return] - //SEG519 [230] phi (byte) find_line::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:find_line::@4->find_line::@return#0] -- vbuz1=vbuc1 - lda #$ff - sta return - jmp breturn - //SEG520 find_line::@11 - b11: - //SEG521 [234] (byte~) find_line::i#8 ← (byte) find_line::i#1 -- vbuz1=vbuz2 - lda i - sta i_8 - //SEG522 [222] phi from find_line::@11 to find_line::@1 [phi:find_line::@11->find_line::@1] - //SEG523 [222] phi (byte) find_line::y#8 = (byte) find_line::y#1 [phi:find_line::@11->find_line::@1#0] -- register_copy - //SEG524 [222] phi (byte) find_line::i#3 = (byte~) find_line::i#8 [phi:find_line::@11->find_line::@1#1] -- register_copy - jmp b1 - //SEG525 find_line::@12 - b12: - //SEG526 [235] (byte~) find_line::i#10 ← (byte) find_line::i#1 -- vbuz1=vbuz2 - lda i - sta i_10 - //SEG527 [223] phi from find_line::@12 to find_line::@2 [phi:find_line::@12->find_line::@2] - //SEG528 [223] phi (byte) find_line::filled#4 = (byte) find_line::filled#2 [phi:find_line::@12->find_line::@2#0] -- register_copy - //SEG529 [223] phi (byte) find_line::x#2 = (byte) find_line::x#1 [phi:find_line::@12->find_line::@2#1] -- register_copy - //SEG530 [223] phi (byte) find_line::i#2 = (byte~) find_line::i#10 [phi:find_line::@12->find_line::@2#2] -- register_copy - jmp b2 - //SEG531 [236] phi from find_line::@2 to find_line::@13 [phi:find_line::@2->find_line::@13] - //SEG532 find_line::@13 - //SEG533 [226] phi from find_line::@13 to find_line::@3 [phi:find_line::@13->find_line::@3] - //SEG534 [226] phi (byte) find_line::filled#2 = (byte) find_line::filled#4 [phi:find_line::@13->find_line::@3#0] -- register_copy + bne b1 + //SEG481 [213] phi from remove_lines::@4 remove_lines::@6 to remove_lines::@5 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5] + //SEG482 [213] 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 remove_lines::@5 + b5: + //SEG484 [214] if((byte) remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 + cpx #$ff + bne b6 + //SEG485 remove_lines::@return + //SEG486 [215] return + rts + //SEG487 remove_lines::@6 + b6: + //SEG488 [216] *((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 + lda #0 + sta playfield,x + //SEG489 [217] (byte) remove_lines::w#3 ← -- (byte) remove_lines::w#6 -- vbuxx=_dec_vbuxx + dex + jmp b5 + //SEG490 [218] phi from remove_lines::@2 to remove_lines::@17 [phi:remove_lines::@2->remove_lines::@17] + //SEG491 remove_lines::@17 + //SEG492 [203] phi from remove_lines::@17 to remove_lines::@3 [phi:remove_lines::@17->remove_lines::@3] + //SEG493 [203] phi (byte) remove_lines::full#2 = (byte) remove_lines::full#4 [phi:remove_lines::@17->remove_lines::@3#0] -- register_copy } -//SEG535 lock_current +//SEG494 lock_current lock_current: { .label ypos2 = 2 .label playfield_line = 5 @@ -13853,376 +13269,376 @@ lock_current: { .label i_3 = 4 .label i_7 = 4 .label i_9 = 4 - //SEG536 [237] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG495 [219] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl ypos2 - //SEG537 [238] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] - //SEG538 [238] 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 + //SEG496 [220] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] + //SEG497 [220] phi (byte) lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG539 [238] 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 + //SEG498 [220] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 sta i_3 - //SEG540 [238] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy - //SEG541 lock_current::@1 + //SEG499 [220] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy + //SEG500 lock_current::@1 b1: - //SEG542 [239] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG501 [221] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG543 [240] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG502 [222] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG544 [241] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] - //SEG545 [241] 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 + //SEG503 [223] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] + //SEG504 [223] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG546 [241] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy - //SEG547 [241] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy - //SEG548 lock_current::@2 + //SEG505 [223] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy + //SEG506 [223] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy + //SEG507 lock_current::@2 b2: - //SEG549 [242] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG508 [224] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG550 [243] 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 + //SEG509 [225] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 - //SEG551 lock_current::@4 - //SEG552 [244] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG510 lock_current::@4 + //SEG511 [226] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_color ldy col sta (playfield_line),y - //SEG553 lock_current::@3 + //SEG512 lock_current::@3 b3: - //SEG554 [245] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG513 [227] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG555 [246] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG514 [228] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG556 [247] 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 + //SEG515 [229] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b8 - //SEG557 lock_current::@5 - //SEG558 [248] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG516 lock_current::@5 + //SEG517 [230] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG559 [249] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG518 [231] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG560 [250] 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 + //SEG519 [232] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 - //SEG561 lock_current::@return - //SEG562 [251] return + //SEG520 lock_current::@return + //SEG521 [233] return rts - //SEG563 lock_current::@7 + //SEG522 lock_current::@7 b7: - //SEG564 [252] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG523 [234] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG565 [238] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] - //SEG566 [238] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy - //SEG567 [238] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy - //SEG568 [238] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy + //SEG524 [220] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] + //SEG525 [220] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy + //SEG526 [220] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy + //SEG527 [220] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy jmp b1 - //SEG569 lock_current::@8 + //SEG528 lock_current::@8 b8: - //SEG570 [253] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG529 [235] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG571 [241] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] - //SEG572 [241] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy - //SEG573 [241] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy - //SEG574 [241] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy + //SEG530 [223] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] + //SEG531 [223] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy + //SEG532 [223] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy + //SEG533 [223] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy jmp b2 } -//SEG575 keyboard_event_pressed +//SEG534 keyboard_event_pressed keyboard_event_pressed: { .label row_bits = 7 .label keycode = 4 - //SEG576 [255] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 + //SEG535 [237] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 lda keycode lsr lsr lsr - //SEG577 [256] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG536 [238] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda keyboard_scan_values,y sta row_bits - //SEG578 [257] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 + //SEG537 [239] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 lda #7 and keycode - //SEG579 [258] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa + //SEG538 [240] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa tay lda keyboard_matrix_col_bitmask,y and row_bits - //SEG580 keyboard_event_pressed::@return - //SEG581 [259] return + //SEG539 keyboard_event_pressed::@return + //SEG540 [241] return rts } -//SEG582 keyboard_event_get +//SEG541 keyboard_event_get keyboard_event_get: { - //SEG583 [260] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + //SEG542 [242] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq b1 - //SEG584 keyboard_event_get::@3 - //SEG585 [261] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG543 keyboard_event_get::@3 + //SEG544 [243] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG586 [262] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG545 [244] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 ldy keyboard_events_size lda keyboard_events,y - //SEG587 [263] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] - //SEG588 [263] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG589 [263] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy + //SEG546 [245] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG547 [245] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG548 [245] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG590 [263] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG549 [245] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] b1: - //SEG591 [263] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG592 [263] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 + //SEG550 [245] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG551 [245] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 lda #$ff - //SEG593 keyboard_event_get::@return + //SEG552 keyboard_event_get::@return breturn: - //SEG594 [264] return + //SEG553 [246] return rts } -//SEG595 keyboard_event_scan +//SEG554 keyboard_event_scan keyboard_event_scan: { .label row_scan = 8 .label keycode = 7 .label row = 4 - //SEG596 [266] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] - //SEG597 [266] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG598 [266] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 + //SEG555 [248] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG556 [248] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG557 [248] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG599 [266] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 + //SEG558 [248] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 sta row - //SEG600 [266] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] - //SEG601 [266] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG602 [266] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy - //SEG603 [266] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy - //SEG604 keyboard_event_scan::@1 + //SEG559 [248] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG560 [248] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG561 [248] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG562 [248] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy + //SEG563 keyboard_event_scan::@1 b1: - //SEG605 [267] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG564 [249] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG606 [268] call keyboard_matrix_read + //SEG565 [250] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG607 [269] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG566 [251] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 // (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#0 // register copy reg byte a - //SEG608 keyboard_event_scan::@25 - //SEG609 [270] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG567 keyboard_event_scan::@25 + //SEG568 [252] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG610 [271] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG569 [253] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 ldy row cmp keyboard_scan_values,y bne b2 - //SEG611 keyboard_event_scan::@13 - //SEG612 [272] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 + //SEG570 keyboard_event_scan::@13 + //SEG571 [254] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG613 [273] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] - //SEG614 [273] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG615 [273] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy - //SEG616 keyboard_event_scan::@3 + //SEG572 [255] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] + //SEG573 [255] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG574 [255] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy + //SEG575 keyboard_event_scan::@3 b3: - //SEG617 [274] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG576 [256] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG618 [275] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG577 [257] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1 - //SEG619 [276] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] - //SEG620 keyboard_event_scan::@20 - //SEG621 [277] call keyboard_event_pressed - //SEG622 [254] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] - //SEG623 [254] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG578 [258] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG579 keyboard_event_scan::@20 + //SEG580 [259] call keyboard_event_pressed + //SEG581 [236] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG582 [236] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG624 [278] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG583 [260] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG625 keyboard_event_scan::@26 - //SEG626 [279] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG584 keyboard_event_scan::@26 + //SEG585 [261] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 // (byte~) keyboard_event_scan::$14 = (byte) keyboard_event_pressed::return#0 // register copy reg byte a - //SEG627 [280] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 + //SEG586 [262] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG628 [281] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] - //SEG629 keyboard_event_scan::@21 - //SEG630 [282] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] - //SEG631 keyboard_event_scan::@9 - //SEG632 [283] call keyboard_event_pressed - //SEG633 [254] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] - //SEG634 [254] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG587 [263] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG588 keyboard_event_scan::@21 + //SEG589 [264] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG590 keyboard_event_scan::@9 + //SEG591 [265] call keyboard_event_pressed + //SEG592 [236] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG593 [236] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG635 [284] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG594 [266] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG636 keyboard_event_scan::@27 - //SEG637 [285] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG595 keyboard_event_scan::@27 + //SEG596 [267] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 // (byte~) keyboard_event_scan::$18 = (byte) keyboard_event_pressed::return#1 // register copy reg byte a - //SEG638 [286] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 + //SEG597 [268] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG639 [287] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] - //SEG640 keyboard_event_scan::@22 - //SEG641 [288] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] - //SEG642 keyboard_event_scan::@10 - //SEG643 [289] call keyboard_event_pressed - //SEG644 [254] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] - //SEG645 [254] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG598 [269] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] + //SEG599 keyboard_event_scan::@22 + //SEG600 [270] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] + //SEG601 keyboard_event_scan::@10 + //SEG602 [271] call keyboard_event_pressed + //SEG603 [236] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG604 [236] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG646 [290] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG605 [272] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG647 keyboard_event_scan::@28 - //SEG648 [291] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG606 keyboard_event_scan::@28 + //SEG607 [273] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 // (byte~) keyboard_event_scan::$22 = (byte) keyboard_event_pressed::return#2 // register copy reg byte a - //SEG649 [292] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 + //SEG608 [274] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG650 [293] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] - //SEG651 keyboard_event_scan::@23 - //SEG652 [294] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] - //SEG653 keyboard_event_scan::@11 - //SEG654 [295] call keyboard_event_pressed - //SEG655 [254] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] - //SEG656 [254] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG609 [275] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] + //SEG610 keyboard_event_scan::@23 + //SEG611 [276] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] + //SEG612 keyboard_event_scan::@11 + //SEG613 [277] call keyboard_event_pressed + //SEG614 [236] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG615 [236] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG657 [296] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG616 [278] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#10 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG658 keyboard_event_scan::@29 - //SEG659 [297] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + //SEG617 keyboard_event_scan::@29 + //SEG618 [279] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 // (byte~) keyboard_event_scan::$26 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a - //SEG660 [298] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 + //SEG619 [280] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 cmp #0 - //SEG661 [299] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] - //SEG662 keyboard_event_scan::@24 - //SEG663 keyboard_event_scan::@return - //SEG664 [300] return + //SEG620 [281] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] + //SEG621 keyboard_event_scan::@24 + //SEG622 keyboard_event_scan::@return + //SEG623 [282] return rts - //SEG665 [301] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG624 [283] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b2: - //SEG666 [301] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG667 [301] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy - //SEG668 [301] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 + //SEG625 [283] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG626 [283] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG627 [283] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 ldx #0 - //SEG669 [301] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] - //SEG670 [301] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG671 [301] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy - //SEG672 [301] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy - //SEG673 keyboard_event_scan::@4 + //SEG628 [283] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG629 [283] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG630 [283] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG631 [283] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy + //SEG632 keyboard_event_scan::@4 b4: - //SEG674 [302] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 + //SEG633 [284] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 lda row_scan ldy row eor keyboard_scan_values,y - //SEG675 [303] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx + //SEG634 [285] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx and keyboard_matrix_col_bitmask,x - //SEG676 [304] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 + //SEG635 [286] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG677 keyboard_event_scan::@15 - //SEG678 [305] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG636 keyboard_event_scan::@15 + //SEG637 [287] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5 - //SEG679 keyboard_event_scan::@16 - //SEG680 [306] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx + //SEG638 keyboard_event_scan::@16 + //SEG639 [288] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx lda keyboard_matrix_col_bitmask,x and row_scan - //SEG681 [307] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 + //SEG640 [289] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 - //SEG682 keyboard_event_scan::@17 - //SEG683 [308] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG641 keyboard_event_scan::@17 + //SEG642 [290] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG684 [309] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG643 [291] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG685 [310] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] - //SEG686 [310] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy - //SEG687 keyboard_event_scan::@5 + //SEG644 [292] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] + //SEG645 [292] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG646 keyboard_event_scan::@5 b5: - //SEG688 [311] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG647 [293] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG689 [312] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG648 [294] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG690 [313] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG649 [295] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b4 - //SEG691 keyboard_event_scan::@19 - //SEG692 [314] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG650 keyboard_event_scan::@19 + //SEG651 [296] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3 - //SEG693 keyboard_event_scan::@7 + //SEG652 keyboard_event_scan::@7 b7: - //SEG694 [315] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 + //SEG653 [297] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 lda #$40 ora keycode - //SEG695 [316] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG654 [298] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa ldy keyboard_events_size sta keyboard_events,y - //SEG696 [317] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG655 [299] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5 } -//SEG697 keyboard_matrix_read +//SEG656 keyboard_matrix_read keyboard_matrix_read: { - //SEG698 [318] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx + //SEG657 [300] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A - //SEG699 [319] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG658 [301] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff - //SEG700 keyboard_matrix_read::@return - //SEG701 [320] return + //SEG659 keyboard_matrix_read::@return + //SEG660 [302] return rts } -//SEG702 tables_init +//SEG661 tables_init tables_init: { .label pli = 5 .label idx = 2 - //SEG703 [322] phi from tables_init to tables_init::@1 [phi:tables_init->tables_init::@1] - //SEG704 [322] 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 + //SEG662 [304] phi from tables_init to tables_init::@1 [phi:tables_init->tables_init::@1] + //SEG663 [304] 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 lda #0 sta idx - //SEG705 [322] 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 + //SEG664 [304] 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 lda #playfield sta pli+1 - //SEG706 [322] 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 + //SEG665 [304] 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 ldx #0 - //SEG707 [322] phi from tables_init::@1 to tables_init::@1 [phi:tables_init::@1->tables_init::@1] - //SEG708 [322] phi (byte) tables_init::idx#2 = (byte) tables_init::idx#1 [phi:tables_init::@1->tables_init::@1#0] -- register_copy - //SEG709 [322] phi (byte*) tables_init::pli#2 = (byte*) tables_init::pli#1 [phi:tables_init::@1->tables_init::@1#1] -- register_copy - //SEG710 [322] phi (byte) tables_init::j#2 = (byte) tables_init::j#1 [phi:tables_init::@1->tables_init::@1#2] -- register_copy - //SEG711 tables_init::@1 + //SEG666 [304] phi from tables_init::@1 to tables_init::@1 [phi:tables_init::@1->tables_init::@1] + //SEG667 [304] phi (byte) tables_init::idx#2 = (byte) tables_init::idx#1 [phi:tables_init::@1->tables_init::@1#0] -- register_copy + //SEG668 [304] phi (byte*) tables_init::pli#2 = (byte*) tables_init::pli#1 [phi:tables_init::@1->tables_init::@1#1] -- register_copy + //SEG669 [304] phi (byte) tables_init::j#2 = (byte) tables_init::j#1 [phi:tables_init::@1->tables_init::@1#2] -- register_copy + //SEG670 tables_init::@1 b1: - //SEG712 [323] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG671 [305] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG713 [324] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG672 [306] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG714 [325] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG673 [307] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda idx sta playfield_lines_idx,x - //SEG715 [326] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG674 [308] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -14230,75 +13646,75 @@ tables_init: { bcc !+ inc pli+1 !: - //SEG716 [327] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG675 [309] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG717 [328] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 -- vbuxx=_inc_vbuxx + //SEG676 [310] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG718 [329] 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 + //SEG677 [311] 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 cpx #PLAYFIELD_LINES-1+1 bne b1 - //SEG719 tables_init::@2 - //SEG720 [330] *((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 + //SEG678 tables_init::@2 + //SEG679 [312] *((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 - //SEG721 tables_init::@return - //SEG722 [331] return + //SEG680 tables_init::@return + //SEG681 [313] return rts } -//SEG723 render_init +//SEG682 render_init render_init: { .label _10 = $c .label li = 5 .label line = 5 .label l = 2 - //SEG724 [333] call fill - //SEG725 [352] phi from render_init to fill [phi:render_init->fill] - //SEG726 [352] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:render_init->fill#0] -- vbuxx=vbuc1 + //SEG683 [315] call fill + //SEG684 [334] phi from render_init to fill [phi:render_init->fill] + //SEG685 [334] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:render_init->fill#0] -- vbuxx=vbuc1 ldx #$a0 - //SEG727 [352] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:render_init->fill#1] -- pbuz1=pbuc1 + //SEG686 [334] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:render_init->fill#1] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG728 [334] phi from render_init to render_init::@7 [phi:render_init->render_init::@7] - //SEG729 render_init::@7 - //SEG730 [335] call fill - //SEG731 [352] phi from render_init::@7 to fill [phi:render_init::@7->fill] - //SEG732 [352] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:render_init::@7->fill#0] -- vbuxx=vbuc1 + //SEG687 [316] phi from render_init to render_init::@7 [phi:render_init->render_init::@7] + //SEG688 render_init::@7 + //SEG689 [317] call fill + //SEG690 [334] phi from render_init::@7 to fill [phi:render_init::@7->fill] + //SEG691 [334] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:render_init::@7->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG733 [352] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:render_init::@7->fill#1] -- pbuz1=pbuc1 + //SEG692 [334] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:render_init::@7->fill#1] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG734 [336] phi from render_init::@7 to render_init::@1 [phi:render_init::@7->render_init::@1] - //SEG735 [336] phi (byte*) render_init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:render_init::@7->render_init::@1#0] -- pbuz1=pbuc1 + //SEG693 [318] phi from render_init::@7 to render_init::@1 [phi:render_init::@7->render_init::@1] + //SEG694 [318] phi (byte*) render_init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:render_init::@7->render_init::@1#0] -- pbuz1=pbuc1 lda #COLS+$28+$f sta li+1 - //SEG736 [336] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@7->render_init::@1#1] -- vbuxx=vbuc1 + //SEG695 [318] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@7->render_init::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG737 [336] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] - //SEG738 [336] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG739 [336] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy - //SEG740 render_init::@1 + //SEG696 [318] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG697 [318] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG698 [318] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG699 render_init::@1 b1: - //SEG741 [337] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG700 [319] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG742 [338] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG701 [320] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li sta screen_lines,y lda li+1 sta screen_lines+1,y - //SEG743 [339] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG702 [321] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li clc adc #$28 @@ -14306,33 +13722,33 @@ render_init: { bcc !+ inc li+1 !: - //SEG744 [340] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx + //SEG703 [322] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG745 [341] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG704 [323] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES+2+1 bne b1 - //SEG746 [342] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] - //SEG747 [342] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 + //SEG705 [324] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] + //SEG706 [324] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG748 [342] phi (byte*) render_init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:render_init::@1->render_init::@2#1] -- pbuz1=pbuc1 + //SEG707 [324] phi (byte*) render_init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:render_init::@1->render_init::@2#1] -- pbuz1=pbuc1 lda #COLS+$e sta line+1 - //SEG749 [342] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] - //SEG750 [342] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy - //SEG751 [342] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy - //SEG752 render_init::@2 + //SEG708 [324] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] + //SEG709 [324] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy + //SEG710 [324] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy + //SEG711 render_init::@2 b2: - //SEG753 [343] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] - //SEG754 [343] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuxx=vbuc1 + //SEG712 [325] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] + //SEG713 [325] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG755 [343] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] - //SEG756 [343] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy - //SEG757 render_init::@3 + //SEG714 [325] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] + //SEG715 [325] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy + //SEG716 render_init::@3 b3: - //SEG758 [344] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuxx + //SEG717 [326] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuxx txa clc adc line @@ -14340,17 +13756,17 @@ render_init: { lda #0 adc line+1 sta _10+1 - //SEG759 [345] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG718 [327] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (_10),y - //SEG760 [346] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuxx=_inc_vbuxx + //SEG719 [328] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG761 [347] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG720 [329] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS+1+1 bne b3 - //SEG762 render_init::@5 - //SEG763 [348] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG721 render_init::@5 + //SEG722 [330] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -14358,21 +13774,21 @@ render_init: { bcc !+ inc line+1 !: - //SEG764 [349] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 + //SEG723 [331] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG765 [350] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG724 [332] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES+1+1 bne b2 - //SEG766 render_init::@return - //SEG767 [351] return + //SEG725 render_init::@return + //SEG726 [333] return rts } -//SEG768 fill +//SEG727 fill fill: { .label end = $c .label addr = 5 - //SEG769 [353] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG728 [335] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -14380,42 +13796,42 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG770 [354] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] - //SEG771 [354] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy - //SEG772 fill::@1 + //SEG729 [336] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG730 [336] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG731 fill::@1 b1: - //SEG773 [355] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG732 [337] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG774 [356] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG733 [338] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG775 [357] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG734 [339] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 lda addr+1 cmp end+1 bne b1 lda addr cmp end bne b1 - //SEG776 fill::@return - //SEG777 [358] return + //SEG735 fill::@return + //SEG736 [340] return rts } -//SEG778 sid_rnd_init +//SEG737 sid_rnd_init sid_rnd_init: { - //SEG779 [359] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + //SEG738 [341] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG780 [360] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG739 [342] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL - //SEG781 sid_rnd_init::@return - //SEG782 [361] return + //SEG740 sid_rnd_init::@return + //SEG741 [343] return rts } keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f diff --git a/src/test/ref/examples/tetris/tetris.sym b/src/test/ref/examples/tetris/tetris.sym index 3d686a78a..48089494a 100644 --- a/src/test/ref/examples/tetris/tetris.sym +++ b/src/test/ref/examples/tetris/tetris.sym @@ -1,4 +1,4 @@ -(label) @27 +(label) @25 (label) @begin (label) @end (byte) BLACK @@ -165,30 +165,30 @@ (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#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#71 current_piece zp ZP_WORD:12 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 zp ZP_WORD:12 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_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#66 current_piece_color#66 zp ZP_BYTE:7 53.368421052631575 -(byte~) current_piece_color#74 current_piece_color#74 zp ZP_BYTE:7 4.0 -(byte~) current_piece_color#75 current_piece_color#75 zp ZP_BYTE:7 22.0 +(byte) current_piece_color#67 current_piece_color#67 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#63 current_piece_gfx#63 zp ZP_WORD:5 53.368421052631575 +(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#86 current_piece_gfx#86 zp ZP_WORD:5 2.0 -(byte*~) current_piece_gfx#87 current_piece_gfx#87 zp ZP_WORD:5 11.0 +(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 @@ -197,14 +197,14 @@ (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#95 current_xpos#95 zp ZP_BYTE:4 7.333333333333333 +(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#70 reg byte x 5.5 +(byte~) current_ypos#71 reg byte x 5.5 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (label) fill::@1 (label) fill::@return @@ -218,34 +218,6 @@ (byte*) fill::start (byte) fill::val (byte) fill::val#3 reg byte x 1.8333333333333333 -(byte()) find_line() -(label) find_line::@1 -(label) find_line::@11 -(label) find_line::@12 -(label) find_line::@13 -(label) find_line::@2 -(label) find_line::@3 -(label) find_line::@4 -(label) find_line::@6 -(label) find_line::@return -(byte) find_line::filled -(byte) find_line::filled#2 filled zp ZP_BYTE:4 5250.75 -(byte) find_line::filled#4 filled zp ZP_BYTE:4 5000.5 -(byte) find_line::i -(byte) find_line::i#1 i zp ZP_BYTE:8 2333.6666666666665 -(byte~) find_line::i#10 i#10 zp ZP_BYTE:3 20002.0 -(byte) find_line::i#2 i#2 zp ZP_BYTE:3 15502.0 -(byte) find_line::i#3 i#3 zp ZP_BYTE:3 2002.0 -(byte~) find_line::i#8 i#8 zp ZP_BYTE:3 2002.0 -(byte) find_line::return -(byte) find_line::return#0 reg byte a 202.0 -(byte) find_line::return#2 return zp ZP_BYTE:7 367.33333333333337 -(byte) find_line::x -(byte) find_line::x#1 reg byte x 10001.0 -(byte) find_line::x#2 reg byte x 4000.4 -(byte) find_line::y -(byte) find_line::y#1 y zp ZP_BYTE:7 1001.0 -(byte) find_line::y#8 y zp ZP_BYTE:7 300.29999999999995 (byte()) keyboard_event_get() (label) keyboard_event_get::@3 (label) keyboard_event_get::@return @@ -473,41 +445,40 @@ (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_line((byte) remove_line::ypos) -(byte~) remove_line::$0 reg byte a 4.0 -(label) remove_line::@1 -(label) remove_line::@2 -(label) remove_line::@3 -(label) remove_line::@return -(byte) remove_line::i1 -(byte) remove_line::i1#0 reg byte x 4.0 -(byte) remove_line::i1#1 reg byte x 4200.6 -(byte) remove_line::i1#2 reg byte x 10334.666666666666 -(byte) remove_line::i1#3 reg byte x 2004.0 -(byte) remove_line::i2 -(byte) remove_line::i2#0 reg byte y 2.0 -(byte) remove_line::i2#1 reg byte y 3500.5 -(byte) remove_line::i2#2 reg byte y 15502.0 -(byte) remove_line::i2#3 reg byte y 2004.0 -(byte) remove_line::x -(byte) remove_line::x#1 x zp ZP_BYTE:4 15001.5 -(byte) remove_line::x#2 x zp ZP_BYTE:4 5000.5 -(byte) remove_line::y -(byte) remove_line::y#1 y zp ZP_BYTE:3 1501.5 -(byte) remove_line::y#4 y zp ZP_BYTE:3 286.2857142857143 -(byte) remove_line::ypos -(byte) remove_line::ypos#0 ypos zp ZP_BYTE:3 26.75 (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::@7 +(label) remove_lines::@4 +(label) remove_lines::@5 +(label) remove_lines::@6 +(label) remove_lines::@9 (label) remove_lines::@return -(byte) remove_lines::done -(byte) remove_lines::done#2 done zp ZP_BYTE:2 151.5 -(byte) remove_lines::done#3 done zp ZP_BYTE:2 28.857142857142858 -(byte) remove_lines::line_ypos -(byte) remove_lines::line_ypos#0 reg byte a 151.5 +(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 @@ -619,13 +590,13 @@ (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::done#3 remove_lines::done#2 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_line::y#4 remove_line::ypos#0 remove_line::y#1 find_line::i#2 find_line::i#3 find_line::i#8 find_line::i#10 lock_current::l#6 lock_current::l#1 ] -reg byte x [ current_ypos#22 current_ypos#70 ] -zp ZP_BYTE:4 [ current_xpos#63 current_xpos#95 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 remove_line::x#2 remove_line::x#1 find_line::filled#4 find_line::filled#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#63 current_piece_gfx#86 current_piece_gfx#87 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#71 current_piece#72 current_piece#73 current_piece#74 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#66 current_piece_color#74 current_piece_color#75 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 find_line::return#2 find_line::y#8 find_line::y#1 lock_current::col#2 lock_current::col#0 lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 keyboard_event_pressed::row_bits#0 ] -zp ZP_BYTE:8 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 find_line::i#1 lock_current::i#1 keyboard_event_scan::row_scan#0 ] +zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 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 ] @@ -638,16 +609,15 @@ reg byte x [ collision::c#2 collision::c#1 ] reg byte a [ collision::return#14 ] reg byte a [ play_move_leftright::return#2 ] reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] -zp ZP_WORD:12 [ current_piece#23 current_piece#75 current_piece#11 current_piece#13 current_piece#70 render_init::$10 fill::end#0 ] +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 x [ remove_line::i1#2 remove_line::i1#3 remove_line::i1#0 remove_line::i1#1 ] -reg byte y [ remove_line::i2#2 remove_line::i2#3 remove_line::i2#0 remove_line::i2#1 ] -reg byte x [ find_line::x#2 find_line::x#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 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] @@ -689,9 +659,6 @@ reg byte a [ play_move_down::$12 ] reg byte a [ sid_rnd::return#2 ] reg byte a [ spawn_current::$1 ] reg byte a [ sid_rnd::return#0 ] -reg byte a [ find_line::return#0 ] -reg byte a [ remove_lines::line_ypos#0 ] -reg byte a [ remove_line::$0 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#11 ]