diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index 5665e0b26..e8a9824ae 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -49,7 +49,7 @@ public class TestPrograms { compileAndCompare("examples/tetris/tetris"); } - /* +/* @Test public void testVarInitProblem() throws IOException, URISyntaxException { compileAndCompare("var-init-problem"); @@ -64,8 +64,8 @@ public class TestPrograms { public void testTetrisNullPointer() throws IOException, URISyntaxException { compileAndCompare("tetris-npe"); } - */ +*/ @Test public void testFastMultiply8() throws IOException, URISyntaxException { compileAndCompare("examples/fastmultiply/fastmultiply8.kc"); diff --git a/src/test/kc/examples/tetris/tetris.kc b/src/test/kc/examples/tetris/tetris.kc index 247f6011b..04c79324f 100644 --- a/src/test/kc/examples/tetris/tetris.kc +++ b/src/test/kc/examples/tetris/tetris.kc @@ -60,8 +60,9 @@ void main() { keyboard_event_scan(); byte key_event = keyboard_event_get(); byte render = 0; - render += play_movedown(key_event); - render += play_moveother(key_event); + render += play_move_down(key_event); + render += play_move_leftright(key_event); + render += play_move_rotate(key_event); if(render!=0) { (*BORDERCOL)++; render_playfield(); @@ -74,7 +75,7 @@ void main() { // Move down the current piece // Return non-zero if a render is needed -byte play_movedown(byte key_event) { +byte play_move_down(byte key_event) { // Handle moving down current piece ++current_movedown_counter; byte movedown = 0; @@ -94,7 +95,7 @@ byte play_movedown(byte key_event) { } // Attempt movedown if(movedown!=0) { - if(collision(current_ypos+1, current_xpos)==COLLISION_NONE) { + if(collision(current_xpos,current_ypos+1,current_piece_orientation)==COLLISION_NONE) { // Move current piece down current_ypos++; } else { @@ -109,6 +110,44 @@ byte play_movedown(byte key_event) { return 0; } +// Move left/right or rotate the current piece +// Return non-zero if a render is needed +byte play_move_leftright(byte key_event) { + // Handle keyboard events + if(key_event==KEY_COMMA) { + if(collision(current_xpos-1,current_ypos,current_piece_orientation)==COLLISION_NONE) { + current_xpos--; + return 1; + } + } else if(key_event==KEY_DOT) { + if(collision(current_xpos+1,current_ypos,current_piece_orientation)==COLLISION_NONE) { + current_xpos++; + return 1; + } + } + return 0; +} + +// Rotate the current piece based on key-presses +// Return non-zero if a render is needed +byte play_move_rotate(byte key_event) { + // Handle keyboard events + byte orientation = $80; + if(key_event==KEY_Z) { + orientation = (current_piece_orientation-$10)&$3f; + } else if(key_event==KEY_X) { + orientation = (current_piece_orientation+$10)&$3f; + } else { + return 0; + } + if((collision(current_xpos, current_ypos, orientation) & (COLLISION_LEFT|COLLISION_RIGHT)) == 0) { + current_piece_orientation = orientation; + current_piece_gfx = current_piece + current_piece_orientation; + return 1; + } + return 0; +} + // No collision const byte COLLISION_NONE = 0; // Playfield piece collision (cell on top of other cell on the playfield) @@ -122,18 +161,19 @@ const byte COLLISION_RIGHT = 8; // Test if there is a collision between the current piece moved to (x, y) and anything on the playfield or the playfield boundaries // Returns information about the type of the collision detected -byte collision(byte ypos, byte xpos) { +byte collision(byte xpos, byte ypos, byte orientation) { + byte* piece_gfx = current_piece + orientation; byte i = 0; - for(byte l:0..3) { - byte line = ypos + l; - byte* playfield_line = playfield_lines[line<<1]; + byte ypos2 = ypos<<1; + for(byte l:0..3) { + byte* playfield_line = playfield_lines[ypos2]; + byte col = xpos; for(byte c:0..3) { - if(current_piece_gfx[i++]!=0) { - if(line>=PLAYFIELD_LINES) { + if(piece_gfx[i++]!=0) { + if(ypos2>=2*PLAYFIELD_LINES) { // Below the playfield bottom return COLLISION_BOTTOM; } - byte col = xpos+c; if((col&$80)!=0) { // Beyond left side of the playfield return COLLISION_LEFT; @@ -147,7 +187,9 @@ byte collision(byte ypos, byte xpos) { return COLLISION_PLAYFIELD; } } + col++; } + ypos2 += 2; } return COLLISION_NONE; } @@ -178,36 +220,6 @@ void spawn_current() { current_ypos = 0; } -// Move left/right or rotate the current piece -// Return non-zero if a render is needed -byte play_moveother(byte key_event) { - byte render = 0; - // Handle other keyboard events - if((key_event&$80)==0) { - // New keyboard event - if(key_event==KEY_COMMA) { - if(collision(current_ypos,current_xpos-1)==COLLISION_NONE) { - current_xpos--; - render++; - } - } else if(key_event==KEY_DOT) { - if(collision(current_ypos,current_xpos+1)==COLLISION_NONE) { - current_xpos++; - render++; - } - } else if(key_event==KEY_Z) { - current_piece_orientation = (current_piece_orientation-$10)&$3f; - current_piece_gfx = current_piece + current_piece_orientation; - render++; - } else if(key_event==KEY_X) { - current_piece_orientation = (current_piece_orientation+$10)&$3f; - current_piece_gfx = current_piece + current_piece_orientation; - render++; - } - } - return render; -} - // Initialize the screen and data tables void init() { // Clear the screen @@ -242,33 +254,33 @@ void render_playfield() { for(byte l:0..PLAYFIELD_LINES-1) { byte* line = screen_lines[l<<1]; for(byte c:0..PLAYFIELD_COLS-1) { - *(line+c) = playfield[i++]; + *(line++) = playfield[i++]; } } } - // Render the current moving piece at position (current_xpos, current_ypos) void render_current() { byte i = 0; + byte ypos2 = current_ypos<<1; for(byte l:0..3) { - byte line = current_ypos + l; - if(linepiece_t - sta current_piece_gfx_75+1 - lda #0 - sta current_ypos_35 + sta current_piece_gfx_61+1 + lda #3 + sta current_xpos_62 + ldx #0 jsr render_current lda #0 sta current_movedown_counter @@ -97,29 +95,33 @@ main: { jsr keyboard_event_scan jsr keyboard_event_get sta key_event - jsr play_movedown + jsr play_move_down txa clc adc #0 sta render - ldx key_event - jsr play_moveother + lda key_event + jsr play_move_leftright + clc + adc render + sta render + lda key_event + jsr play_move_rotate clc adc render cmp #0 beq b10 inc BORDERCOL jsr render_playfield - lda current_ypos - sta current_ypos_75 - lda current_piece_gfx - sta current_piece_gfx_99 - lda current_piece_gfx+1 - sta current_piece_gfx_99+1 + ldx current_ypos lda current_xpos - sta current_xpos_91 + sta current_xpos_92 + lda current_piece_gfx + sta current_piece_gfx_82 + lda current_piece_gfx+1 + sta current_piece_gfx_82+1 lda current_piece_color - sta current_piece_color_69 + sta current_piece_color_70 jsr render_current dec BORDERCOL b10: @@ -127,44 +129,51 @@ main: { jmp b4 } render_current: { + .label ypos2 = 8 .label l = 9 - .label screen_line = $14 + .label screen_line = $16 + .label xpos = $b .label i = $a + txa + asl + sta ypos2 lda #0 sta i sta l b1: - lda current_ypos_35 - clc - adc l - cmp #PLAYFIELD_LINES + lda ypos2 + cmp #2*PLAYFIELD_LINES bcs b2 - asl tay lda screen_lines,y sta screen_line lda screen_lines+1,y sta screen_line+1 + lda current_xpos_62 + sta xpos ldx #0 b3: ldy i - lda (current_piece_gfx_75),y + lda (current_piece_gfx_61),y inc i cmp #0 beq b4 - txa - clc - adc current_xpos_81 + lda xpos cmp #PLAYFIELD_COLS bcs b4 - tay - lda current_piece_color_62 + lda current_piece_color_63 + ldy xpos sta (screen_line),y b4: + inc xpos inx cpx #4 bne b3 b2: + lda ypos2 + clc + adc #2 + sta ypos2 inc l lda l cmp #4 @@ -172,7 +181,6 @@ render_current: { rts } render_playfield: { - .label _3 = $14 .label line = 5 .label i = 7 .label l = 4 @@ -189,17 +197,14 @@ render_playfield: { sta line+1 ldx #0 b2: - txa - clc - adc line - sta _3 - lda #0 - adc line+1 - sta _3+1 ldy i lda playfield,y ldy #0 - sta (_3),y + sta (line),y + inc line + bne !+ + inc line+1 + !: inc i inx cpx #PLAYFIELD_COLS-1+1 @@ -210,23 +215,36 @@ render_playfield: { bne b1 rts } -play_moveother: { - txa - and #$80 - cmp #0 - bne b6 - cpx #KEY_COMMA +play_move_rotate: { + .label orientation = 4 + cmp #KEY_Z + beq b1 + cmp #KEY_X beq b2 - cpx #KEY_DOT - beq b3 - cpx #KEY_Z - beq b4 - cpx #KEY_X - bne b6 + b3: + lda #0 + breturn: + rts + b2: lda #$10 clc adc current_piece_orientation and #$3f + sta orientation + b4: + lda current_xpos + sta collision.xpos + ldy current_ypos + ldx orientation + lda current_piece + sta current_piece_70 + lda current_piece+1 + sta current_piece_70+1 + jsr collision + and #COLLISION_LEFT|COLLISION_RIGHT + cmp #0 + bne b3 + lda orientation sta current_piece_orientation clc adc current_piece @@ -234,123 +252,93 @@ play_moveother: { lda #0 adc current_piece+1 sta current_piece_gfx+1 - b5: lda #1 - jmp b1 - b6: - lda #0 + jmp breturn b1: - rts - b4: lda current_piece_orientation sec sbc #$10 and #$3f - sta current_piece_orientation - clc - adc current_piece - sta current_piece_gfx - lda #0 - adc current_piece+1 - sta current_piece_gfx+1 - jmp b5 - b3: - ldy current_xpos - iny - sty collision.xpos - lda current_ypos - sta collision.ypos - lda current_piece_gfx - sta current_piece_gfx_110 - lda current_piece_gfx+1 - sta current_piece_gfx_110+1 - jsr collision - cmp #COLLISION_NONE - bne b6 - inc current_xpos - jmp b5 - b2: - ldx current_xpos - dex - stx collision.xpos - lda current_ypos - sta collision.ypos - lda current_piece_gfx - sta current_piece_gfx_109 - lda current_piece_gfx+1 - sta current_piece_gfx_109+1 - jsr collision - cmp #COLLISION_NONE - bne b6 - dec current_xpos - jmp b5 + sta orientation + jmp b4 } collision: { - .label ypos = 4 .label xpos = 7 - .label line = $16 - .label playfield_line = $14 - .label i = $17 - .label l = 8 - .label i_2 = 9 - .label i_3 = 9 - .label i_11 = 9 - .label i_13 = 9 - lda #0 - sta i_3 - sta l - b1: - lda ypos + .label piece_gfx = 5 + .label ypos2 = 8 + .label playfield_line = $16 + .label i = $18 + .label col = $b + .label l = 9 + .label i_2 = $a + .label i_3 = $a + .label i_11 = $a + .label i_13 = $a + txa clc - adc l - sta line + adc piece_gfx + sta piece_gfx + lda #0 + adc piece_gfx+1 + sta piece_gfx+1 + tya asl - tay + sta ypos2 + lda #0 + sta l + sta i_3 + b1: + ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 + lda xpos + sta col ldx #0 b2: ldy i_2 iny sty i ldy i_2 - lda (current_piece_gfx_46),y + lda (piece_gfx),y cmp #0 beq b3 - lda line - cmp #PLAYFIELD_LINES + lda ypos2 + cmp #2*PLAYFIELD_LINES bcc b4 lda #COLLISION_BOTTOM breturn: rts b4: - txa - clc - adc xpos - tay - tya - and #$80 + lda #$80 + and col cmp #0 beq b5 lda #COLLISION_LEFT jmp breturn b5: - cpy #PLAYFIELD_COLS + lda col + cmp #PLAYFIELD_COLS bcc b6 lda #COLLISION_RIGHT jmp breturn b6: + ldy col lda (playfield_line),y cmp #0 beq b3 lda #COLLISION_PLAYFIELD jmp breturn b3: + inc col inx cpx #4 bne b21 + lda ypos2 + clc + adc #2 + sta ypos2 inc l lda l cmp #4 @@ -366,7 +354,48 @@ collision: { sta i_13 jmp b2 } -play_movedown: { +play_move_leftright: { + cmp #KEY_COMMA + beq b1 + cmp #KEY_DOT + bne b3 + ldy current_xpos + iny + sty collision.xpos + ldy current_ypos + ldx current_piece_orientation + lda current_piece + sta current_piece_69 + lda current_piece+1 + sta current_piece_69+1 + jsr collision + cmp #COLLISION_NONE + bne b3 + inc current_xpos + b2: + lda #1 + jmp breturn + b3: + lda #0 + breturn: + rts + b1: + ldx current_xpos + dex + stx collision.xpos + ldy current_ypos + ldx current_piece_orientation + lda current_piece + sta current_piece_68 + lda current_piece+1 + sta current_piece_68+1 + jsr collision + cmp #COLLISION_NONE + bne b3 + dec current_xpos + jmp b2 +} +play_move_down: { inc current_movedown_counter cmp #KEY_SPACE bne b3 @@ -394,13 +423,13 @@ play_movedown: { beq b5 ldy current_ypos iny - sty collision.ypos lda current_xpos sta collision.xpos - lda current_piece_gfx - sta current_piece_gfx_108 - lda current_piece_gfx+1 - sta current_piece_gfx_108+1 + ldx current_piece_orientation + lda current_piece + sta current_piece_67 + lda current_piece+1 + sta current_piece_67+1 jsr collision cmp #COLLISION_NONE beq b6 @@ -593,7 +622,7 @@ keyboard_matrix_read: { rts } init: { - .label _13 = $b + .label _13 = $c .label li = 5 .label pli = 5 .label line = 5 @@ -692,7 +721,7 @@ init: { rts } fill: { - .label end = $b + .label end = $c .label addr = 5 lda addr clc diff --git a/src/test/ref/examples/tetris/tetris.cfg b/src/test/ref/examples/tetris/tetris.cfg index 2249847b0..b07c444ed 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:@20 -@20: scope:[] from @begin + to:@21 +@21: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @20 +@end: scope:[] from @21 [3] phi() -main: scope:[main] from @20 +main: scope:[main] from @21 asm { sei } [5] call init to:main::@21 @@ -27,10 +27,10 @@ main::@1: scope:[main] from main::@10 main::@23 [12] (byte) current_movedown_counter#15 ← phi( main::@10/(byte) current_movedown_counter#12 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [12] (byte) keyboard_events_size#19 ← phi( main::@10/(byte) keyboard_events_size#16 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [12] (byte) current_ypos#12 ← phi( main::@10/(byte) current_ypos#16 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [12] (byte) current_xpos#16 ← phi( main::@10/(byte) current_xpos#11 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 3 ) + [12] (byte) current_xpos#16 ← phi( main::@10/(byte) current_xpos#23 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 3 ) [12] (byte) current_piece_color#11 ← phi( main::@10/(byte) current_piece_color#13 main::@23/(const byte) GREEN#0 ) - [12] (byte*) current_piece_gfx#16 ← phi( main::@10/(byte*) current_piece_gfx#11 main::@23/(const byte[4*4*4]) piece_t#0 ) - [12] (byte) current_piece_orientation#16 ← phi( main::@10/(byte) current_piece_orientation#11 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [12] (byte*) current_piece_gfx#15 ← phi( main::@10/(byte*) current_piece_gfx#18 main::@23/(const byte[4*4*4]) piece_t#0 ) + [12] (byte) current_piece_orientation#15 ← phi( main::@10/(byte) current_piece_orientation#23 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [12] (byte*) current_piece#11 ← phi( main::@10/(byte*) current_piece#13 main::@23/(const byte[4*4*4]) piece_t#0 ) to:main::@4 main::@4: scope:[main] from main::@1 main::@4 @@ -50,524 +50,557 @@ main::@25: scope:[main] from main::@9 to:main::@26 main::@26: scope:[main] from main::@25 [20] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 - [21] (byte) play_movedown::key_event#0 ← (byte) main::key_event#0 - [22] call play_movedown - [23] (byte) play_movedown::return#0 ← (byte) play_movedown::return#3 + [21] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 + [22] call play_move_down + [23] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 to:main::@27 main::@27: scope:[main] from main::@26 - [24] (byte~) main::$8 ← (byte) play_movedown::return#0 + [24] (byte~) main::$8 ← (byte) play_move_down::return#0 [25] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$8 - [26] (byte) play_moveother::key_event#0 ← (byte) main::key_event#0 - [27] call play_moveother - [28] (byte) play_moveother::return#0 ← (byte) play_moveother::return#1 + [26] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 + [27] call play_move_leftright + [28] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 to:main::@28 main::@28: scope:[main] from main::@27 - [29] (byte~) main::$9 ← (byte) play_moveother::return#0 + [29] (byte~) main::$9 ← (byte) play_move_leftright::return#0 [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 - [31] if((byte) main::render#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 - to:main::@19 -main::@19: scope:[main] from main::@28 - [32] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) - [33] call render_playfield + [31] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 + [32] call play_move_rotate + [33] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 to:main::@29 -main::@29: scope:[main] from main::@19 - [34] (byte~) current_ypos#75 ← (byte) current_ypos#16 - [35] (byte*~) current_piece_gfx#99 ← (byte*) current_piece_gfx#11 - [36] (byte~) current_xpos#91 ← (byte) current_xpos#11 - [37] (byte~) current_piece_color#69 ← (byte) current_piece_color#13 - [38] call render_current +main::@29: scope:[main] from main::@28 + [34] (byte~) main::$10 ← (byte) play_move_rotate::return#0 + [35] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$10 + [36] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 + to:main::@19 +main::@19: scope:[main] from main::@29 + [37] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + [38] call render_playfield to:main::@30 -main::@30: scope:[main] from main::@29 - [39] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) +main::@30: scope:[main] from main::@19 + [39] (byte~) current_ypos#72 ← (byte) current_ypos#16 + [40] (byte~) current_xpos#92 ← (byte) current_xpos#23 + [41] (byte*~) current_piece_gfx#82 ← (byte*) current_piece_gfx#18 + [42] (byte~) current_piece_color#70 ← (byte) current_piece_color#13 + [43] call render_current + to:main::@31 +main::@31: scope:[main] from main::@30 + [44] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) to:main::@10 -main::@10: scope:[main] from main::@28 main::@30 - [40] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) +main::@10: scope:[main] from main::@29 main::@31 + [45] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) to:main::@1 -render_current: scope:[render_current] from main::@23 main::@29 - [41] (byte) current_piece_color#62 ← phi( main::@23/(const byte) GREEN#0 main::@29/(byte~) current_piece_color#69 ) - [41] (byte) current_xpos#81 ← phi( main::@23/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@29/(byte~) current_xpos#91 ) - [41] (byte*) current_piece_gfx#75 ← phi( main::@23/(const byte[4*4*4]) piece_t#0 main::@29/(byte*~) current_piece_gfx#99 ) - [41] (byte) current_ypos#35 ← phi( main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@29/(byte~) current_ypos#75 ) +render_current: scope:[render_current] from main::@23 main::@30 + [46] (byte) current_piece_color#63 ← phi( main::@23/(const byte) GREEN#0 main::@30/(byte~) current_piece_color#70 ) + [46] (byte*) current_piece_gfx#61 ← phi( main::@23/(const byte[4*4*4]) piece_t#0 main::@30/(byte*~) current_piece_gfx#82 ) + [46] (byte) current_xpos#62 ← phi( main::@23/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@30/(byte~) current_xpos#92 ) + [46] (byte) current_ypos#22 ← phi( main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@30/(byte~) current_ypos#72 ) + [47] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:render_current::@1 render_current::@1: scope:[render_current] from render_current render_current::@2 - [42] (byte) render_current::i#4 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::i#8 ) - [42] (byte) render_current::l#2 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::l#1 ) - [43] (byte) render_current::line#0 ← (byte) current_ypos#35 + (byte) render_current::l#2 - [44] if((byte) render_current::line#0>=(const byte) PLAYFIELD_LINES#0) goto render_current::@2 + [48] (byte) render_current::i#4 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::i#8 ) + [48] (byte) render_current::l#3 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::l#1 ) + [48] (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@2/(byte) render_current::ypos2#1 ) + [49] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 to:render_current::@6 render_current::@6: scope:[render_current] from render_current::@1 - [45] (byte~) render_current::$3 ← (byte) render_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [46] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_current::$3) + [50] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) + [51] (byte) render_current::xpos#0 ← (byte) current_xpos#62 to:render_current::@3 render_current::@3: scope:[render_current] from render_current::@4 render_current::@6 - [47] (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 ) - [47] (byte) render_current::i#2 ← phi( render_current::@4/(byte) render_current::i#1 render_current::@6/(byte) render_current::i#4 ) - [48] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#75 + (byte) render_current::i#2) - [49] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 - [50] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 + [52] (byte) render_current::c#2 ← phi( render_current::@4/(byte) render_current::c#1 render_current::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [52] (byte) render_current::xpos#2 ← phi( render_current::@4/(byte) render_current::xpos#1 render_current::@6/(byte) render_current::xpos#0 ) + [52] (byte) render_current::i#2 ← phi( render_current::@4/(byte) render_current::i#1 render_current::@6/(byte) render_current::i#4 ) + [53] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#61 + (byte) render_current::i#2) + [54] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 + [55] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 to:render_current::@7 render_current::@7: scope:[render_current] from render_current::@3 - [51] (byte) render_current::xpos#0 ← (byte) current_xpos#81 + (byte) render_current::c#2 - [52] if((byte) render_current::xpos#0>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 + [56] 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 - [53] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#0) ← (byte) current_piece_color#62 + [57] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#63 to:render_current::@4 render_current::@4: scope:[render_current] from render_current::@3 render_current::@7 render_current::@8 - [54] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 - [55] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 + [58] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 + [59] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 + [60] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 to:render_current::@2 render_current::@2: scope:[render_current] from render_current::@1 render_current::@4 - [56] (byte) render_current::i#8 ← phi( render_current::@1/(byte) render_current::i#4 render_current::@4/(byte) render_current::i#1 ) - [57] (byte) render_current::l#1 ← ++ (byte) render_current::l#2 - [58] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 + [61] (byte) render_current::i#8 ← phi( render_current::@1/(byte) render_current::i#4 render_current::@4/(byte) render_current::i#1 ) + [62] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [63] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 + [64] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 to:render_current::@return render_current::@return: scope:[render_current] from render_current::@2 - [59] return + [65] return to:@return render_playfield: scope:[render_playfield] from main::@19 main::@22 - [60] phi() + [66] phi() to:render_playfield::@1 render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3 - [61] (byte) render_playfield::i#3 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::i#1 ) - [61] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::l#1 ) - [62] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [63] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) + [67] (byte) render_playfield::i#3 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::i#1 ) + [67] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::l#1 ) + [68] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [69] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) to:render_playfield::@2 render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2 - [64] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) - [64] (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@2/(byte) render_playfield::c#1 ) - [65] (byte*~) render_playfield::$3 ← (byte*) render_playfield::line#0 + (byte) render_playfield::c#2 - [66] *((byte*~) render_playfield::$3) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) - [67] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 - [68] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 - [69] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 + [70] (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@2/(byte) render_playfield::c#1 ) + [70] (byte*) render_playfield::line#2 ← phi( render_playfield::@1/(byte*) render_playfield::line#0 render_playfield::@2/(byte*) render_playfield::line#1 ) + [70] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) + [71] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) + [72] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 + [73] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 + [74] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 + [75] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 to:render_playfield::@3 render_playfield::@3: scope:[render_playfield] from render_playfield::@2 - [70] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 - [71] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 + [76] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 + [77] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 to:render_playfield::@return render_playfield::@return: scope:[render_playfield] from render_playfield::@3 - [72] return + [78] return to:@return -play_moveother: scope:[play_moveother] from main::@27 - [73] (byte~) play_moveother::$0 ← (byte) play_moveother::key_event#0 & (byte/word/signed word/dword/signed dword) 128 - [74] if((byte~) play_moveother::$0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_moveother::@1 - to:play_moveother::@11 -play_moveother::@11: scope:[play_moveother] from play_moveother - [75] if((byte) play_moveother::key_event#0==(const byte) KEY_COMMA#0) goto play_moveother::@2 - to:play_moveother::@12 -play_moveother::@12: scope:[play_moveother] from play_moveother::@11 - [76] if((byte) play_moveother::key_event#0==(const byte) KEY_DOT#0) goto play_moveother::@3 - to:play_moveother::@13 -play_moveother::@13: scope:[play_moveother] from play_moveother::@12 - [77] if((byte) play_moveother::key_event#0==(const byte) KEY_Z#0) goto play_moveother::@4 - to:play_moveother::@14 -play_moveother::@14: scope:[play_moveother] from play_moveother::@13 - [78] if((byte) play_moveother::key_event#0!=(const byte) KEY_X#0) goto play_moveother::@1 - to:play_moveother::@15 -play_moveother::@15: scope:[play_moveother] from play_moveother::@14 - [79] (byte/signed word/word/dword/signed dword~) play_moveother::$8 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 - [80] (byte) current_piece_orientation#10 ← (byte/signed word/word/dword/signed dword~) play_moveother::$8 & (byte/signed byte/word/signed word/dword/signed dword) 63 - [81] (byte*) current_piece_gfx#10 ← (byte*) current_piece#13 + (byte) current_piece_orientation#10 - to:play_moveother::@1 -play_moveother::@1: scope:[play_moveother] from play_moveother play_moveother::@14 play_moveother::@15 play_moveother::@18 play_moveother::@20 play_moveother::@22 play_moveother::@23 play_moveother::@4 - [82] (byte) current_xpos#11 ← phi( play_moveother/(byte) current_xpos#19 play_moveother::@22/(byte) current_xpos#19 play_moveother::@15/(byte) current_xpos#19 play_moveother::@18/(byte) current_xpos#9 play_moveother::@20/(byte) current_xpos#10 play_moveother::@4/(byte) current_xpos#19 play_moveother::@14/(byte) current_xpos#19 play_moveother::@23/(byte) current_xpos#19 ) - [82] (byte*) current_piece_gfx#11 ← phi( play_moveother/(byte*) current_piece_gfx#18 play_moveother::@22/(byte*) current_piece_gfx#18 play_moveother::@15/(byte*) current_piece_gfx#10 play_moveother::@18/(byte*) current_piece_gfx#18 play_moveother::@20/(byte*) current_piece_gfx#18 play_moveother::@4/(byte*) current_piece_gfx#9 play_moveother::@14/(byte*) current_piece_gfx#18 play_moveother::@23/(byte*) current_piece_gfx#18 ) - [82] (byte) current_piece_orientation#11 ← phi( play_moveother/(byte) current_piece_orientation#18 play_moveother::@22/(byte) current_piece_orientation#18 play_moveother::@15/(byte) current_piece_orientation#10 play_moveother::@18/(byte) current_piece_orientation#18 play_moveother::@20/(byte) current_piece_orientation#18 play_moveother::@4/(byte) current_piece_orientation#9 play_moveother::@14/(byte) current_piece_orientation#18 play_moveother::@23/(byte) current_piece_orientation#18 ) - [82] (byte) play_moveother::return#1 ← phi( play_moveother/(byte/signed byte/word/signed word/dword/signed dword) 0 play_moveother::@22/(byte/signed byte/word/signed word/dword/signed dword) 0 play_moveother::@15/(byte/signed byte/word/signed word/dword/signed dword) 1 play_moveother::@18/(byte/signed byte/word/signed word/dword/signed dword) 1 play_moveother::@20/(byte/signed byte/word/signed word/dword/signed dword) 1 play_moveother::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 play_moveother::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_moveother::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - to:play_moveother::@return -play_moveother::@return: scope:[play_moveother] from play_moveother::@1 - [83] return +play_move_rotate: scope:[play_move_rotate] from main::@28 + [79] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 + to:play_move_rotate::@6 +play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate + [80] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 + to:play_move_rotate::@return +play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@11 play_move_rotate::@14 play_move_rotate::@6 + [81] (byte*) current_piece_gfx#18 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#8 play_move_rotate::@14/(byte*) current_piece_gfx#17 play_move_rotate::@6/(byte*) current_piece_gfx#17 ) + [81] (byte) current_piece_orientation#23 ← phi( play_move_rotate::@11/(byte) current_piece_orientation#8 play_move_rotate::@14/(byte) current_piece_orientation#18 play_move_rotate::@6/(byte) current_piece_orientation#18 ) + [81] (byte) play_move_rotate::return#2 ← phi( play_move_rotate::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [82] return to:@return -play_moveother::@4: scope:[play_moveother] from play_moveother::@13 - [84] (byte/signed word/word/dword/signed dword~) play_moveother::$11 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 - [85] (byte) current_piece_orientation#9 ← (byte/signed word/word/dword/signed dword~) play_moveother::$11 & (byte/signed byte/word/signed word/dword/signed dword) 63 - [86] (byte*) current_piece_gfx#9 ← (byte*) current_piece#13 + (byte) current_piece_orientation#9 - to:play_moveother::@1 -play_moveother::@3: scope:[play_moveother] from play_moveother::@12 - [87] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [88] (byte) collision::ypos#2 ← (byte) current_ypos#16 - [89] (byte*~) current_piece_gfx#110 ← (byte*) current_piece_gfx#18 +play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@6 + [83] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 + [84] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 + to:play_move_rotate::@4 +play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2 + [85] (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) + [86] (byte) collision::xpos#3 ← (byte) current_xpos#23 + [87] (byte) collision::ypos#3 ← (byte) current_ypos#16 + [88] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + [89] (byte*~) current_piece#70 ← (byte*) current_piece#13 [90] call collision - [91] (byte) collision::return#12 ← (byte) collision::return#10 - to:play_moveother::@23 -play_moveother::@23: scope:[play_moveother] from play_moveother::@3 - [92] (byte~) play_moveother::$15 ← (byte) collision::return#12 - [93] if((byte~) play_moveother::$15!=(const byte) COLLISION_NONE#0) goto play_moveother::@1 - to:play_moveother::@18 -play_moveother::@18: scope:[play_moveother] from play_moveother::@23 - [94] (byte) current_xpos#9 ← ++ (byte) current_xpos#19 - to:play_moveother::@1 -play_moveother::@2: scope:[play_moveother] from play_moveother::@11 - [95] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 - [96] (byte) collision::ypos#1 ← (byte) current_ypos#16 - [97] (byte*~) current_piece_gfx#109 ← (byte*) current_piece_gfx#18 - [98] call collision - [99] (byte) collision::return#11 ← (byte) collision::return#10 - to:play_moveother::@22 -play_moveother::@22: scope:[play_moveother] from play_moveother::@2 - [100] (byte~) play_moveother::$19 ← (byte) collision::return#11 - [101] if((byte~) play_moveother::$19!=(const byte) COLLISION_NONE#0) goto play_moveother::@1 - to:play_moveother::@20 -play_moveother::@20: scope:[play_moveother] from play_moveother::@22 - [102] (byte) current_xpos#10 ← -- (byte) current_xpos#19 - to:play_moveother::@1 -collision: scope:[collision] from play_movedown::@12 play_moveother::@2 play_moveother::@3 - [103] (byte) collision::xpos#8 ← phi( play_movedown::@12/(byte) collision::xpos#0 play_moveother::@2/(byte) collision::xpos#1 play_moveother::@3/(byte) collision::xpos#2 ) - [103] (byte*) current_piece_gfx#46 ← phi( play_movedown::@12/(byte*~) current_piece_gfx#108 play_moveother::@2/(byte*~) current_piece_gfx#109 play_moveother::@3/(byte*~) current_piece_gfx#110 ) - [103] (byte) collision::ypos#4 ← phi( play_movedown::@12/(byte) collision::ypos#0 play_moveother::@2/(byte) collision::ypos#1 play_moveother::@3/(byte) collision::ypos#2 ) + [91] (byte) collision::return#13 ← (byte) collision::return#14 + to:play_move_rotate::@14 +play_move_rotate::@14: scope:[play_move_rotate] from play_move_rotate::@4 + [92] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 + [93] (byte~) play_move_rotate::$8 ← (byte~) play_move_rotate::$6 & (const byte) COLLISION_LEFT#0|(const byte) COLLISION_RIGHT#0 + [94] if((byte~) play_move_rotate::$8!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@return + to:play_move_rotate::@11 +play_move_rotate::@11: scope:[play_move_rotate] from play_move_rotate::@14 + [95] (byte) current_piece_orientation#8 ← (byte) play_move_rotate::orientation#3 + [96] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_piece_orientation#8 + to:play_move_rotate::@return +play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate + [97] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 + [98] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 + to:play_move_rotate::@4 +collision: scope:[collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 + [99] (byte) collision::xpos#5 ← phi( play_move_down::@12/(byte) collision::xpos#0 play_move_leftright::@1/(byte) collision::xpos#1 play_move_leftright::@7/(byte) collision::xpos#2 play_move_rotate::@4/(byte) collision::xpos#3 ) + [99] (byte) collision::ypos#4 ← phi( play_move_down::@12/(byte) collision::ypos#0 play_move_leftright::@1/(byte) collision::ypos#1 play_move_leftright::@7/(byte) collision::ypos#2 play_move_rotate::@4/(byte) collision::ypos#3 ) + [99] (byte) collision::orientation#4 ← phi( play_move_down::@12/(byte) collision::orientation#0 play_move_leftright::@1/(byte) collision::orientation#1 play_move_leftright::@7/(byte) collision::orientation#2 play_move_rotate::@4/(byte) collision::orientation#3 ) + [99] (byte*) current_piece#15 ← phi( play_move_down::@12/(byte*~) current_piece#67 play_move_leftright::@1/(byte*~) current_piece#68 play_move_leftright::@7/(byte*~) current_piece#69 play_move_rotate::@4/(byte*~) current_piece#70 ) + [100] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 + [101] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:collision::@1 collision::@1: scope:[collision] from collision collision::@20 - [104] (byte) collision::i#3 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte~) collision::i#11 ) - [104] (byte) collision::l#2 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte) collision::l#1 ) - [105] (byte) collision::line#0 ← (byte) collision::ypos#4 + (byte) collision::l#2 - [106] (byte~) collision::$1 ← (byte) collision::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [107] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) collision::$1) + [102] (byte) collision::l#6 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte) collision::l#1 ) + [102] (byte) collision::i#3 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte~) collision::i#11 ) + [102] (byte) collision::ypos2#2 ← phi( collision/(byte) collision::ypos2#0 collision::@20/(byte) collision::ypos2#1 ) + [103] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) + [104] (byte~) collision::col#9 ← (byte) collision::xpos#5 to:collision::@2 collision::@2: scope:[collision] from collision::@1 collision::@21 - [108] (byte) collision::c#2 ← phi( collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@21/(byte) collision::c#1 ) - [108] (byte) collision::i#2 ← phi( collision::@1/(byte) collision::i#3 collision::@21/(byte~) collision::i#13 ) - [109] (byte) collision::i#1 ← ++ (byte) collision::i#2 - [110] if(*((byte*) current_piece_gfx#46 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 + [105] (byte) collision::c#2 ← phi( collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@21/(byte) collision::c#1 ) + [105] (byte) collision::col#2 ← phi( collision::@1/(byte~) collision::col#9 collision::@21/(byte) collision::col#1 ) + [105] (byte) collision::i#2 ← phi( collision::@1/(byte) collision::i#3 collision::@21/(byte~) collision::i#13 ) + [106] (byte) collision::i#1 ← ++ (byte) collision::i#2 + [107] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 to:collision::@8 collision::@8: scope:[collision] from collision::@2 - [111] if((byte) collision::line#0<(const byte) PLAYFIELD_LINES#0) goto collision::@4 + [108] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 to:collision::@return collision::@return: scope:[collision] from collision::@17 collision::@4 collision::@5 collision::@6 collision::@8 - [112] (byte) collision::return#10 ← phi( collision::@4/(const byte) COLLISION_LEFT#0 collision::@5/(const byte) COLLISION_RIGHT#0 collision::@6/(const byte) COLLISION_PLAYFIELD#0 collision::@17/(const byte) COLLISION_NONE#0 collision::@8/(const byte) COLLISION_BOTTOM#0 ) - [113] return + [109] (byte) collision::return#14 ← phi( collision::@4/(const byte) COLLISION_LEFT#0 collision::@5/(const byte) COLLISION_RIGHT#0 collision::@6/(const byte) COLLISION_PLAYFIELD#0 collision::@17/(const byte) COLLISION_NONE#0 collision::@8/(const byte) COLLISION_BOTTOM#0 ) + [110] return to:@return collision::@4: scope:[collision] from collision::@8 - [114] (byte) collision::col#0 ← (byte) collision::xpos#8 + (byte) collision::c#2 - [115] (byte~) collision::$7 ← (byte) collision::col#0 & (byte/word/signed word/dword/signed dword) 128 - [116] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 + [111] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 + [112] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 to:collision::@return collision::@5: scope:[collision] from collision::@4 - [117] if((byte) collision::col#0<(const byte) PLAYFIELD_COLS#0) goto collision::@6 + [113] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 to:collision::@return collision::@6: scope:[collision] from collision::@5 - [118] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 + [114] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 to:collision::@return collision::@3: scope:[collision] from collision::@2 collision::@6 - [119] (byte) collision::c#1 ← ++ (byte) collision::c#2 - [120] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 + [115] (byte) collision::col#1 ← ++ (byte) collision::col#2 + [116] (byte) collision::c#1 ← ++ (byte) collision::c#2 + [117] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 to:collision::@17 collision::@17: scope:[collision] from collision::@3 - [121] (byte) collision::l#1 ← ++ (byte) collision::l#2 - [122] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 + [118] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [119] (byte) collision::l#1 ← ++ (byte) collision::l#6 + [120] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 to:collision::@return collision::@20: scope:[collision] from collision::@17 - [123] (byte~) collision::i#11 ← (byte) collision::i#1 + [121] (byte~) collision::i#11 ← (byte) collision::i#1 to:collision::@1 collision::@21: scope:[collision] from collision::@3 - [124] (byte~) collision::i#13 ← (byte) collision::i#1 + [122] (byte~) collision::i#13 ← (byte) collision::i#1 to:collision::@2 -play_movedown: scope:[play_movedown] from main::@26 - [125] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 - [126] if((byte) play_movedown::key_event#0!=(const byte) KEY_SPACE#0) goto play_movedown::@1 - to:play_movedown::@8 -play_movedown::@8: scope:[play_movedown] from play_movedown - [127] phi() - to:play_movedown::@1 -play_movedown::@1: scope:[play_movedown] from play_movedown play_movedown::@8 - [128] (byte) play_movedown::movedown#10 ← phi( play_movedown/(byte/signed byte/word/signed word/dword/signed dword) 0 play_movedown::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [129] call keyboard_event_pressed - [130] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 - to:play_movedown::@17 -play_movedown::@17: scope:[play_movedown] from play_movedown::@1 - [131] (byte~) play_movedown::$2 ← (byte) keyboard_event_pressed::return#12 - [132] if((byte~) play_movedown::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movedown::@2 - to:play_movedown::@9 -play_movedown::@9: scope:[play_movedown] from play_movedown::@17 - [133] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate_fast#0) goto play_movedown::@2 - to:play_movedown::@10 -play_movedown::@10: scope:[play_movedown] from play_movedown::@9 - [134] (byte) play_movedown::movedown#2 ← ++ (byte) play_movedown::movedown#10 - to:play_movedown::@2 -play_movedown::@2: scope:[play_movedown] from play_movedown::@10 play_movedown::@17 play_movedown::@9 - [135] (byte) play_movedown::movedown#7 ← phi( play_movedown::@10/(byte) play_movedown::movedown#2 play_movedown::@17/(byte) play_movedown::movedown#10 play_movedown::@9/(byte) play_movedown::movedown#10 ) - [136] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate#0) goto play_movedown::@4 - to:play_movedown::@11 -play_movedown::@11: scope:[play_movedown] from play_movedown::@2 - [137] (byte) play_movedown::movedown#3 ← ++ (byte) play_movedown::movedown#7 - to:play_movedown::@4 -play_movedown::@4: scope:[play_movedown] from play_movedown::@11 play_movedown::@2 - [138] (byte) play_movedown::movedown#6 ← phi( play_movedown::@11/(byte) play_movedown::movedown#3 play_movedown::@2/(byte) play_movedown::movedown#7 ) - [139] if((byte) play_movedown::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movedown::@return - to:play_movedown::@12 -play_movedown::@12: scope:[play_movedown] from play_movedown::@4 - [140] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [141] (byte) collision::xpos#0 ← (byte) current_xpos#16 - [142] (byte*~) current_piece_gfx#108 ← (byte*) current_piece_gfx#16 - [143] call collision - [144] (byte) collision::return#0 ← (byte) collision::return#10 - to:play_movedown::@18 -play_movedown::@18: scope:[play_movedown] from play_movedown::@12 - [145] (byte~) play_movedown::$12 ← (byte) collision::return#0 - [146] if((byte~) play_movedown::$12==(const byte) COLLISION_NONE#0) goto play_movedown::@6 - to:play_movedown::@13 -play_movedown::@13: scope:[play_movedown] from play_movedown::@18 - [147] phi() - [148] call lock_current - to:play_movedown::@19 -play_movedown::@19: scope:[play_movedown] from play_movedown::@13 - [149] phi() - [150] call spawn_current - to:play_movedown::@7 -play_movedown::@7: scope:[play_movedown] from play_movedown::@19 play_movedown::@6 - [151] (byte) current_xpos#35 ← phi( play_movedown::@19/(byte/signed byte/word/signed word/dword/signed dword) 3 play_movedown::@6/(byte) current_xpos#16 ) - [151] (byte) current_piece_color#23 ← phi( play_movedown::@19/(const byte) GREEN#0 play_movedown::@6/(byte) current_piece_color#11 ) - [151] (byte*) current_piece_gfx#30 ← phi( play_movedown::@19/(const byte[4*4*4]) piece_t#0 play_movedown::@6/(byte*) current_piece_gfx#16 ) - [151] (byte) current_piece_orientation#29 ← phi( play_movedown::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 play_movedown::@6/(byte) current_piece_orientation#16 ) - [151] (byte*) current_piece#23 ← phi( play_movedown::@19/(const byte[4*4*4]) piece_t#0 play_movedown::@6/(byte*) current_piece#11 ) - [151] (byte) current_ypos#30 ← phi( play_movedown::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 play_movedown::@6/(byte) current_ypos#4 ) - to:play_movedown::@return -play_movedown::@return: scope:[play_movedown] from play_movedown::@4 play_movedown::@7 - [152] (byte) current_xpos#19 ← phi( play_movedown::@4/(byte) current_xpos#16 play_movedown::@7/(byte) current_xpos#35 ) - [152] (byte) current_piece_color#13 ← phi( play_movedown::@4/(byte) current_piece_color#11 play_movedown::@7/(byte) current_piece_color#23 ) - [152] (byte*) current_piece_gfx#18 ← phi( play_movedown::@4/(byte*) current_piece_gfx#16 play_movedown::@7/(byte*) current_piece_gfx#30 ) - [152] (byte) current_piece_orientation#18 ← phi( play_movedown::@4/(byte) current_piece_orientation#16 play_movedown::@7/(byte) current_piece_orientation#29 ) - [152] (byte*) current_piece#13 ← phi( play_movedown::@4/(byte*) current_piece#11 play_movedown::@7/(byte*) current_piece#23 ) - [152] (byte) current_ypos#16 ← phi( play_movedown::@4/(byte) current_ypos#12 play_movedown::@7/(byte) current_ypos#30 ) - [152] (byte) current_movedown_counter#12 ← phi( play_movedown::@4/(byte) current_movedown_counter#10 play_movedown::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [152] (byte) play_movedown::return#3 ← phi( play_movedown::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 play_movedown::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [153] return +play_move_leftright: scope:[play_move_leftright] from main::@27 + [123] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 + to:play_move_leftright::@6 +play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright + [124] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return + to:play_move_leftright::@7 +play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@6 + [125] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [126] (byte) collision::ypos#2 ← (byte) current_ypos#16 + [127] (byte) collision::orientation#2 ← (byte) current_piece_orientation#18 + [128] (byte*~) current_piece#69 ← (byte*) current_piece#13 + [129] call collision + [130] (byte) collision::return#12 ← (byte) collision::return#14 + to:play_move_leftright::@15 +play_move_leftright::@15: scope:[play_move_leftright] from play_move_leftright::@7 + [131] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 + [132] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + to:play_move_leftright::@8 +play_move_leftright::@8: scope:[play_move_leftright] from play_move_leftright::@15 + [133] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 + to:play_move_leftright::@return +play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@11 play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 play_move_leftright::@8 + [134] (byte) current_xpos#23 ← phi( play_move_leftright::@11/(byte) current_xpos#9 play_move_leftright::@15/(byte) current_xpos#19 play_move_leftright::@8/(byte) current_xpos#7 play_move_leftright::@14/(byte) current_xpos#19 play_move_leftright::@6/(byte) current_xpos#19 ) + [134] (byte) play_move_leftright::return#2 ← phi( play_move_leftright::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@15/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [135] return to:@return -play_movedown::@6: scope:[play_movedown] from play_movedown::@18 - [154] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 - to:play_movedown::@7 -spawn_current: scope:[spawn_current] from main::@21 play_movedown::@19 - [155] phi() +play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright + [136] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 + [137] (byte) collision::ypos#1 ← (byte) current_ypos#16 + [138] (byte) collision::orientation#1 ← (byte) current_piece_orientation#18 + [139] (byte*~) current_piece#68 ← (byte*) current_piece#13 + [140] call collision + [141] (byte) collision::return#1 ← (byte) collision::return#14 + to:play_move_leftright::@14 +play_move_leftright::@14: scope:[play_move_leftright] from play_move_leftright::@1 + [142] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 + [143] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + to:play_move_leftright::@11 +play_move_leftright::@11: scope:[play_move_leftright] from play_move_leftright::@14 + [144] (byte) current_xpos#9 ← -- (byte) current_xpos#19 + to:play_move_leftright::@return +play_move_down: scope:[play_move_down] from main::@26 + [145] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 + [146] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 + to:play_move_down::@8 +play_move_down::@8: scope:[play_move_down] from play_move_down + [147] phi() + to:play_move_down::@1 +play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@8 + [148] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [149] call keyboard_event_pressed + [150] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + to:play_move_down::@17 +play_move_down::@17: scope:[play_move_down] from play_move_down::@1 + [151] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + [152] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 + to:play_move_down::@9 +play_move_down::@9: scope:[play_move_down] from play_move_down::@17 + [153] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate_fast#0) goto play_move_down::@2 + to:play_move_down::@10 +play_move_down::@10: scope:[play_move_down] from play_move_down::@9 + [154] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 + to:play_move_down::@2 +play_move_down::@2: scope:[play_move_down] from play_move_down::@10 play_move_down::@17 play_move_down::@9 + [155] (byte) play_move_down::movedown#7 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@9/(byte) play_move_down::movedown#10 ) + [156] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate#0) goto play_move_down::@4 + to:play_move_down::@11 +play_move_down::@11: scope:[play_move_down] from play_move_down::@2 + [157] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 + to:play_move_down::@4 +play_move_down::@4: scope:[play_move_down] from play_move_down::@11 play_move_down::@2 + [158] (byte) play_move_down::movedown#6 ← phi( play_move_down::@11/(byte) play_move_down::movedown#3 play_move_down::@2/(byte) play_move_down::movedown#7 ) + [159] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return + to:play_move_down::@12 +play_move_down::@12: scope:[play_move_down] from play_move_down::@4 + [160] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [161] (byte) collision::xpos#0 ← (byte) current_xpos#16 + [162] (byte) collision::orientation#0 ← (byte) current_piece_orientation#15 + [163] (byte*~) current_piece#67 ← (byte*) current_piece#11 + [164] call collision + [165] (byte) collision::return#0 ← (byte) collision::return#14 + to:play_move_down::@18 +play_move_down::@18: scope:[play_move_down] from play_move_down::@12 + [166] (byte~) play_move_down::$12 ← (byte) collision::return#0 + [167] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 + to:play_move_down::@13 +play_move_down::@13: scope:[play_move_down] from play_move_down::@18 + [168] phi() + [169] call lock_current + to:play_move_down::@19 +play_move_down::@19: scope:[play_move_down] from play_move_down::@13 + [170] phi() + [171] call spawn_current + to:play_move_down::@7 +play_move_down::@7: scope:[play_move_down] from play_move_down::@19 play_move_down::@6 + [172] (byte) current_xpos#36 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 3 play_move_down::@6/(byte) current_xpos#16 ) + [172] (byte) current_piece_color#23 ← phi( play_move_down::@19/(const byte) GREEN#0 play_move_down::@6/(byte) current_piece_color#11 ) + [172] (byte*) current_piece_gfx#29 ← phi( play_move_down::@19/(const byte[4*4*4]) piece_t#0 play_move_down::@6/(byte*) current_piece_gfx#15 ) + [172] (byte) current_piece_orientation#33 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_piece_orientation#15 ) + [172] (byte*) current_piece#23 ← phi( play_move_down::@19/(const byte[4*4*4]) piece_t#0 play_move_down::@6/(byte*) current_piece#11 ) + [172] (byte) current_ypos#31 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_ypos#4 ) + to:play_move_down::@return +play_move_down::@return: scope:[play_move_down] from play_move_down::@4 play_move_down::@7 + [173] (byte) current_xpos#19 ← phi( play_move_down::@4/(byte) current_xpos#16 play_move_down::@7/(byte) current_xpos#36 ) + [173] (byte) current_piece_color#13 ← phi( play_move_down::@4/(byte) current_piece_color#11 play_move_down::@7/(byte) current_piece_color#23 ) + [173] (byte*) current_piece_gfx#17 ← phi( play_move_down::@4/(byte*) current_piece_gfx#15 play_move_down::@7/(byte*) current_piece_gfx#29 ) + [173] (byte) current_piece_orientation#18 ← phi( play_move_down::@4/(byte) current_piece_orientation#15 play_move_down::@7/(byte) current_piece_orientation#33 ) + [173] (byte*) current_piece#13 ← phi( play_move_down::@4/(byte*) current_piece#11 play_move_down::@7/(byte*) current_piece#23 ) + [173] (byte) current_ypos#16 ← phi( play_move_down::@4/(byte) current_ypos#12 play_move_down::@7/(byte) current_ypos#31 ) + [173] (byte) current_movedown_counter#12 ← phi( play_move_down::@4/(byte) current_movedown_counter#10 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [173] (byte) play_move_down::return#3 ← phi( play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [174] return + to:@return +play_move_down::@6: scope:[play_move_down] from play_move_down::@18 + [175] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 + to:play_move_down::@7 +spawn_current: scope:[spawn_current] from main::@21 play_move_down::@19 + [176] phi() to:spawn_current::@return spawn_current::@return: scope:[spawn_current] from spawn_current - [156] return + [177] return to:@return -lock_current: scope:[lock_current] from play_movedown::@13 - [157] phi() +lock_current: scope:[lock_current] from play_move_down::@13 + [178] phi() to:lock_current::@1 lock_current::@1: scope:[lock_current] from lock_current lock_current::@5 - [158] (byte) lock_current::i#3 ← phi( lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@5/(byte) lock_current::i#1 ) - [158] (byte) lock_current::l#2 ← phi( lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@5/(byte) lock_current::l#1 ) - [159] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 - [160] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [161] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) + [179] (byte) lock_current::i#3 ← phi( lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@5/(byte) lock_current::i#1 ) + [179] (byte) lock_current::l#2 ← phi( lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@5/(byte) lock_current::l#1 ) + [180] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 + [181] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [182] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) to:lock_current::@2 lock_current::@2: scope:[lock_current] from lock_current::@1 lock_current::@3 - [162] (byte) lock_current::c#2 ← phi( lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@3/(byte) lock_current::c#1 ) - [162] (byte) lock_current::i#2 ← phi( lock_current::@1/(byte) lock_current::i#3 lock_current::@3/(byte) lock_current::i#1 ) - [163] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#16 + (byte) lock_current::i#2) - [164] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 - [165] if((byte) lock_current::cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 + [183] (byte) lock_current::c#2 ← phi( lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@3/(byte) lock_current::c#1 ) + [183] (byte) lock_current::i#2 ← phi( lock_current::@1/(byte) lock_current::i#3 lock_current::@3/(byte) lock_current::i#1 ) + [184] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#15 + (byte) lock_current::i#2) + [185] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 + [186] if((byte) lock_current::cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 to:lock_current::@4 lock_current::@4: scope:[lock_current] from lock_current::@2 - [166] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 - [167] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 + [187] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 + [188] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 to:lock_current::@3 lock_current::@3: scope:[lock_current] from lock_current::@2 lock_current::@4 - [168] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 - [169] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@2 + [189] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 + [190] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@2 to:lock_current::@5 lock_current::@5: scope:[lock_current] from lock_current::@3 - [170] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#2 - [171] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@1 + [191] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#2 + [192] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@1 to:lock_current::@return lock_current::@return: scope:[lock_current] from lock_current::@5 - [172] return + [193] return to:@return -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_movedown::@1 - [173] (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_movedown::@1/(const byte) KEY_SPACE#0 ) - [174] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 - [175] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) - [176] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [177] (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: scope:[keyboard_event_pressed] from keyboard_event_scan::@10 keyboard_event_scan::@11 keyboard_event_scan::@20 keyboard_event_scan::@9 play_move_down::@1 + [194] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@10/(const byte) KEY_CTRL#0 keyboard_event_scan::@11/(const byte) KEY_COMMODORE#0 keyboard_event_scan::@20/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@9/(const byte) KEY_RSHIFT#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) + [195] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 + [196] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) + [197] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [198] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) to:keyboard_event_pressed::@return keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed - [178] return + [199] return to:@return keyboard_event_get: scope:[keyboard_event_get] from main::@25 - [179] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return + [200] 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 - [180] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 - [181] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) + [201] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 + [202] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) to:keyboard_event_get::@return keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@3 - [182] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) - [182] (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 ) - [183] return + [203] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) + [203] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) + [204] return to:@return keyboard_event_scan: scope:[keyboard_event_scan] from main::@9 - [184] phi() + [205] phi() to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@3 - [185] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) - [185] (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 ) - [185] (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 ) - [186] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 - [187] call keyboard_matrix_read - [188] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + [206] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) + [206] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) + [206] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) + [207] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 + [208] call keyboard_matrix_read + [209] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 to:keyboard_event_scan::@25 keyboard_event_scan::@25: scope:[keyboard_event_scan] from keyboard_event_scan::@1 - [189] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 - [190] 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 + [210] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 + [211] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 to:keyboard_event_scan::@13 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@25 - [191] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 + [212] (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 - [192] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) - [192] (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 ) - [193] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 - [194] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 + [213] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) + [213] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) + [214] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 + [215] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 to:keyboard_event_scan::@20 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - [195] phi() - [196] call keyboard_event_pressed - [197] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + [216] phi() + [217] call keyboard_event_pressed + [218] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@26 keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - [198] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 - [199] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 + [219] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + [220] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 to:keyboard_event_scan::@21 keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26 - [200] phi() + [221] phi() to:keyboard_event_scan::@9 keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - [201] phi() - [202] call keyboard_event_pressed - [203] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + [222] phi() + [223] call keyboard_event_pressed + [224] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@27 keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - [204] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 - [205] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 + [225] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + [226] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 to:keyboard_event_scan::@22 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 - [206] phi() + [227] phi() to:keyboard_event_scan::@10 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 - [207] phi() - [208] call keyboard_event_pressed - [209] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + [228] phi() + [229] call keyboard_event_pressed + [230] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@28 keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - [210] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 - [211] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 + [231] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + [232] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 to:keyboard_event_scan::@23 keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28 - [212] phi() + [233] phi() to:keyboard_event_scan::@11 keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28 - [213] phi() - [214] call keyboard_event_pressed - [215] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + [234] phi() + [235] call keyboard_event_pressed + [236] (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 - [216] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 - [217] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return + [237] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + [238] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return to:keyboard_event_scan::@24 keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@29 - [218] phi() + [239] phi() to:keyboard_event_scan::@return keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@24 keyboard_event_scan::@29 - [219] return + [240] return to:@return keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@25 keyboard_event_scan::@5 - [220] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) - [220] (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 ) - [220] (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 ) - [221] (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) - [222] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [223] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 + [241] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) + [241] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) + [241] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) + [242] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) + [243] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [244] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 to:keyboard_event_scan::@15 keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@4 - [224] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 + [245] 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 - [225] (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) - [226] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 + [246] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [247] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 to:keyboard_event_scan::@17 keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [227] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 - [228] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 + [248] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 + [249] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 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 - [229] (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 ) - [230] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 - [231] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 - [232] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 + [250] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) + [251] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 + [252] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 + [253] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 to:keyboard_event_scan::@19 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@5 - [233] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 + [254] *((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 - [234] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 - [235] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 - [236] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 + [255] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 + [256] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 + [257] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@1 - [237] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) - [238] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) + [258] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) + [259] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) to:keyboard_matrix_read::@return keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read - [239] return + [260] return to:@return init: scope:[init] from main - [240] phi() - [241] call fill + [261] phi() + [262] call fill to:init::@9 init::@9: scope:[init] from init - [242] phi() - [243] call fill + [263] phi() + [264] call fill to:init::@1 init::@1: scope:[init] from init::@1 init::@9 - [244] (byte*) init::li#2 ← phi( init::@1/(byte*) init::li#1 init::@9/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 ) - [244] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [245] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [246] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 - [247] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [248] (byte) init::i#1 ← ++ (byte) init::i#2 - [249] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 + [265] (byte*) init::li#2 ← phi( init::@1/(byte*) init::li#1 init::@9/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 ) + [265] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [266] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [267] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 + [268] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [269] (byte) init::i#1 ← ++ (byte) init::i#2 + [270] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 to:init::@2 init::@2: scope:[init] from init::@1 init::@2 - [250] (byte*) init::pli#2 ← phi( init::@2/(byte*) init::pli#1 init::@1/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 ) - [250] (byte) init::j#2 ← phi( init::@2/(byte) init::j#1 init::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [251] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [252] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 - [253] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 - [254] (byte) init::j#1 ← ++ (byte) init::j#2 - [255] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 + [271] (byte*) init::pli#2 ← phi( init::@2/(byte*) init::pli#1 init::@1/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 ) + [271] (byte) init::j#2 ← phi( init::@2/(byte) init::j#1 init::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [272] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [273] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 + [274] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 + [275] (byte) init::j#1 ← ++ (byte) init::j#2 + [276] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 to:init::@3 init::@3: scope:[init] from init::@2 init::@7 - [256] (byte) init::l#4 ← phi( init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@7/(byte) init::l#1 ) - [256] (byte*) init::line#4 ← phi( init::@2/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 init::@7/(byte*) init::line#1 ) + [277] (byte) init::l#4 ← phi( init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@7/(byte) init::l#1 ) + [277] (byte*) init::line#4 ← phi( init::@2/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 init::@7/(byte*) init::line#1 ) to:init::@4 init::@4: scope:[init] from init::@3 init::@4 - [257] (byte) init::c#2 ← phi( init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@4/(byte) init::c#1 ) - [258] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 - [259] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 - [260] (byte) init::c#1 ← ++ (byte) init::c#2 - [261] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 + [278] (byte) init::c#2 ← phi( init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@4/(byte) init::c#1 ) + [279] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 + [280] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 + [281] (byte) init::c#1 ← ++ (byte) init::c#2 + [282] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 to:init::@7 init::@7: scope:[init] from init::@4 - [262] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [263] (byte) init::l#1 ← ++ (byte) init::l#4 - [264] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 + [283] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [284] (byte) init::l#1 ← ++ (byte) init::l#4 + [285] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 to:init::@return init::@return: scope:[init] from init::@7 - [265] return + [286] return to:@return fill: scope:[fill] from init init::@9 - [266] (byte) fill::val#3 ← phi( init/(byte/word/signed word/dword/signed dword) 160 init::@9/(const byte) BLACK#0 ) - [266] (byte*) fill::addr#0 ← phi( init/(const byte*) SCREEN#0 init::@9/(const byte*) COLS#0 ) - [267] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 + [287] (byte) fill::val#3 ← phi( init/(byte/word/signed word/dword/signed dword) 160 init::@9/(const byte) BLACK#0 ) + [287] (byte*) fill::addr#0 ← phi( init/(const byte*) SCREEN#0 init::@9/(const byte*) COLS#0 ) + [288] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 to:fill::@1 fill::@1: scope:[fill] from fill fill::@1 - [268] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) - [269] *((byte*) fill::addr#2) ← (byte) fill::val#3 - [270] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [271] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 + [289] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) + [290] *((byte*) fill::addr#2) ← (byte) fill::val#3 + [291] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [292] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [272] return + [293] return to:@return diff --git a/src/test/ref/examples/tetris/tetris.log b/src/test/ref/examples/tetris/tetris.log index 75053b36b..bb3b02cdd 100644 --- a/src/test/ref/examples/tetris/tetris.log +++ b/src/test/ref/examples/tetris/tetris.log @@ -1,4 +1,8 @@ Resolved forward reference COLLISION_NONE to (byte) COLLISION_NONE +Resolved forward reference COLLISION_NONE to (byte) COLLISION_NONE +Resolved forward reference COLLISION_NONE to (byte) COLLISION_NONE +Resolved forward reference COLLISION_LEFT to (byte) COLLISION_LEFT +Resolved forward reference COLLISION_RIGHT to (byte) COLLISION_RIGHT Resolved forward reference piece_t to (byte[$4]) piece_t Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx @@ -99,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#58 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#36 ) + (byte) keyboard_events_size#59 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#36 ) (byte) keyboard_event_scan::row#7 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::row#3 ) (byte) keyboard_event_scan::keycode#3 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#7 ) (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$2 ← (byte) keyboard_event_scan::keycode#3 + (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) keyboard_event_scan::keycode#1 ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$2 to:keyboard_event_scan::@3 keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@19 - (byte) keyboard_events_size#54 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#58 keyboard_event_scan::@19/(byte) keyboard_events_size#59 ) + (byte) keyboard_events_size#54 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#59 keyboard_event_scan::@19/(byte) keyboard_events_size#60 ) (byte) keyboard_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) @@ -184,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#59 ← phi( keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) + (byte) keyboard_events_size#60 ← 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#66 ← phi( keyboard_event_scan::@3/(byte) keyboard_events_size#54 ) + (byte) keyboard_events_size#67 ← phi( keyboard_event_scan::@3/(byte) keyboard_events_size#54 ) (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#65 ← phi( keyboard_event_scan::@20/(byte) keyboard_events_size#66 ) + (byte) keyboard_events_size#66 ← phi( keyboard_event_scan::@20/(byte) keyboard_events_size#67 ) (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 @@ -207,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#63 ← phi( keyboard_event_scan::@21/(byte) keyboard_events_size#64 keyboard_event_scan::@26/(byte) keyboard_events_size#65 ) + (byte) keyboard_events_size#64 ← phi( keyboard_event_scan::@21/(byte) keyboard_events_size#65 keyboard_event_scan::@26/(byte) keyboard_events_size#66 ) (byte) keyboard_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#61 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#63 ) + (byte) keyboard_events_size#62 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#64 ) (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 @@ -223,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#64 ← phi( keyboard_event_scan::@26/(byte) keyboard_events_size#65 ) + (byte) keyboard_events_size#65 ← phi( keyboard_event_scan::@26/(byte) keyboard_events_size#66 ) (byte) keyboard_modifiers#10 ← phi( keyboard_event_scan::@26/(byte) keyboard_modifiers#18 ) (byte~) keyboard_event_scan::$17 ← (byte) keyboard_modifiers#10 | (byte) KEY_MODIFIER_LSHIFT#0 (byte) keyboard_modifiers#2 ← (byte~) keyboard_event_scan::$17 to:keyboard_event_scan::@9 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 - (byte) keyboard_events_size#55 ← phi( keyboard_event_scan::@22/(byte) keyboard_events_size#60 keyboard_event_scan::@27/(byte) keyboard_events_size#61 ) + (byte) keyboard_events_size#55 ← phi( keyboard_event_scan::@22/(byte) keyboard_events_size#61 keyboard_event_scan::@27/(byte) keyboard_events_size#62 ) (byte) keyboard_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 @@ -245,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#60 ← phi( keyboard_event_scan::@27/(byte) keyboard_events_size#61 ) + (byte) keyboard_events_size#61 ← phi( keyboard_event_scan::@27/(byte) keyboard_events_size#62 ) (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 @@ -289,8 +293,8 @@ keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_s (byte) keyboard_modifiers#6 ← (byte) keyboard_modifiers#14 return to:@return -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_movedown::@1 - (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_pressed::keycode#2 keyboard_event_scan::@11/(byte) keyboard_event_pressed::keycode#3 keyboard_event_scan::@20/(byte) keyboard_event_pressed::keycode#0 keyboard_event_scan::@9/(byte) keyboard_event_pressed::keycode#1 play_movedown::@1/(byte) keyboard_event_pressed::keycode#4 ) +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 + (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_pressed::keycode#2 keyboard_event_scan::@11/(byte) keyboard_event_pressed::keycode#3 keyboard_event_scan::@20/(byte) keyboard_event_pressed::keycode#0 keyboard_event_scan::@9/(byte) keyboard_event_pressed::keycode#1 play_move_down::@1/(byte) keyboard_event_pressed::keycode#4 ) (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 (byte) keyboard_event_pressed::row_bits#0 ← *((byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 @@ -343,46 +347,46 @@ keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get (byte) current_movedown_rate#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 (byte) current_movedown_rate_fast#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 (byte) current_movedown_counter#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@13 -main: scope:[main] from @20 - (byte) current_movedown_counter#40 ← phi( @20/(byte) current_movedown_counter#20 ) - (byte) keyboard_modifiers#47 ← phi( @20/(byte) keyboard_modifiers#25 ) - (byte) keyboard_events_size#62 ← phi( @20/(byte) keyboard_events_size#28 ) - (byte) current_ypos#38 ← phi( @20/(byte) current_ypos#37 ) - (byte) current_xpos#44 ← phi( @20/(byte) current_xpos#43 ) - (byte) current_piece_color#27 ← phi( @20/(byte) current_piece_color#26 ) - (byte*) current_piece_gfx#39 ← phi( @20/(byte*) current_piece_gfx#38 ) - (byte) current_piece_orientation#34 ← phi( @20/(byte) current_piece_orientation#33 ) - (byte*) current_piece#27 ← phi( @20/(byte*) current_piece#26 ) - (byte*) SCREEN#2 ← phi( @20/(byte*) SCREEN#3 ) + to:@15 +main: scope:[main] from @21 + (byte) current_movedown_counter#41 ← phi( @21/(byte) current_movedown_counter#20 ) + (byte) keyboard_modifiers#47 ← phi( @21/(byte) keyboard_modifiers#25 ) + (byte) keyboard_events_size#63 ← phi( @21/(byte) keyboard_events_size#28 ) + (byte) current_ypos#41 ← phi( @21/(byte) current_ypos#40 ) + (byte) current_xpos#47 ← phi( @21/(byte) current_xpos#46 ) + (byte) current_piece_color#27 ← phi( @21/(byte) current_piece_color#26 ) + (byte*) current_piece_gfx#37 ← phi( @21/(byte*) current_piece_gfx#36 ) + (byte) current_piece_orientation#41 ← phi( @21/(byte) current_piece_orientation#40 ) + (byte*) current_piece#30 ← phi( @21/(byte*) current_piece#29 ) + (byte*) SCREEN#2 ← phi( @21/(byte*) SCREEN#3 ) asm { sei } call init to:main::@21 main::@21: scope:[main] from main - (byte) current_movedown_counter#36 ← phi( main/(byte) current_movedown_counter#40 ) + (byte) current_movedown_counter#37 ← phi( main/(byte) current_movedown_counter#41 ) (byte) keyboard_modifiers#44 ← phi( main/(byte) keyboard_modifiers#47 ) - (byte) keyboard_events_size#56 ← phi( main/(byte) keyboard_events_size#62 ) - (byte) current_ypos#23 ← phi( main/(byte) current_ypos#38 ) - (byte) current_xpos#29 ← phi( main/(byte) current_xpos#44 ) + (byte) keyboard_events_size#56 ← phi( main/(byte) keyboard_events_size#63 ) + (byte) current_ypos#24 ← phi( main/(byte) current_ypos#41 ) + (byte) current_xpos#30 ← phi( main/(byte) current_xpos#47 ) (byte) current_piece_color#18 ← phi( main/(byte) current_piece_color#27 ) - (byte*) current_piece_gfx#25 ← phi( main/(byte*) current_piece_gfx#39 ) - (byte) current_piece_orientation#24 ← phi( main/(byte) current_piece_orientation#34 ) - (byte*) current_piece#18 ← phi( main/(byte*) current_piece#27 ) + (byte*) current_piece_gfx#23 ← phi( main/(byte*) current_piece_gfx#37 ) + (byte) current_piece_orientation#26 ← phi( main/(byte) current_piece_orientation#41 ) + (byte*) current_piece#18 ← phi( main/(byte*) current_piece#30 ) call spawn_current to:main::@22 main::@22: scope:[main] from main::@21 - (byte) current_movedown_counter#33 ← phi( main::@21/(byte) current_movedown_counter#36 ) + (byte) current_movedown_counter#33 ← phi( main::@21/(byte) current_movedown_counter#37 ) (byte) keyboard_modifiers#39 ← phi( main::@21/(byte) keyboard_modifiers#44 ) (byte) keyboard_events_size#48 ← phi( main::@21/(byte) keyboard_events_size#56 ) (byte) current_ypos#10 ← phi( main::@21/(byte) current_ypos#8 ) - (byte) current_xpos#13 ← phi( main::@21/(byte) current_xpos#8 ) + (byte) current_xpos#13 ← phi( main::@21/(byte) current_xpos#11 ) (byte) current_piece_color#9 ← phi( main::@21/(byte) current_piece_color#7 ) - (byte*) current_piece_gfx#13 ← phi( main::@21/(byte*) current_piece_gfx#8 ) - (byte) current_piece_orientation#13 ← phi( main::@21/(byte) current_piece_orientation#8 ) + (byte*) current_piece_gfx#12 ← phi( main::@21/(byte*) current_piece_gfx#10 ) + (byte) current_piece_orientation#12 ← phi( main::@21/(byte) current_piece_orientation#10 ) (byte*) current_piece#9 ← phi( main::@21/(byte*) current_piece#7 ) (byte*) current_piece#1 ← (byte*) current_piece#9 - (byte) current_piece_orientation#1 ← (byte) current_piece_orientation#13 - (byte*) current_piece_gfx#1 ← (byte*) current_piece_gfx#13 + (byte) current_piece_orientation#1 ← (byte) current_piece_orientation#12 + (byte*) current_piece_gfx#1 ← (byte*) current_piece_gfx#12 (byte) current_piece_color#1 ← (byte) current_piece_color#9 (byte) current_xpos#1 ← (byte) current_xpos#13 (byte) current_ypos#1 ← (byte) current_ypos#10 @@ -392,103 +396,103 @@ main::@23: scope:[main] from main::@22 (byte) current_movedown_counter#27 ← phi( main::@22/(byte) current_movedown_counter#33 ) (byte) keyboard_modifiers#33 ← phi( main::@22/(byte) keyboard_modifiers#39 ) (byte) keyboard_events_size#39 ← phi( main::@22/(byte) keyboard_events_size#48 ) - (byte) current_xpos#63 ← phi( main::@22/(byte) current_xpos#1 ) + (byte) current_xpos#65 ← phi( main::@22/(byte) current_xpos#1 ) (byte) current_piece_color#38 ← phi( main::@22/(byte) current_piece_color#1 ) - (byte*) current_piece_gfx#62 ← phi( main::@22/(byte*) current_piece_gfx#1 ) - (byte) current_piece_orientation#49 ← phi( main::@22/(byte) current_piece_orientation#1 ) - (byte*) current_piece#36 ← phi( main::@22/(byte*) current_piece#1 ) - (byte) current_ypos#47 ← phi( main::@22/(byte) current_ypos#1 ) + (byte*) current_piece_gfx#53 ← phi( main::@22/(byte*) current_piece_gfx#1 ) + (byte) current_piece_orientation#51 ← phi( main::@22/(byte) current_piece_orientation#1 ) + (byte*) current_piece#42 ← phi( main::@22/(byte*) current_piece#1 ) + (byte) current_ypos#38 ← phi( main::@22/(byte) current_ypos#1 ) call render_current to:main::@24 main::@24: scope:[main] from main::@23 (byte) current_movedown_counter#22 ← phi( main::@23/(byte) current_movedown_counter#27 ) (byte) keyboard_modifiers#30 ← phi( main::@23/(byte) keyboard_modifiers#33 ) (byte) keyboard_events_size#33 ← phi( main::@23/(byte) keyboard_events_size#39 ) - (byte) current_ypos#40 ← phi( main::@23/(byte) current_ypos#47 ) - (byte) current_xpos#46 ← phi( main::@23/(byte) current_xpos#63 ) + (byte) current_ypos#43 ← phi( main::@23/(byte) current_ypos#38 ) + (byte) current_xpos#49 ← phi( main::@23/(byte) current_xpos#65 ) (byte) current_piece_color#29 ← phi( main::@23/(byte) current_piece_color#38 ) - (byte*) current_piece_gfx#41 ← phi( main::@23/(byte*) current_piece_gfx#62 ) - (byte) current_piece_orientation#36 ← phi( main::@23/(byte) current_piece_orientation#49 ) - (byte*) current_piece#29 ← phi( main::@23/(byte*) current_piece#36 ) + (byte*) current_piece_gfx#39 ← phi( main::@23/(byte*) current_piece_gfx#53 ) + (byte) current_piece_orientation#43 ← phi( main::@23/(byte) current_piece_orientation#51 ) + (byte*) current_piece#32 ← phi( main::@23/(byte*) current_piece#42 ) to:main::@1 main::@1: scope:[main] from main::@10 main::@24 (byte) current_movedown_counter#15 ← phi( main::@10/(byte) current_movedown_counter#21 main::@24/(byte) current_movedown_counter#22 ) (byte) keyboard_modifiers#24 ← phi( main::@10/(byte) keyboard_modifiers#29 main::@24/(byte) keyboard_modifiers#30 ) (byte) keyboard_events_size#27 ← phi( main::@10/(byte) keyboard_events_size#32 main::@24/(byte) keyboard_events_size#33 ) - (byte) current_ypos#25 ← phi( main::@10/(byte) current_ypos#39 main::@24/(byte) current_ypos#40 ) - (byte) current_xpos#31 ← phi( main::@10/(byte) current_xpos#45 main::@24/(byte) current_xpos#46 ) + (byte) current_ypos#26 ← phi( main::@10/(byte) current_ypos#42 main::@24/(byte) current_ypos#43 ) + (byte) current_xpos#32 ← phi( main::@10/(byte) current_xpos#48 main::@24/(byte) current_xpos#49 ) (byte) current_piece_color#20 ← phi( main::@10/(byte) current_piece_color#28 main::@24/(byte) current_piece_color#29 ) - (byte*) current_piece_gfx#27 ← phi( main::@10/(byte*) current_piece_gfx#40 main::@24/(byte*) current_piece_gfx#41 ) - (byte) current_piece_orientation#26 ← phi( main::@10/(byte) current_piece_orientation#35 main::@24/(byte) current_piece_orientation#36 ) - (byte*) current_piece#20 ← phi( main::@10/(byte*) current_piece#28 main::@24/(byte*) current_piece#29 ) + (byte*) current_piece_gfx#26 ← phi( main::@10/(byte*) current_piece_gfx#38 main::@24/(byte*) current_piece_gfx#39 ) + (byte) current_piece_orientation#29 ← phi( main::@10/(byte) current_piece_orientation#42 main::@24/(byte) current_piece_orientation#43 ) + (byte*) current_piece#20 ← phi( main::@10/(byte*) current_piece#31 main::@24/(byte*) current_piece#32 ) if(true) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - (byte) current_xpos#88 ← phi( main::@1/(byte) current_xpos#31 ) - (byte) current_piece_color#64 ← phi( main::@1/(byte) current_piece_color#20 ) - (byte*) current_piece_gfx#93 ← phi( main::@1/(byte*) current_piece_gfx#27 ) - (byte) current_piece_orientation#71 ← phi( main::@1/(byte) current_piece_orientation#26 ) - (byte*) current_piece#56 ← phi( main::@1/(byte*) current_piece#20 ) - (byte) current_ypos#72 ← phi( main::@1/(byte) current_ypos#25 ) - (byte) current_movedown_counter#41 ← phi( main::@1/(byte) current_movedown_counter#15 ) + (byte) current_xpos#89 ← phi( main::@1/(byte) current_xpos#32 ) + (byte) current_piece_color#65 ← phi( main::@1/(byte) current_piece_color#20 ) + (byte*) current_piece_gfx#77 ← phi( main::@1/(byte*) current_piece_gfx#26 ) + (byte) current_piece_orientation#68 ← phi( main::@1/(byte) current_piece_orientation#29 ) + (byte*) current_piece#62 ← phi( main::@1/(byte*) current_piece#20 ) + (byte) current_ypos#69 ← phi( main::@1/(byte) current_ypos#26 ) + (byte) current_movedown_counter#42 ← phi( main::@1/(byte) current_movedown_counter#15 ) (byte) keyboard_modifiers#40 ← phi( main::@1/(byte) keyboard_modifiers#24 ) (byte) keyboard_events_size#49 ← phi( main::@1/(byte) keyboard_events_size#27 ) to:main::@4 main::@4: scope:[main] from main::@2 main::@5 - (byte) current_xpos#83 ← phi( main::@2/(byte) current_xpos#88 main::@5/(byte) current_xpos#89 ) - (byte) current_piece_color#57 ← phi( main::@2/(byte) current_piece_color#64 main::@5/(byte) current_piece_color#65 ) - (byte*) current_piece_gfx#87 ← phi( main::@2/(byte*) current_piece_gfx#93 main::@5/(byte*) current_piece_gfx#94 ) - (byte) current_piece_orientation#66 ← phi( main::@2/(byte) current_piece_orientation#71 main::@5/(byte) current_piece_orientation#72 ) - (byte*) current_piece#51 ← phi( main::@2/(byte*) current_piece#56 main::@5/(byte*) current_piece#57 ) - (byte) current_ypos#68 ← phi( main::@2/(byte) current_ypos#72 main::@5/(byte) current_ypos#73 ) - (byte) current_movedown_counter#37 ← phi( main::@2/(byte) current_movedown_counter#41 main::@5/(byte) current_movedown_counter#42 ) + (byte) current_xpos#84 ← phi( main::@2/(byte) current_xpos#89 main::@5/(byte) current_xpos#90 ) + (byte) current_piece_color#58 ← phi( main::@2/(byte) current_piece_color#65 main::@5/(byte) current_piece_color#66 ) + (byte*) current_piece_gfx#72 ← phi( main::@2/(byte*) current_piece_gfx#77 main::@5/(byte*) current_piece_gfx#78 ) + (byte) current_piece_orientation#63 ← phi( main::@2/(byte) current_piece_orientation#68 main::@5/(byte) current_piece_orientation#69 ) + (byte*) current_piece#57 ← phi( main::@2/(byte*) current_piece#62 main::@5/(byte*) current_piece#63 ) + (byte) current_ypos#65 ← phi( main::@2/(byte) current_ypos#69 main::@5/(byte) current_ypos#70 ) + (byte) current_movedown_counter#38 ← phi( main::@2/(byte) current_movedown_counter#42 main::@5/(byte) current_movedown_counter#43 ) (byte) keyboard_modifiers#34 ← phi( main::@2/(byte) keyboard_modifiers#40 main::@5/(byte) keyboard_modifiers#41 ) (byte) keyboard_events_size#40 ← phi( main::@2/(byte) keyboard_events_size#49 main::@5/(byte) keyboard_events_size#50 ) (bool~) main::$4 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 255 if((bool~) main::$4) goto main::@5 to:main::@7 main::@5: scope:[main] from main::@4 - (byte) current_xpos#89 ← phi( main::@4/(byte) current_xpos#83 ) - (byte) current_piece_color#65 ← phi( main::@4/(byte) current_piece_color#57 ) - (byte*) current_piece_gfx#94 ← phi( main::@4/(byte*) current_piece_gfx#87 ) - (byte) current_piece_orientation#72 ← phi( main::@4/(byte) current_piece_orientation#66 ) - (byte*) current_piece#57 ← phi( main::@4/(byte*) current_piece#51 ) - (byte) current_ypos#73 ← phi( main::@4/(byte) current_ypos#68 ) - (byte) current_movedown_counter#42 ← phi( main::@4/(byte) current_movedown_counter#37 ) + (byte) current_xpos#90 ← phi( main::@4/(byte) current_xpos#84 ) + (byte) current_piece_color#66 ← phi( main::@4/(byte) current_piece_color#58 ) + (byte*) current_piece_gfx#78 ← phi( main::@4/(byte*) current_piece_gfx#72 ) + (byte) current_piece_orientation#69 ← phi( main::@4/(byte) current_piece_orientation#63 ) + (byte*) current_piece#63 ← phi( main::@4/(byte*) current_piece#57 ) + (byte) current_ypos#70 ← phi( main::@4/(byte) current_ypos#65 ) + (byte) current_movedown_counter#43 ← phi( main::@4/(byte) current_movedown_counter#38 ) (byte) keyboard_modifiers#41 ← phi( main::@4/(byte) keyboard_modifiers#34 ) (byte) keyboard_events_size#50 ← phi( main::@4/(byte) keyboard_events_size#40 ) to:main::@4 main::@7: scope:[main] from main::@4 main::@8 - (byte) current_xpos#77 ← phi( main::@4/(byte) current_xpos#83 main::@8/(byte) current_xpos#84 ) - (byte) current_piece_color#49 ← phi( main::@4/(byte) current_piece_color#57 main::@8/(byte) current_piece_color#58 ) - (byte*) current_piece_gfx#78 ← phi( main::@4/(byte*) current_piece_gfx#87 main::@8/(byte*) current_piece_gfx#88 ) - (byte) current_piece_orientation#58 ← phi( main::@4/(byte) current_piece_orientation#66 main::@8/(byte) current_piece_orientation#67 ) - (byte*) current_piece#44 ← phi( main::@4/(byte*) current_piece#51 main::@8/(byte*) current_piece#52 ) - (byte) current_ypos#63 ← phi( main::@4/(byte) current_ypos#68 main::@8/(byte) current_ypos#69 ) - (byte) current_movedown_counter#34 ← phi( main::@4/(byte) current_movedown_counter#37 main::@8/(byte) current_movedown_counter#38 ) + (byte) current_xpos#77 ← phi( main::@4/(byte) current_xpos#84 main::@8/(byte) current_xpos#85 ) + (byte) current_piece_color#49 ← phi( main::@4/(byte) current_piece_color#58 main::@8/(byte) current_piece_color#59 ) + (byte*) current_piece_gfx#64 ← phi( main::@4/(byte*) current_piece_gfx#72 main::@8/(byte*) current_piece_gfx#73 ) + (byte) current_piece_orientation#59 ← phi( main::@4/(byte) current_piece_orientation#63 main::@8/(byte) current_piece_orientation#64 ) + (byte*) current_piece#51 ← phi( main::@4/(byte*) current_piece#57 main::@8/(byte*) current_piece#58 ) + (byte) current_ypos#62 ← phi( main::@4/(byte) current_ypos#65 main::@8/(byte) current_ypos#66 ) + (byte) current_movedown_counter#34 ← phi( main::@4/(byte) current_movedown_counter#38 main::@8/(byte) current_movedown_counter#39 ) (byte) keyboard_modifiers#31 ← phi( main::@4/(byte) keyboard_modifiers#34 main::@8/(byte) keyboard_modifiers#35 ) (byte) keyboard_events_size#34 ← phi( main::@4/(byte) keyboard_events_size#40 main::@8/(byte) keyboard_events_size#41 ) (bool~) main::$5 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 254 if((bool~) main::$5) goto main::@8 to:main::@9 main::@8: scope:[main] from main::@7 - (byte) current_xpos#84 ← phi( main::@7/(byte) current_xpos#77 ) - (byte) current_piece_color#58 ← phi( main::@7/(byte) current_piece_color#49 ) - (byte*) current_piece_gfx#88 ← phi( main::@7/(byte*) current_piece_gfx#78 ) - (byte) current_piece_orientation#67 ← phi( main::@7/(byte) current_piece_orientation#58 ) - (byte*) current_piece#52 ← phi( main::@7/(byte*) current_piece#44 ) - (byte) current_ypos#69 ← phi( main::@7/(byte) current_ypos#63 ) - (byte) current_movedown_counter#38 ← phi( main::@7/(byte) current_movedown_counter#34 ) + (byte) current_xpos#85 ← phi( main::@7/(byte) current_xpos#77 ) + (byte) current_piece_color#59 ← phi( main::@7/(byte) current_piece_color#49 ) + (byte*) current_piece_gfx#73 ← phi( main::@7/(byte*) current_piece_gfx#64 ) + (byte) current_piece_orientation#64 ← phi( main::@7/(byte) current_piece_orientation#59 ) + (byte*) current_piece#58 ← phi( main::@7/(byte*) current_piece#51 ) + (byte) current_ypos#66 ← phi( main::@7/(byte) current_ypos#62 ) + (byte) current_movedown_counter#39 ← phi( main::@7/(byte) current_movedown_counter#34 ) (byte) keyboard_modifiers#35 ← phi( main::@7/(byte) keyboard_modifiers#31 ) (byte) keyboard_events_size#41 ← phi( main::@7/(byte) keyboard_events_size#34 ) to:main::@7 main::@9: scope:[main] from main::@7 - (byte) current_xpos#64 ← phi( main::@7/(byte) current_xpos#77 ) + (byte) current_xpos#66 ← phi( main::@7/(byte) current_xpos#77 ) (byte) current_piece_color#39 ← phi( main::@7/(byte) current_piece_color#49 ) - (byte*) current_piece_gfx#63 ← phi( main::@7/(byte*) current_piece_gfx#78 ) - (byte) current_piece_orientation#50 ← phi( main::@7/(byte) current_piece_orientation#58 ) - (byte*) current_piece#37 ← phi( main::@7/(byte*) current_piece#44 ) - (byte) current_ypos#51 ← phi( main::@7/(byte) current_ypos#63 ) + (byte*) current_piece_gfx#54 ← phi( main::@7/(byte*) current_piece_gfx#64 ) + (byte) current_piece_orientation#52 ← phi( main::@7/(byte) current_piece_orientation#59 ) + (byte*) current_piece#43 ← phi( main::@7/(byte*) current_piece#51 ) + (byte) current_ypos#53 ← phi( main::@7/(byte) current_ypos#62 ) (byte) current_movedown_counter#28 ← phi( main::@7/(byte) current_movedown_counter#34 ) (byte) keyboard_modifiers#23 ← phi( main::@7/(byte) keyboard_modifiers#31 ) (byte) keyboard_events_size#26 ← phi( main::@7/(byte) keyboard_events_size#34 ) @@ -496,12 +500,12 @@ main::@9: scope:[main] from main::@7 call keyboard_event_scan to:main::@25 main::@25: scope:[main] from main::@9 - (byte) current_xpos#47 ← phi( main::@9/(byte) current_xpos#64 ) + (byte) current_xpos#50 ← phi( main::@9/(byte) current_xpos#66 ) (byte) current_piece_color#30 ← phi( main::@9/(byte) current_piece_color#39 ) - (byte*) current_piece_gfx#42 ← phi( main::@9/(byte*) current_piece_gfx#63 ) - (byte) current_piece_orientation#37 ← phi( main::@9/(byte) current_piece_orientation#50 ) - (byte*) current_piece#30 ← phi( main::@9/(byte*) current_piece#37 ) - (byte) current_ypos#41 ← phi( main::@9/(byte) current_ypos#51 ) + (byte*) current_piece_gfx#40 ← phi( main::@9/(byte*) current_piece_gfx#54 ) + (byte) current_piece_orientation#44 ← phi( main::@9/(byte) current_piece_orientation#52 ) + (byte*) current_piece#33 ← phi( main::@9/(byte*) current_piece#43 ) + (byte) current_ypos#44 ← phi( main::@9/(byte) current_ypos#53 ) (byte) current_movedown_counter#23 ← phi( main::@9/(byte) current_movedown_counter#28 ) (byte) keyboard_modifiers#15 ← phi( main::@9/(byte) keyboard_modifiers#6 ) (byte) keyboard_events_size#17 ← phi( main::@9/(byte) keyboard_events_size#3 ) @@ -511,13 +515,13 @@ main::@25: scope:[main] from main::@9 (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 to:main::@26 main::@26: scope:[main] from main::@25 - (byte) keyboard_modifiers#45 ← phi( main::@25/(byte) keyboard_modifiers#7 ) - (byte) current_xpos#30 ← phi( main::@25/(byte) current_xpos#47 ) + (byte) keyboard_modifiers#48 ← phi( main::@25/(byte) keyboard_modifiers#7 ) + (byte) current_xpos#31 ← phi( main::@25/(byte) current_xpos#50 ) (byte) current_piece_color#19 ← phi( main::@25/(byte) current_piece_color#30 ) - (byte*) current_piece_gfx#26 ← phi( main::@25/(byte*) current_piece_gfx#42 ) - (byte) current_piece_orientation#25 ← phi( main::@25/(byte) current_piece_orientation#37 ) - (byte*) current_piece#19 ← phi( main::@25/(byte*) current_piece#30 ) - (byte) current_ypos#24 ← phi( main::@25/(byte) current_ypos#41 ) + (byte*) current_piece_gfx#24 ← phi( main::@25/(byte*) current_piece_gfx#40 ) + (byte) current_piece_orientation#27 ← phi( main::@25/(byte) current_piece_orientation#44 ) + (byte*) current_piece#19 ← phi( main::@25/(byte*) current_piece#33 ) + (byte) current_ypos#25 ← phi( main::@25/(byte) current_ypos#44 ) (byte) current_movedown_counter#14 ← phi( main::@25/(byte) current_movedown_counter#23 ) (byte) keyboard_events_size#18 ← phi( main::@25/(byte) keyboard_events_size#5 ) (byte) keyboard_event_get::return#5 ← phi( main::@25/(byte) keyboard_event_get::return#3 ) @@ -525,119 +529,138 @@ main::@26: scope:[main] from main::@25 (byte) keyboard_events_size#7 ← (byte) keyboard_events_size#18 (byte) main::key_event#0 ← (byte~) main::$7 (byte) main::render#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) play_movedown::key_event#0 ← (byte) main::key_event#0 - call play_movedown - (byte) play_movedown::return#0 ← (byte) play_movedown::return#3 + (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 + call play_move_down + (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 to:main::@27 main::@27: scope:[main] from main::@26 - (byte) keyboard_modifiers#42 ← phi( main::@26/(byte) keyboard_modifiers#45 ) - (byte) keyboard_events_size#51 ← phi( main::@26/(byte) keyboard_events_size#7 ) + (byte) keyboard_modifiers#45 ← phi( main::@26/(byte) keyboard_modifiers#48 ) + (byte) keyboard_events_size#57 ← phi( main::@26/(byte) keyboard_events_size#7 ) (byte) main::key_event#1 ← phi( main::@26/(byte) main::key_event#0 ) - (byte) main::render#3 ← phi( main::@26/(byte) main::render#0 ) + (byte) main::render#4 ← phi( main::@26/(byte) main::render#0 ) (byte) current_xpos#14 ← phi( main::@26/(byte) current_xpos#6 ) (byte) current_piece_color#10 ← phi( main::@26/(byte) current_piece_color#5 ) - (byte*) current_piece_gfx#14 ← phi( main::@26/(byte*) current_piece_gfx#6 ) - (byte) current_piece_orientation#14 ← phi( main::@26/(byte) current_piece_orientation#6 ) + (byte*) current_piece_gfx#13 ← phi( main::@26/(byte*) current_piece_gfx#6 ) + (byte) current_piece_orientation#13 ← phi( main::@26/(byte) current_piece_orientation#6 ) (byte*) current_piece#10 ← phi( main::@26/(byte*) current_piece#5 ) (byte) current_ypos#11 ← phi( main::@26/(byte) current_ypos#6 ) (byte) current_movedown_counter#7 ← phi( main::@26/(byte) current_movedown_counter#5 ) - (byte) play_movedown::return#4 ← phi( main::@26/(byte) play_movedown::return#0 ) - (byte~) main::$8 ← (byte) play_movedown::return#4 + (byte) play_move_down::return#4 ← phi( main::@26/(byte) play_move_down::return#0 ) + (byte~) main::$8 ← (byte) play_move_down::return#4 (byte) current_movedown_counter#1 ← (byte) current_movedown_counter#7 (byte) current_ypos#2 ← (byte) current_ypos#11 (byte*) current_piece#2 ← (byte*) current_piece#10 - (byte) current_piece_orientation#2 ← (byte) current_piece_orientation#14 - (byte*) current_piece_gfx#2 ← (byte*) current_piece_gfx#14 + (byte) current_piece_orientation#2 ← (byte) current_piece_orientation#13 + (byte*) current_piece_gfx#2 ← (byte*) current_piece_gfx#13 (byte) current_piece_color#2 ← (byte) current_piece_color#10 (byte) current_xpos#2 ← (byte) current_xpos#14 - (byte) main::render#1 ← (byte) main::render#3 + (byte~) main::$8 - (byte) play_moveother::key_event#0 ← (byte) main::key_event#1 - call play_moveother - (byte) play_moveother::return#0 ← (byte) play_moveother::return#2 + (byte) main::render#1 ← (byte) main::render#4 + (byte~) main::$8 + (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#1 + call play_move_leftright + (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 to:main::@28 main::@28: scope:[main] from main::@27 - (byte) current_movedown_counter#29 ← phi( main::@27/(byte) current_movedown_counter#1 ) - (byte) keyboard_modifiers#36 ← phi( main::@27/(byte) keyboard_modifiers#42 ) - (byte) keyboard_events_size#42 ← phi( main::@27/(byte) keyboard_events_size#51 ) - (byte) current_ypos#52 ← phi( main::@27/(byte) current_ypos#2 ) - (byte) current_piece_color#40 ← phi( main::@27/(byte) current_piece_color#2 ) - (byte*) current_piece#38 ← phi( main::@27/(byte*) current_piece#2 ) - (byte) main::render#4 ← phi( main::@27/(byte) main::render#1 ) - (byte) current_xpos#15 ← phi( main::@27/(byte) current_xpos#11 ) - (byte*) current_piece_gfx#15 ← phi( main::@27/(byte*) current_piece_gfx#11 ) - (byte) current_piece_orientation#15 ← phi( main::@27/(byte) current_piece_orientation#11 ) - (byte) play_moveother::return#3 ← phi( main::@27/(byte) play_moveother::return#0 ) - (byte~) main::$9 ← (byte) play_moveother::return#3 - (byte) current_piece_orientation#3 ← (byte) current_piece_orientation#15 - (byte*) current_piece_gfx#3 ← (byte*) current_piece_gfx#15 + (byte) current_movedown_counter#35 ← phi( main::@27/(byte) current_movedown_counter#1 ) + (byte) keyboard_modifiers#42 ← phi( main::@27/(byte) keyboard_modifiers#45 ) + (byte) keyboard_events_size#51 ← phi( main::@27/(byte) keyboard_events_size#57 ) + (byte) current_piece_color#50 ← phi( main::@27/(byte) current_piece_color#2 ) + (byte*) current_piece#52 ← phi( main::@27/(byte*) current_piece#2 ) + (byte) current_ypos#59 ← phi( main::@27/(byte) current_ypos#2 ) + (byte*) current_piece_gfx#25 ← phi( main::@27/(byte*) current_piece_gfx#2 ) + (byte) current_piece_orientation#28 ← phi( main::@27/(byte) current_piece_orientation#2 ) + (byte) main::key_event#2 ← phi( main::@27/(byte) main::key_event#1 ) + (byte) main::render#5 ← phi( main::@27/(byte) main::render#1 ) + (byte) current_xpos#15 ← phi( main::@27/(byte) current_xpos#8 ) + (byte) play_move_leftright::return#5 ← phi( main::@27/(byte) play_move_leftright::return#0 ) + (byte~) main::$9 ← (byte) play_move_leftright::return#5 (byte) current_xpos#3 ← (byte) current_xpos#15 - (byte) main::render#2 ← (byte) main::render#4 + (byte~) main::$9 - (bool~) main::$10 ← (byte) main::render#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) main::$11 ← ! (bool~) main::$10 - if((bool~) main::$11) goto main::@10 + (byte) main::render#2 ← (byte) main::render#5 + (byte~) main::$9 + (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#2 + call play_move_rotate + (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + to:main::@29 +main::@29: scope:[main] from main::@28 + (byte) current_movedown_counter#29 ← phi( main::@28/(byte) current_movedown_counter#35 ) + (byte) keyboard_modifiers#36 ← phi( main::@28/(byte) keyboard_modifiers#42 ) + (byte) keyboard_events_size#42 ← phi( main::@28/(byte) keyboard_events_size#51 ) + (byte) current_ypos#54 ← phi( main::@28/(byte) current_ypos#59 ) + (byte) current_xpos#67 ← phi( main::@28/(byte) current_xpos#3 ) + (byte) current_piece_color#40 ← phi( main::@28/(byte) current_piece_color#50 ) + (byte*) current_piece#44 ← phi( main::@28/(byte*) current_piece#52 ) + (byte) main::render#6 ← phi( main::@28/(byte) main::render#2 ) + (byte*) current_piece_gfx#14 ← phi( main::@28/(byte*) current_piece_gfx#7 ) + (byte) current_piece_orientation#14 ← phi( main::@28/(byte) current_piece_orientation#7 ) + (byte) play_move_rotate::return#5 ← phi( main::@28/(byte) play_move_rotate::return#0 ) + (byte~) main::$10 ← (byte) play_move_rotate::return#5 + (byte) current_piece_orientation#3 ← (byte) current_piece_orientation#14 + (byte*) current_piece_gfx#3 ← (byte*) current_piece_gfx#14 + (byte) main::render#3 ← (byte) main::render#6 + (byte~) main::$10 + (bool~) main::$11 ← (byte) main::render#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) main::$12 ← ! (bool~) main::$11 + if((bool~) main::$12) goto main::@10 to:main::@19 -main::@10: scope:[main] from main::@28 main::@30 - (byte) current_movedown_counter#21 ← phi( main::@28/(byte) current_movedown_counter#29 main::@30/(byte) current_movedown_counter#30 ) - (byte) keyboard_modifiers#29 ← phi( main::@28/(byte) keyboard_modifiers#36 main::@30/(byte) keyboard_modifiers#37 ) - (byte) keyboard_events_size#32 ← phi( main::@28/(byte) keyboard_events_size#42 main::@30/(byte) keyboard_events_size#43 ) - (byte) current_ypos#39 ← phi( main::@28/(byte) current_ypos#52 main::@30/(byte) current_ypos#53 ) - (byte) current_xpos#45 ← phi( main::@28/(byte) current_xpos#3 main::@30/(byte) current_xpos#65 ) - (byte) current_piece_color#28 ← phi( main::@28/(byte) current_piece_color#40 main::@30/(byte) current_piece_color#41 ) - (byte*) current_piece_gfx#40 ← phi( main::@28/(byte*) current_piece_gfx#3 main::@30/(byte*) current_piece_gfx#64 ) - (byte) current_piece_orientation#35 ← phi( main::@28/(byte) current_piece_orientation#3 main::@30/(byte) current_piece_orientation#51 ) - (byte*) current_piece#28 ← phi( main::@28/(byte*) current_piece#38 main::@30/(byte*) current_piece#39 ) +main::@10: scope:[main] from main::@29 main::@31 + (byte) current_movedown_counter#21 ← phi( main::@29/(byte) current_movedown_counter#29 main::@31/(byte) current_movedown_counter#30 ) + (byte) keyboard_modifiers#29 ← phi( main::@29/(byte) keyboard_modifiers#36 main::@31/(byte) keyboard_modifiers#37 ) + (byte) keyboard_events_size#32 ← phi( main::@29/(byte) keyboard_events_size#42 main::@31/(byte) keyboard_events_size#43 ) + (byte) current_ypos#42 ← phi( main::@29/(byte) current_ypos#54 main::@31/(byte) current_ypos#55 ) + (byte) current_xpos#48 ← phi( main::@29/(byte) current_xpos#67 main::@31/(byte) current_xpos#68 ) + (byte) current_piece_color#28 ← phi( main::@29/(byte) current_piece_color#40 main::@31/(byte) current_piece_color#41 ) + (byte*) current_piece_gfx#38 ← phi( main::@29/(byte*) current_piece_gfx#3 main::@31/(byte*) current_piece_gfx#55 ) + (byte) current_piece_orientation#42 ← phi( main::@29/(byte) current_piece_orientation#3 main::@31/(byte) current_piece_orientation#53 ) + (byte*) current_piece#31 ← phi( main::@29/(byte*) current_piece#44 main::@31/(byte*) current_piece#45 ) *((byte*) BORDERCOL#0) ← -- *((byte*) BORDERCOL#0) to:main::@1 -main::@19: scope:[main] from main::@28 - (byte) current_movedown_counter#39 ← phi( main::@28/(byte) current_movedown_counter#29 ) - (byte) keyboard_modifiers#46 ← phi( main::@28/(byte) keyboard_modifiers#36 ) - (byte) keyboard_events_size#57 ← phi( main::@28/(byte) keyboard_events_size#42 ) - (byte) current_xpos#85 ← phi( main::@28/(byte) current_xpos#3 ) - (byte) current_piece_color#59 ← phi( main::@28/(byte) current_piece_color#40 ) - (byte*) current_piece_gfx#89 ← phi( main::@28/(byte*) current_piece_gfx#3 ) - (byte) current_piece_orientation#68 ← phi( main::@28/(byte) current_piece_orientation#3 ) - (byte*) current_piece#53 ← phi( main::@28/(byte*) current_piece#38 ) - (byte) current_ypos#54 ← phi( main::@28/(byte) current_ypos#52 ) +main::@19: scope:[main] from main::@29 + (byte) current_movedown_counter#40 ← phi( main::@29/(byte) current_movedown_counter#29 ) + (byte) keyboard_modifiers#46 ← phi( main::@29/(byte) keyboard_modifiers#36 ) + (byte) keyboard_events_size#58 ← phi( main::@29/(byte) keyboard_events_size#42 ) + (byte) current_piece_color#60 ← phi( main::@29/(byte) current_piece_color#40 ) + (byte*) current_piece_gfx#74 ← phi( main::@29/(byte*) current_piece_gfx#3 ) + (byte) current_piece_orientation#65 ← phi( main::@29/(byte) current_piece_orientation#3 ) + (byte*) current_piece#59 ← phi( main::@29/(byte*) current_piece#44 ) + (byte) current_xpos#78 ← phi( main::@29/(byte) current_xpos#67 ) + (byte) current_ypos#45 ← phi( main::@29/(byte) current_ypos#54 ) *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0) call render_playfield - to:main::@29 -main::@29: scope:[main] from main::@19 - (byte) current_movedown_counter#35 ← phi( main::@19/(byte) current_movedown_counter#39 ) - (byte) keyboard_modifiers#43 ← phi( main::@19/(byte) keyboard_modifiers#46 ) - (byte) keyboard_events_size#52 ← phi( main::@19/(byte) keyboard_events_size#57 ) - (byte) current_xpos#78 ← phi( main::@19/(byte) current_xpos#85 ) - (byte) current_piece_color#50 ← phi( main::@19/(byte) current_piece_color#59 ) - (byte*) current_piece_gfx#79 ← phi( main::@19/(byte*) current_piece_gfx#89 ) - (byte) current_piece_orientation#59 ← phi( main::@19/(byte) current_piece_orientation#68 ) - (byte*) current_piece#45 ← phi( main::@19/(byte*) current_piece#53 ) - (byte) current_ypos#48 ← phi( main::@19/(byte) current_ypos#54 ) - call render_current to:main::@30 -main::@30: scope:[main] from main::@29 - (byte) current_movedown_counter#30 ← phi( main::@29/(byte) current_movedown_counter#35 ) - (byte) keyboard_modifiers#37 ← phi( main::@29/(byte) keyboard_modifiers#43 ) - (byte) keyboard_events_size#43 ← phi( main::@29/(byte) keyboard_events_size#52 ) - (byte) current_ypos#53 ← phi( main::@29/(byte) current_ypos#48 ) - (byte) current_xpos#65 ← phi( main::@29/(byte) current_xpos#78 ) - (byte) current_piece_color#41 ← phi( main::@29/(byte) current_piece_color#50 ) - (byte*) current_piece_gfx#64 ← phi( main::@29/(byte*) current_piece_gfx#79 ) - (byte) current_piece_orientation#51 ← phi( main::@29/(byte) current_piece_orientation#59 ) - (byte*) current_piece#39 ← phi( main::@29/(byte*) current_piece#45 ) +main::@30: scope:[main] from main::@19 + (byte) current_movedown_counter#36 ← phi( main::@19/(byte) current_movedown_counter#40 ) + (byte) keyboard_modifiers#43 ← phi( main::@19/(byte) keyboard_modifiers#46 ) + (byte) keyboard_events_size#52 ← phi( main::@19/(byte) keyboard_events_size#58 ) + (byte) current_piece_color#51 ← phi( main::@19/(byte) current_piece_color#60 ) + (byte*) current_piece_gfx#65 ← phi( main::@19/(byte*) current_piece_gfx#74 ) + (byte) current_piece_orientation#60 ← phi( main::@19/(byte) current_piece_orientation#65 ) + (byte*) current_piece#53 ← phi( main::@19/(byte*) current_piece#59 ) + (byte) current_xpos#75 ← phi( main::@19/(byte) current_xpos#78 ) + (byte) current_ypos#39 ← phi( main::@19/(byte) current_ypos#45 ) + call render_current + to:main::@31 +main::@31: scope:[main] from main::@30 + (byte) current_movedown_counter#30 ← phi( main::@30/(byte) current_movedown_counter#36 ) + (byte) keyboard_modifiers#37 ← phi( main::@30/(byte) keyboard_modifiers#43 ) + (byte) keyboard_events_size#43 ← phi( main::@30/(byte) keyboard_events_size#52 ) + (byte) current_ypos#55 ← phi( main::@30/(byte) current_ypos#39 ) + (byte) current_xpos#68 ← phi( main::@30/(byte) current_xpos#75 ) + (byte) current_piece_color#41 ← phi( main::@30/(byte) current_piece_color#51 ) + (byte*) current_piece_gfx#55 ← phi( main::@30/(byte*) current_piece_gfx#65 ) + (byte) current_piece_orientation#53 ← phi( main::@30/(byte) current_piece_orientation#60 ) + (byte*) current_piece#45 ← phi( main::@30/(byte*) current_piece#53 ) *((byte*) BORDERCOL#0) ← -- *((byte*) BORDERCOL#0) to:main::@10 main::@return: scope:[main] from main::@1 (byte) current_movedown_counter#8 ← phi( main::@1/(byte) current_movedown_counter#15 ) (byte) keyboard_modifiers#16 ← phi( main::@1/(byte) keyboard_modifiers#24 ) (byte) keyboard_events_size#19 ← phi( main::@1/(byte) keyboard_events_size#27 ) - (byte) current_ypos#12 ← phi( main::@1/(byte) current_ypos#25 ) - (byte) current_xpos#16 ← phi( main::@1/(byte) current_xpos#31 ) + (byte) current_ypos#12 ← phi( main::@1/(byte) current_ypos#26 ) + (byte) current_xpos#16 ← phi( main::@1/(byte) current_xpos#32 ) (byte) current_piece_color#11 ← phi( main::@1/(byte) current_piece_color#20 ) - (byte*) current_piece_gfx#16 ← phi( main::@1/(byte*) current_piece_gfx#27 ) - (byte) current_piece_orientation#16 ← phi( main::@1/(byte) current_piece_orientation#26 ) + (byte*) current_piece_gfx#15 ← phi( main::@1/(byte*) current_piece_gfx#26 ) + (byte) current_piece_orientation#15 ← phi( main::@1/(byte) current_piece_orientation#29 ) (byte*) current_piece#11 ← phi( main::@1/(byte*) current_piece#20 ) (byte*) current_piece#3 ← (byte*) current_piece#11 - (byte) current_piece_orientation#4 ← (byte) current_piece_orientation#16 - (byte*) current_piece_gfx#4 ← (byte*) current_piece_gfx#16 + (byte) current_piece_orientation#4 ← (byte) current_piece_orientation#15 + (byte*) current_piece_gfx#4 ← (byte*) current_piece_gfx#15 (byte) current_piece_color#3 ← (byte) current_piece_color#11 (byte) current_xpos#4 ← (byte) current_xpos#16 (byte) current_ypos#3 ← (byte) current_ypos#12 @@ -646,464 +669,650 @@ main::@return: scope:[main] from main::@1 (byte) current_movedown_counter#2 ← (byte) current_movedown_counter#8 return to:@return -play_movedown: scope:[play_movedown] from main::@26 - (byte) current_piece_color#66 ← phi( main::@26/(byte) current_piece_color#19 ) - (byte*) current_piece_gfx#95 ← phi( main::@26/(byte*) current_piece_gfx#26 ) - (byte) current_piece_orientation#73 ← phi( main::@26/(byte) current_piece_orientation#25 ) - (byte*) current_piece#58 ← phi( main::@26/(byte*) current_piece#19 ) - (byte) current_xpos#86 ← phi( main::@26/(byte) current_xpos#30 ) - (byte) current_ypos#70 ← phi( main::@26/(byte) current_ypos#24 ) - (byte) play_movedown::key_event#1 ← phi( main::@26/(byte) play_movedown::key_event#0 ) +play_move_down: scope:[play_move_down] from main::@26 + (byte) current_piece_color#67 ← phi( main::@26/(byte) current_piece_color#19 ) + (byte*) current_piece_gfx#79 ← phi( main::@26/(byte*) current_piece_gfx#24 ) + (byte*) current_piece#64 ← phi( main::@26/(byte*) current_piece#19 ) + (byte) current_piece_orientation#66 ← phi( main::@26/(byte) current_piece_orientation#27 ) + (byte) current_xpos#86 ← phi( main::@26/(byte) current_xpos#31 ) + (byte) current_ypos#67 ← phi( main::@26/(byte) current_ypos#25 ) + (byte) play_move_down::key_event#1 ← phi( main::@26/(byte) play_move_down::key_event#0 ) (byte) current_movedown_counter#9 ← phi( main::@26/(byte) current_movedown_counter#14 ) (byte) current_movedown_counter#3 ← ++ (byte) current_movedown_counter#9 - (byte) play_movedown::movedown#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) play_movedown::$0 ← (byte) play_movedown::key_event#1 == (byte) KEY_SPACE#0 - (bool~) play_movedown::$1 ← ! (bool~) play_movedown::$0 - if((bool~) play_movedown::$1) goto play_movedown::@1 - to:play_movedown::@8 -play_movedown::@1: scope:[play_movedown] from play_movedown play_movedown::@8 - (byte) current_piece_color#60 ← phi( play_movedown/(byte) current_piece_color#66 play_movedown::@8/(byte) current_piece_color#67 ) - (byte*) current_piece_gfx#90 ← phi( play_movedown/(byte*) current_piece_gfx#95 play_movedown::@8/(byte*) current_piece_gfx#96 ) - (byte) current_piece_orientation#69 ← phi( play_movedown/(byte) current_piece_orientation#73 play_movedown::@8/(byte) current_piece_orientation#74 ) - (byte*) current_piece#54 ← phi( play_movedown/(byte*) current_piece#58 play_movedown::@8/(byte*) current_piece#59 ) - (byte) current_xpos#79 ← phi( play_movedown/(byte) current_xpos#86 play_movedown::@8/(byte) current_xpos#87 ) - (byte) current_ypos#64 ← phi( play_movedown/(byte) current_ypos#70 play_movedown::@8/(byte) current_ypos#71 ) - (byte) play_movedown::movedown#12 ← phi( play_movedown/(byte) play_movedown::movedown#0 play_movedown::@8/(byte) play_movedown::movedown#1 ) - (byte) current_movedown_counter#24 ← phi( play_movedown/(byte) current_movedown_counter#3 play_movedown::@8/(byte) current_movedown_counter#31 ) + (byte) play_move_down::movedown#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) play_move_down::$0 ← (byte) play_move_down::key_event#1 == (byte) KEY_SPACE#0 + (bool~) play_move_down::$1 ← ! (bool~) play_move_down::$0 + if((bool~) play_move_down::$1) goto play_move_down::@1 + to:play_move_down::@8 +play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@8 + (byte) current_piece_color#61 ← phi( play_move_down/(byte) current_piece_color#67 play_move_down::@8/(byte) current_piece_color#68 ) + (byte*) current_piece_gfx#75 ← phi( play_move_down/(byte*) current_piece_gfx#79 play_move_down::@8/(byte*) current_piece_gfx#80 ) + (byte*) current_piece#60 ← phi( play_move_down/(byte*) current_piece#64 play_move_down::@8/(byte*) current_piece#65 ) + (byte) current_piece_orientation#61 ← phi( play_move_down/(byte) current_piece_orientation#66 play_move_down::@8/(byte) current_piece_orientation#67 ) + (byte) current_xpos#79 ← phi( play_move_down/(byte) current_xpos#86 play_move_down::@8/(byte) current_xpos#87 ) + (byte) current_ypos#63 ← phi( play_move_down/(byte) current_ypos#67 play_move_down::@8/(byte) current_ypos#68 ) + (byte) play_move_down::movedown#12 ← phi( play_move_down/(byte) play_move_down::movedown#0 play_move_down::@8/(byte) play_move_down::movedown#1 ) + (byte) current_movedown_counter#24 ← phi( play_move_down/(byte) current_movedown_counter#3 play_move_down::@8/(byte) current_movedown_counter#31 ) (byte) keyboard_event_pressed::keycode#4 ← (byte) KEY_SPACE#0 call keyboard_event_pressed (byte) keyboard_event_pressed::return#6 ← (byte) keyboard_event_pressed::return#5 - to:play_movedown::@17 -play_movedown::@17: scope:[play_movedown] from play_movedown::@1 - (byte) current_piece_color#52 ← phi( play_movedown::@1/(byte) current_piece_color#60 ) - (byte*) current_piece_gfx#81 ← phi( play_movedown::@1/(byte*) current_piece_gfx#90 ) - (byte) current_piece_orientation#61 ← phi( play_movedown::@1/(byte) current_piece_orientation#69 ) - (byte*) current_piece#47 ← phi( play_movedown::@1/(byte*) current_piece#54 ) - (byte) current_xpos#67 ← phi( play_movedown::@1/(byte) current_xpos#79 ) - (byte) current_ypos#56 ← phi( play_movedown::@1/(byte) current_ypos#64 ) - (byte) play_movedown::movedown#10 ← phi( play_movedown::@1/(byte) play_movedown::movedown#12 ) - (byte) current_movedown_counter#17 ← phi( play_movedown::@1/(byte) current_movedown_counter#24 ) - (byte) keyboard_event_pressed::return#12 ← phi( play_movedown::@1/(byte) keyboard_event_pressed::return#6 ) - (byte~) play_movedown::$2 ← (byte) keyboard_event_pressed::return#12 - (bool~) play_movedown::$3 ← (byte~) play_movedown::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) play_movedown::$4 ← ! (bool~) play_movedown::$3 - if((bool~) play_movedown::$4) goto play_movedown::@2 - to:play_movedown::@9 -play_movedown::@8: scope:[play_movedown] from play_movedown - (byte) current_piece_color#67 ← phi( play_movedown/(byte) current_piece_color#66 ) - (byte*) current_piece_gfx#96 ← phi( play_movedown/(byte*) current_piece_gfx#95 ) - (byte) current_piece_orientation#74 ← phi( play_movedown/(byte) current_piece_orientation#73 ) - (byte*) current_piece#59 ← phi( play_movedown/(byte*) current_piece#58 ) - (byte) current_xpos#87 ← phi( play_movedown/(byte) current_xpos#86 ) - (byte) current_ypos#71 ← phi( play_movedown/(byte) current_ypos#70 ) - (byte) current_movedown_counter#31 ← phi( play_movedown/(byte) current_movedown_counter#3 ) - (byte) play_movedown::movedown#4 ← phi( play_movedown/(byte) play_movedown::movedown#0 ) - (byte) play_movedown::movedown#1 ← ++ (byte) play_movedown::movedown#4 - to:play_movedown::@1 -play_movedown::@2: scope:[play_movedown] from play_movedown::@10 play_movedown::@17 play_movedown::@3 - (byte) current_piece_color#43 ← phi( play_movedown::@10/(byte) current_piece_color#51 play_movedown::@17/(byte) current_piece_color#52 play_movedown::@3/(byte) current_piece_color#53 ) - (byte*) current_piece_gfx#66 ← phi( play_movedown::@10/(byte*) current_piece_gfx#80 play_movedown::@17/(byte*) current_piece_gfx#81 play_movedown::@3/(byte*) current_piece_gfx#82 ) - (byte) current_piece_orientation#53 ← phi( play_movedown::@10/(byte) current_piece_orientation#60 play_movedown::@17/(byte) current_piece_orientation#61 play_movedown::@3/(byte) current_piece_orientation#62 ) - (byte*) current_piece#41 ← phi( play_movedown::@10/(byte*) current_piece#46 play_movedown::@17/(byte*) current_piece#47 play_movedown::@3/(byte*) current_piece#48 ) - (byte) current_xpos#49 ← phi( play_movedown::@10/(byte) current_xpos#66 play_movedown::@17/(byte) current_xpos#67 play_movedown::@3/(byte) current_xpos#68 ) - (byte) current_ypos#43 ← phi( play_movedown::@10/(byte) current_ypos#55 play_movedown::@17/(byte) current_ypos#56 play_movedown::@3/(byte) current_ypos#57 ) - (byte) play_movedown::movedown#9 ← phi( play_movedown::@10/(byte) play_movedown::movedown#2 play_movedown::@17/(byte) play_movedown::movedown#10 play_movedown::@3/(byte) play_movedown::movedown#11 ) - (byte) current_movedown_counter#10 ← phi( play_movedown::@10/(byte) current_movedown_counter#16 play_movedown::@17/(byte) current_movedown_counter#17 play_movedown::@3/(byte) current_movedown_counter#18 ) - (bool~) play_movedown::$7 ← (byte) current_movedown_counter#10 >= (byte) current_movedown_rate#0 - (bool~) play_movedown::$8 ← ! (bool~) play_movedown::$7 - if((bool~) play_movedown::$8) goto play_movedown::@4 - to:play_movedown::@11 -play_movedown::@9: scope:[play_movedown] from play_movedown::@17 - (byte) current_piece_color#61 ← phi( play_movedown::@17/(byte) current_piece_color#52 ) - (byte*) current_piece_gfx#91 ← phi( play_movedown::@17/(byte*) current_piece_gfx#81 ) - (byte) current_piece_orientation#70 ← phi( play_movedown::@17/(byte) current_piece_orientation#61 ) - (byte*) current_piece#55 ← phi( play_movedown::@17/(byte*) current_piece#47 ) - (byte) current_xpos#80 ← phi( play_movedown::@17/(byte) current_xpos#67 ) - (byte) current_ypos#65 ← phi( play_movedown::@17/(byte) current_ypos#56 ) - (byte) play_movedown::movedown#8 ← phi( play_movedown::@17/(byte) play_movedown::movedown#10 ) - (byte) current_movedown_counter#11 ← phi( play_movedown::@17/(byte) current_movedown_counter#17 ) - (bool~) play_movedown::$5 ← (byte) current_movedown_counter#11 >= (byte) current_movedown_rate_fast#0 - (bool~) play_movedown::$6 ← ! (bool~) play_movedown::$5 - if((bool~) play_movedown::$6) goto play_movedown::@3 - to:play_movedown::@10 -play_movedown::@3: scope:[play_movedown] from play_movedown::@9 - (byte) current_piece_color#53 ← phi( play_movedown::@9/(byte) current_piece_color#61 ) - (byte*) current_piece_gfx#82 ← phi( play_movedown::@9/(byte*) current_piece_gfx#91 ) - (byte) current_piece_orientation#62 ← phi( play_movedown::@9/(byte) current_piece_orientation#70 ) - (byte*) current_piece#48 ← phi( play_movedown::@9/(byte*) current_piece#55 ) - (byte) current_xpos#68 ← phi( play_movedown::@9/(byte) current_xpos#80 ) - (byte) current_ypos#57 ← phi( play_movedown::@9/(byte) current_ypos#65 ) - (byte) play_movedown::movedown#11 ← phi( play_movedown::@9/(byte) play_movedown::movedown#8 ) - (byte) current_movedown_counter#18 ← phi( play_movedown::@9/(byte) current_movedown_counter#11 ) - to:play_movedown::@2 -play_movedown::@10: scope:[play_movedown] from play_movedown::@9 - (byte) current_piece_color#51 ← phi( play_movedown::@9/(byte) current_piece_color#61 ) - (byte*) current_piece_gfx#80 ← phi( play_movedown::@9/(byte*) current_piece_gfx#91 ) - (byte) current_piece_orientation#60 ← phi( play_movedown::@9/(byte) current_piece_orientation#70 ) - (byte*) current_piece#46 ← phi( play_movedown::@9/(byte*) current_piece#55 ) - (byte) current_xpos#66 ← phi( play_movedown::@9/(byte) current_xpos#80 ) - (byte) current_ypos#55 ← phi( play_movedown::@9/(byte) current_ypos#65 ) - (byte) current_movedown_counter#16 ← phi( play_movedown::@9/(byte) current_movedown_counter#11 ) - (byte) play_movedown::movedown#5 ← phi( play_movedown::@9/(byte) play_movedown::movedown#8 ) - (byte) play_movedown::movedown#2 ← ++ (byte) play_movedown::movedown#5 - to:play_movedown::@2 -play_movedown::@4: scope:[play_movedown] from play_movedown::@11 play_movedown::@2 - (byte) current_piece_color#31 ← phi( play_movedown::@11/(byte) current_piece_color#42 play_movedown::@2/(byte) current_piece_color#43 ) - (byte*) current_piece_gfx#43 ← phi( play_movedown::@11/(byte*) current_piece_gfx#65 play_movedown::@2/(byte*) current_piece_gfx#66 ) - (byte) current_piece_orientation#38 ← phi( play_movedown::@11/(byte) current_piece_orientation#52 play_movedown::@2/(byte) current_piece_orientation#53 ) - (byte*) current_piece#31 ← phi( play_movedown::@11/(byte*) current_piece#40 play_movedown::@2/(byte*) current_piece#41 ) - (byte) current_movedown_counter#25 ← phi( play_movedown::@11/(byte) current_movedown_counter#32 play_movedown::@2/(byte) current_movedown_counter#10 ) - (byte) current_xpos#32 ← phi( play_movedown::@11/(byte) current_xpos#48 play_movedown::@2/(byte) current_xpos#49 ) - (byte) current_ypos#26 ← phi( play_movedown::@11/(byte) current_ypos#42 play_movedown::@2/(byte) current_ypos#43 ) - (byte) play_movedown::movedown#6 ← phi( play_movedown::@11/(byte) play_movedown::movedown#3 play_movedown::@2/(byte) play_movedown::movedown#9 ) - (bool~) play_movedown::$9 ← (byte) play_movedown::movedown#6 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) play_movedown::$10 ← ! (bool~) play_movedown::$9 - if((bool~) play_movedown::$10) goto play_movedown::@5 - to:play_movedown::@12 -play_movedown::@11: scope:[play_movedown] from play_movedown::@2 - (byte) current_piece_color#42 ← phi( play_movedown::@2/(byte) current_piece_color#43 ) - (byte*) current_piece_gfx#65 ← phi( play_movedown::@2/(byte*) current_piece_gfx#66 ) - (byte) current_piece_orientation#52 ← phi( play_movedown::@2/(byte) current_piece_orientation#53 ) - (byte*) current_piece#40 ← phi( play_movedown::@2/(byte*) current_piece#41 ) - (byte) current_movedown_counter#32 ← phi( play_movedown::@2/(byte) current_movedown_counter#10 ) - (byte) current_xpos#48 ← phi( play_movedown::@2/(byte) current_xpos#49 ) - (byte) current_ypos#42 ← phi( play_movedown::@2/(byte) current_ypos#43 ) - (byte) play_movedown::movedown#7 ← phi( play_movedown::@2/(byte) play_movedown::movedown#9 ) - (byte) play_movedown::movedown#3 ← ++ (byte) play_movedown::movedown#7 - to:play_movedown::@4 -play_movedown::@5: scope:[play_movedown] from play_movedown::@4 - (byte) current_xpos#34 ← phi( play_movedown::@4/(byte) current_xpos#32 ) - (byte) current_piece_color#22 ← phi( play_movedown::@4/(byte) current_piece_color#31 ) - (byte*) current_piece_gfx#29 ← phi( play_movedown::@4/(byte*) current_piece_gfx#43 ) - (byte) current_piece_orientation#28 ← phi( play_movedown::@4/(byte) current_piece_orientation#38 ) - (byte*) current_piece#22 ← phi( play_movedown::@4/(byte*) current_piece#31 ) - (byte) current_ypos#29 ← phi( play_movedown::@4/(byte) current_ypos#26 ) - (byte) current_movedown_counter#19 ← phi( play_movedown::@4/(byte) current_movedown_counter#25 ) - (byte) play_movedown::return#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:play_movedown::@return -play_movedown::@12: scope:[play_movedown] from play_movedown::@4 - (byte) current_piece_color#54 ← phi( play_movedown::@4/(byte) current_piece_color#31 ) - (byte) current_piece_orientation#63 ← phi( play_movedown::@4/(byte) current_piece_orientation#38 ) - (byte*) current_piece#49 ← phi( play_movedown::@4/(byte*) current_piece#31 ) - (byte*) current_piece_gfx#68 ← phi( play_movedown::@4/(byte*) current_piece_gfx#43 ) - (byte) current_xpos#17 ← phi( play_movedown::@4/(byte) current_xpos#32 ) - (byte) current_ypos#13 ← phi( play_movedown::@4/(byte) current_ypos#26 ) - (byte/signed word/word/dword/signed dword~) play_movedown::$11 ← (byte) current_ypos#13 + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) collision::ypos#0 ← (byte/signed word/word/dword/signed dword~) play_movedown::$11 + to:play_move_down::@17 +play_move_down::@17: scope:[play_move_down] from play_move_down::@1 + (byte) current_piece_color#53 ← phi( play_move_down::@1/(byte) current_piece_color#61 ) + (byte*) current_piece_gfx#67 ← phi( play_move_down::@1/(byte*) current_piece_gfx#75 ) + (byte*) current_piece#55 ← phi( play_move_down::@1/(byte*) current_piece#60 ) + (byte) current_piece_orientation#55 ← phi( play_move_down::@1/(byte) current_piece_orientation#61 ) + (byte) current_xpos#70 ← phi( play_move_down::@1/(byte) current_xpos#79 ) + (byte) current_ypos#57 ← phi( play_move_down::@1/(byte) current_ypos#63 ) + (byte) play_move_down::movedown#10 ← phi( play_move_down::@1/(byte) play_move_down::movedown#12 ) + (byte) current_movedown_counter#17 ← phi( play_move_down::@1/(byte) current_movedown_counter#24 ) + (byte) keyboard_event_pressed::return#12 ← phi( play_move_down::@1/(byte) keyboard_event_pressed::return#6 ) + (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + (bool~) play_move_down::$3 ← (byte~) play_move_down::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) play_move_down::$4 ← ! (bool~) play_move_down::$3 + if((bool~) play_move_down::$4) goto play_move_down::@2 + to:play_move_down::@9 +play_move_down::@8: scope:[play_move_down] from play_move_down + (byte) current_piece_color#68 ← phi( play_move_down/(byte) current_piece_color#67 ) + (byte*) current_piece_gfx#80 ← phi( play_move_down/(byte*) current_piece_gfx#79 ) + (byte*) current_piece#65 ← phi( play_move_down/(byte*) current_piece#64 ) + (byte) current_piece_orientation#67 ← phi( play_move_down/(byte) current_piece_orientation#66 ) + (byte) current_xpos#87 ← phi( play_move_down/(byte) current_xpos#86 ) + (byte) current_ypos#68 ← phi( play_move_down/(byte) current_ypos#67 ) + (byte) current_movedown_counter#31 ← phi( play_move_down/(byte) current_movedown_counter#3 ) + (byte) play_move_down::movedown#4 ← phi( play_move_down/(byte) play_move_down::movedown#0 ) + (byte) play_move_down::movedown#1 ← ++ (byte) play_move_down::movedown#4 + to:play_move_down::@1 +play_move_down::@2: scope:[play_move_down] from play_move_down::@10 play_move_down::@17 play_move_down::@3 + (byte) current_piece_color#43 ← phi( play_move_down::@10/(byte) current_piece_color#52 play_move_down::@17/(byte) current_piece_color#53 play_move_down::@3/(byte) current_piece_color#54 ) + (byte*) current_piece_gfx#57 ← phi( play_move_down::@10/(byte*) current_piece_gfx#66 play_move_down::@17/(byte*) current_piece_gfx#67 play_move_down::@3/(byte*) current_piece_gfx#68 ) + (byte*) current_piece#47 ← phi( play_move_down::@10/(byte*) current_piece#54 play_move_down::@17/(byte*) current_piece#55 play_move_down::@3/(byte*) current_piece#56 ) + (byte) current_piece_orientation#46 ← phi( play_move_down::@10/(byte) current_piece_orientation#54 play_move_down::@17/(byte) current_piece_orientation#55 play_move_down::@3/(byte) current_piece_orientation#56 ) + (byte) current_xpos#52 ← phi( play_move_down::@10/(byte) current_xpos#69 play_move_down::@17/(byte) current_xpos#70 play_move_down::@3/(byte) current_xpos#71 ) + (byte) current_ypos#47 ← phi( play_move_down::@10/(byte) current_ypos#56 play_move_down::@17/(byte) current_ypos#57 play_move_down::@3/(byte) current_ypos#58 ) + (byte) play_move_down::movedown#9 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@3/(byte) play_move_down::movedown#11 ) + (byte) current_movedown_counter#10 ← phi( play_move_down::@10/(byte) current_movedown_counter#16 play_move_down::@17/(byte) current_movedown_counter#17 play_move_down::@3/(byte) current_movedown_counter#18 ) + (bool~) play_move_down::$7 ← (byte) current_movedown_counter#10 >= (byte) current_movedown_rate#0 + (bool~) play_move_down::$8 ← ! (bool~) play_move_down::$7 + if((bool~) play_move_down::$8) goto play_move_down::@4 + to:play_move_down::@11 +play_move_down::@9: scope:[play_move_down] from play_move_down::@17 + (byte) current_piece_color#62 ← phi( play_move_down::@17/(byte) current_piece_color#53 ) + (byte*) current_piece_gfx#76 ← phi( play_move_down::@17/(byte*) current_piece_gfx#67 ) + (byte*) current_piece#61 ← phi( play_move_down::@17/(byte*) current_piece#55 ) + (byte) current_piece_orientation#62 ← phi( play_move_down::@17/(byte) current_piece_orientation#55 ) + (byte) current_xpos#80 ← phi( play_move_down::@17/(byte) current_xpos#70 ) + (byte) current_ypos#64 ← phi( play_move_down::@17/(byte) current_ypos#57 ) + (byte) play_move_down::movedown#8 ← phi( play_move_down::@17/(byte) play_move_down::movedown#10 ) + (byte) current_movedown_counter#11 ← phi( play_move_down::@17/(byte) current_movedown_counter#17 ) + (bool~) play_move_down::$5 ← (byte) current_movedown_counter#11 >= (byte) current_movedown_rate_fast#0 + (bool~) play_move_down::$6 ← ! (bool~) play_move_down::$5 + if((bool~) play_move_down::$6) goto play_move_down::@3 + to:play_move_down::@10 +play_move_down::@3: scope:[play_move_down] from play_move_down::@9 + (byte) current_piece_color#54 ← phi( play_move_down::@9/(byte) current_piece_color#62 ) + (byte*) current_piece_gfx#68 ← phi( play_move_down::@9/(byte*) current_piece_gfx#76 ) + (byte*) current_piece#56 ← phi( play_move_down::@9/(byte*) current_piece#61 ) + (byte) current_piece_orientation#56 ← phi( play_move_down::@9/(byte) current_piece_orientation#62 ) + (byte) current_xpos#71 ← phi( play_move_down::@9/(byte) current_xpos#80 ) + (byte) current_ypos#58 ← phi( play_move_down::@9/(byte) current_ypos#64 ) + (byte) play_move_down::movedown#11 ← phi( play_move_down::@9/(byte) play_move_down::movedown#8 ) + (byte) current_movedown_counter#18 ← phi( play_move_down::@9/(byte) current_movedown_counter#11 ) + to:play_move_down::@2 +play_move_down::@10: scope:[play_move_down] from play_move_down::@9 + (byte) current_piece_color#52 ← phi( play_move_down::@9/(byte) current_piece_color#62 ) + (byte*) current_piece_gfx#66 ← phi( play_move_down::@9/(byte*) current_piece_gfx#76 ) + (byte*) current_piece#54 ← phi( play_move_down::@9/(byte*) current_piece#61 ) + (byte) current_piece_orientation#54 ← phi( play_move_down::@9/(byte) current_piece_orientation#62 ) + (byte) current_xpos#69 ← phi( play_move_down::@9/(byte) current_xpos#80 ) + (byte) current_ypos#56 ← phi( play_move_down::@9/(byte) current_ypos#64 ) + (byte) current_movedown_counter#16 ← phi( play_move_down::@9/(byte) current_movedown_counter#11 ) + (byte) play_move_down::movedown#5 ← phi( play_move_down::@9/(byte) play_move_down::movedown#8 ) + (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#5 + to:play_move_down::@2 +play_move_down::@4: scope:[play_move_down] from play_move_down::@11 play_move_down::@2 + (byte) current_piece_color#31 ← phi( play_move_down::@11/(byte) current_piece_color#42 play_move_down::@2/(byte) current_piece_color#43 ) + (byte*) current_piece_gfx#41 ← phi( play_move_down::@11/(byte*) current_piece_gfx#56 play_move_down::@2/(byte*) current_piece_gfx#57 ) + (byte*) current_piece#34 ← phi( play_move_down::@11/(byte*) current_piece#46 play_move_down::@2/(byte*) current_piece#47 ) + (byte) current_movedown_counter#25 ← phi( play_move_down::@11/(byte) current_movedown_counter#32 play_move_down::@2/(byte) current_movedown_counter#10 ) + (byte) current_piece_orientation#30 ← phi( play_move_down::@11/(byte) current_piece_orientation#45 play_move_down::@2/(byte) current_piece_orientation#46 ) + (byte) current_xpos#33 ← phi( play_move_down::@11/(byte) current_xpos#51 play_move_down::@2/(byte) current_xpos#52 ) + (byte) current_ypos#27 ← phi( play_move_down::@11/(byte) current_ypos#46 play_move_down::@2/(byte) current_ypos#47 ) + (byte) play_move_down::movedown#6 ← phi( play_move_down::@11/(byte) play_move_down::movedown#3 play_move_down::@2/(byte) play_move_down::movedown#9 ) + (bool~) play_move_down::$9 ← (byte) play_move_down::movedown#6 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) play_move_down::$10 ← ! (bool~) play_move_down::$9 + if((bool~) play_move_down::$10) goto play_move_down::@5 + to:play_move_down::@12 +play_move_down::@11: scope:[play_move_down] from play_move_down::@2 + (byte) current_piece_color#42 ← phi( play_move_down::@2/(byte) current_piece_color#43 ) + (byte*) current_piece_gfx#56 ← phi( play_move_down::@2/(byte*) current_piece_gfx#57 ) + (byte*) current_piece#46 ← phi( play_move_down::@2/(byte*) current_piece#47 ) + (byte) current_movedown_counter#32 ← phi( play_move_down::@2/(byte) current_movedown_counter#10 ) + (byte) current_piece_orientation#45 ← phi( play_move_down::@2/(byte) current_piece_orientation#46 ) + (byte) current_xpos#51 ← phi( play_move_down::@2/(byte) current_xpos#52 ) + (byte) current_ypos#46 ← phi( play_move_down::@2/(byte) current_ypos#47 ) + (byte) play_move_down::movedown#7 ← phi( play_move_down::@2/(byte) play_move_down::movedown#9 ) + (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 + to:play_move_down::@4 +play_move_down::@5: scope:[play_move_down] from play_move_down::@4 + (byte) current_xpos#35 ← phi( play_move_down::@4/(byte) current_xpos#33 ) + (byte) current_piece_color#22 ← phi( play_move_down::@4/(byte) current_piece_color#31 ) + (byte*) current_piece_gfx#28 ← phi( play_move_down::@4/(byte*) current_piece_gfx#41 ) + (byte) current_piece_orientation#32 ← phi( play_move_down::@4/(byte) current_piece_orientation#30 ) + (byte*) current_piece#22 ← phi( play_move_down::@4/(byte*) current_piece#34 ) + (byte) current_ypos#30 ← phi( play_move_down::@4/(byte) current_ypos#27 ) + (byte) current_movedown_counter#19 ← phi( play_move_down::@4/(byte) current_movedown_counter#25 ) + (byte) play_move_down::return#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:play_move_down::@return +play_move_down::@12: scope:[play_move_down] from play_move_down::@4 + (byte) current_piece_color#55 ← phi( play_move_down::@4/(byte) current_piece_color#31 ) + (byte*) current_piece_gfx#69 ← phi( play_move_down::@4/(byte*) current_piece_gfx#41 ) + (byte*) current_piece#25 ← phi( play_move_down::@4/(byte*) current_piece#34 ) + (byte) current_piece_orientation#16 ← phi( play_move_down::@4/(byte) current_piece_orientation#30 ) + (byte) current_xpos#17 ← phi( play_move_down::@4/(byte) current_xpos#33 ) + (byte) current_ypos#13 ← phi( play_move_down::@4/(byte) current_ypos#27 ) + (byte/signed word/word/dword/signed dword~) play_move_down::$11 ← (byte) current_ypos#13 + (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) collision::xpos#0 ← (byte) current_xpos#17 + (byte) collision::ypos#0 ← (byte/signed word/word/dword/signed dword~) play_move_down::$11 + (byte) collision::orientation#0 ← (byte) current_piece_orientation#16 call collision - (byte) collision::return#0 ← (byte) collision::return#2 - to:play_movedown::@18 -play_movedown::@18: scope:[play_movedown] from play_movedown::@12 - (byte) current_xpos#69 ← phi( play_movedown::@12/(byte) current_xpos#17 ) - (byte) current_piece_color#44 ← phi( play_movedown::@12/(byte) current_piece_color#54 ) - (byte*) current_piece_gfx#67 ← phi( play_movedown::@12/(byte*) current_piece_gfx#68 ) - (byte) current_piece_orientation#54 ← phi( play_movedown::@12/(byte) current_piece_orientation#63 ) - (byte*) current_piece#42 ← phi( play_movedown::@12/(byte*) current_piece#49 ) - (byte) current_ypos#27 ← phi( play_movedown::@12/(byte) current_ypos#13 ) - (byte) collision::return#9 ← phi( play_movedown::@12/(byte) collision::return#0 ) - (byte~) play_movedown::$12 ← (byte) collision::return#9 - (bool~) play_movedown::$13 ← (byte~) play_movedown::$12 == (byte) COLLISION_NONE#0 - if((bool~) play_movedown::$13) goto play_movedown::@6 - to:play_movedown::@13 -play_movedown::@6: scope:[play_movedown] from play_movedown::@18 - (byte) current_xpos#51 ← phi( play_movedown::@18/(byte) current_xpos#69 ) - (byte) current_piece_color#33 ← phi( play_movedown::@18/(byte) current_piece_color#44 ) - (byte*) current_piece_gfx#45 ← phi( play_movedown::@18/(byte*) current_piece_gfx#67 ) - (byte) current_piece_orientation#40 ← phi( play_movedown::@18/(byte) current_piece_orientation#54 ) - (byte*) current_piece#33 ← phi( play_movedown::@18/(byte*) current_piece#42 ) - (byte) current_ypos#14 ← phi( play_movedown::@18/(byte) current_ypos#27 ) + (byte) collision::return#0 ← (byte) collision::return#5 + to:play_move_down::@18 +play_move_down::@18: scope:[play_move_down] from play_move_down::@12 + (byte) current_xpos#72 ← phi( play_move_down::@12/(byte) current_xpos#17 ) + (byte) current_piece_color#44 ← phi( play_move_down::@12/(byte) current_piece_color#55 ) + (byte*) current_piece_gfx#58 ← phi( play_move_down::@12/(byte*) current_piece_gfx#69 ) + (byte) current_piece_orientation#57 ← phi( play_move_down::@12/(byte) current_piece_orientation#16 ) + (byte*) current_piece#48 ← phi( play_move_down::@12/(byte*) current_piece#25 ) + (byte) current_ypos#28 ← phi( play_move_down::@12/(byte) current_ypos#13 ) + (byte) collision::return#10 ← phi( play_move_down::@12/(byte) collision::return#0 ) + (byte~) play_move_down::$12 ← (byte) collision::return#10 + (bool~) play_move_down::$13 ← (byte~) play_move_down::$12 == (byte) COLLISION_NONE#0 + if((bool~) play_move_down::$13) goto play_move_down::@6 + to:play_move_down::@13 +play_move_down::@6: scope:[play_move_down] from play_move_down::@18 + (byte) current_xpos#54 ← phi( play_move_down::@18/(byte) current_xpos#72 ) + (byte) current_piece_color#33 ← phi( play_move_down::@18/(byte) current_piece_color#44 ) + (byte*) current_piece_gfx#43 ← phi( play_move_down::@18/(byte*) current_piece_gfx#58 ) + (byte) current_piece_orientation#48 ← phi( play_move_down::@18/(byte) current_piece_orientation#57 ) + (byte*) current_piece#36 ← phi( play_move_down::@18/(byte*) current_piece#48 ) + (byte) current_ypos#14 ← phi( play_move_down::@18/(byte) current_ypos#28 ) (byte) current_ypos#4 ← ++ (byte) current_ypos#14 - to:play_movedown::@7 -play_movedown::@13: scope:[play_movedown] from play_movedown::@18 - (byte) current_ypos#44 ← phi( play_movedown::@18/(byte) current_ypos#27 ) - (byte) current_xpos#50 ← phi( play_movedown::@18/(byte) current_xpos#69 ) - (byte) current_piece_color#32 ← phi( play_movedown::@18/(byte) current_piece_color#44 ) - (byte*) current_piece_gfx#44 ← phi( play_movedown::@18/(byte*) current_piece_gfx#67 ) - (byte) current_piece_orientation#39 ← phi( play_movedown::@18/(byte) current_piece_orientation#54 ) - (byte*) current_piece#32 ← phi( play_movedown::@18/(byte*) current_piece#42 ) + to:play_move_down::@7 +play_move_down::@13: scope:[play_move_down] from play_move_down::@18 + (byte) current_ypos#48 ← phi( play_move_down::@18/(byte) current_ypos#28 ) + (byte) current_xpos#53 ← phi( play_move_down::@18/(byte) current_xpos#72 ) + (byte) current_piece_color#32 ← phi( play_move_down::@18/(byte) current_piece_color#44 ) + (byte*) current_piece_gfx#42 ← phi( play_move_down::@18/(byte*) current_piece_gfx#58 ) + (byte) current_piece_orientation#47 ← phi( play_move_down::@18/(byte) current_piece_orientation#57 ) + (byte*) current_piece#35 ← phi( play_move_down::@18/(byte*) current_piece#48 ) call lock_current - to:play_movedown::@19 -play_movedown::@19: scope:[play_movedown] from play_movedown::@13 - (byte) current_ypos#28 ← phi( play_movedown::@13/(byte) current_ypos#44 ) - (byte) current_xpos#33 ← phi( play_movedown::@13/(byte) current_xpos#50 ) - (byte) current_piece_color#21 ← phi( play_movedown::@13/(byte) current_piece_color#32 ) - (byte*) current_piece_gfx#28 ← phi( play_movedown::@13/(byte*) current_piece_gfx#44 ) - (byte) current_piece_orientation#27 ← phi( play_movedown::@13/(byte) current_piece_orientation#39 ) - (byte*) current_piece#21 ← phi( play_movedown::@13/(byte*) current_piece#32 ) + to:play_move_down::@19 +play_move_down::@19: scope:[play_move_down] from play_move_down::@13 + (byte) current_ypos#29 ← phi( play_move_down::@13/(byte) current_ypos#48 ) + (byte) current_xpos#34 ← phi( play_move_down::@13/(byte) current_xpos#53 ) + (byte) current_piece_color#21 ← phi( play_move_down::@13/(byte) current_piece_color#32 ) + (byte*) current_piece_gfx#27 ← phi( play_move_down::@13/(byte*) current_piece_gfx#42 ) + (byte) current_piece_orientation#31 ← phi( play_move_down::@13/(byte) current_piece_orientation#47 ) + (byte*) current_piece#21 ← phi( play_move_down::@13/(byte*) current_piece#35 ) call spawn_current - to:play_movedown::@20 -play_movedown::@20: scope:[play_movedown] from play_movedown::@19 - (byte) current_ypos#15 ← phi( play_movedown::@19/(byte) current_ypos#8 ) - (byte) current_xpos#18 ← phi( play_movedown::@19/(byte) current_xpos#8 ) - (byte) current_piece_color#12 ← phi( play_movedown::@19/(byte) current_piece_color#7 ) - (byte*) current_piece_gfx#17 ← phi( play_movedown::@19/(byte*) current_piece_gfx#8 ) - (byte) current_piece_orientation#17 ← phi( play_movedown::@19/(byte) current_piece_orientation#8 ) - (byte*) current_piece#12 ← phi( play_movedown::@19/(byte*) current_piece#7 ) + to:play_move_down::@20 +play_move_down::@20: scope:[play_move_down] from play_move_down::@19 + (byte) current_ypos#15 ← phi( play_move_down::@19/(byte) current_ypos#8 ) + (byte) current_xpos#18 ← phi( play_move_down::@19/(byte) current_xpos#11 ) + (byte) current_piece_color#12 ← phi( play_move_down::@19/(byte) current_piece_color#7 ) + (byte*) current_piece_gfx#16 ← phi( play_move_down::@19/(byte*) current_piece_gfx#10 ) + (byte) current_piece_orientation#17 ← phi( play_move_down::@19/(byte) current_piece_orientation#10 ) + (byte*) current_piece#12 ← phi( play_move_down::@19/(byte*) current_piece#7 ) (byte*) current_piece#4 ← (byte*) current_piece#12 (byte) current_piece_orientation#5 ← (byte) current_piece_orientation#17 - (byte*) current_piece_gfx#5 ← (byte*) current_piece_gfx#17 + (byte*) current_piece_gfx#5 ← (byte*) current_piece_gfx#16 (byte) current_piece_color#4 ← (byte) current_piece_color#12 (byte) current_xpos#5 ← (byte) current_xpos#18 (byte) current_ypos#5 ← (byte) current_ypos#15 - to:play_movedown::@7 -play_movedown::@7: scope:[play_movedown] from play_movedown::@20 play_movedown::@6 - (byte) current_xpos#35 ← phi( play_movedown::@20/(byte) current_xpos#5 play_movedown::@6/(byte) current_xpos#51 ) - (byte) current_piece_color#23 ← phi( play_movedown::@20/(byte) current_piece_color#4 play_movedown::@6/(byte) current_piece_color#33 ) - (byte*) current_piece_gfx#30 ← phi( play_movedown::@20/(byte*) current_piece_gfx#5 play_movedown::@6/(byte*) current_piece_gfx#45 ) - (byte) current_piece_orientation#29 ← phi( play_movedown::@20/(byte) current_piece_orientation#5 play_movedown::@6/(byte) current_piece_orientation#40 ) - (byte*) current_piece#23 ← phi( play_movedown::@20/(byte*) current_piece#4 play_movedown::@6/(byte*) current_piece#33 ) - (byte) current_ypos#30 ← phi( play_movedown::@20/(byte) current_ypos#5 play_movedown::@6/(byte) current_ypos#4 ) + to:play_move_down::@7 +play_move_down::@7: scope:[play_move_down] from play_move_down::@20 play_move_down::@6 + (byte) current_xpos#36 ← phi( play_move_down::@20/(byte) current_xpos#5 play_move_down::@6/(byte) current_xpos#54 ) + (byte) current_piece_color#23 ← phi( play_move_down::@20/(byte) current_piece_color#4 play_move_down::@6/(byte) current_piece_color#33 ) + (byte*) current_piece_gfx#29 ← phi( play_move_down::@20/(byte*) current_piece_gfx#5 play_move_down::@6/(byte*) current_piece_gfx#43 ) + (byte) current_piece_orientation#33 ← phi( play_move_down::@20/(byte) current_piece_orientation#5 play_move_down::@6/(byte) current_piece_orientation#48 ) + (byte*) current_piece#23 ← phi( play_move_down::@20/(byte*) current_piece#4 play_move_down::@6/(byte*) current_piece#36 ) + (byte) current_ypos#31 ← phi( play_move_down::@20/(byte) current_ypos#5 play_move_down::@6/(byte) current_ypos#4 ) (byte) current_movedown_counter#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) play_movedown::return#2 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:play_movedown::@return -play_movedown::@return: scope:[play_movedown] from play_movedown::@5 play_movedown::@7 - (byte) current_xpos#19 ← phi( play_movedown::@5/(byte) current_xpos#34 play_movedown::@7/(byte) current_xpos#35 ) - (byte) current_piece_color#13 ← phi( play_movedown::@5/(byte) current_piece_color#22 play_movedown::@7/(byte) current_piece_color#23 ) - (byte*) current_piece_gfx#18 ← phi( play_movedown::@5/(byte*) current_piece_gfx#29 play_movedown::@7/(byte*) current_piece_gfx#30 ) - (byte) current_piece_orientation#18 ← phi( play_movedown::@5/(byte) current_piece_orientation#28 play_movedown::@7/(byte) current_piece_orientation#29 ) - (byte*) current_piece#13 ← phi( play_movedown::@5/(byte*) current_piece#22 play_movedown::@7/(byte*) current_piece#23 ) - (byte) current_ypos#16 ← phi( play_movedown::@5/(byte) current_ypos#29 play_movedown::@7/(byte) current_ypos#30 ) - (byte) current_movedown_counter#12 ← phi( play_movedown::@5/(byte) current_movedown_counter#19 play_movedown::@7/(byte) current_movedown_counter#4 ) - (byte) play_movedown::return#5 ← phi( play_movedown::@5/(byte) play_movedown::return#1 play_movedown::@7/(byte) play_movedown::return#2 ) - (byte) play_movedown::return#3 ← (byte) play_movedown::return#5 + (byte) play_move_down::return#2 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:play_move_down::@return +play_move_down::@return: scope:[play_move_down] from play_move_down::@5 play_move_down::@7 + (byte) current_xpos#19 ← phi( play_move_down::@5/(byte) current_xpos#35 play_move_down::@7/(byte) current_xpos#36 ) + (byte) current_piece_color#13 ← phi( play_move_down::@5/(byte) current_piece_color#22 play_move_down::@7/(byte) current_piece_color#23 ) + (byte*) current_piece_gfx#17 ← phi( play_move_down::@5/(byte*) current_piece_gfx#28 play_move_down::@7/(byte*) current_piece_gfx#29 ) + (byte) current_piece_orientation#18 ← phi( play_move_down::@5/(byte) current_piece_orientation#32 play_move_down::@7/(byte) current_piece_orientation#33 ) + (byte*) current_piece#13 ← phi( play_move_down::@5/(byte*) current_piece#22 play_move_down::@7/(byte*) current_piece#23 ) + (byte) current_ypos#16 ← phi( play_move_down::@5/(byte) current_ypos#30 play_move_down::@7/(byte) current_ypos#31 ) + (byte) current_movedown_counter#12 ← phi( play_move_down::@5/(byte) current_movedown_counter#19 play_move_down::@7/(byte) current_movedown_counter#4 ) + (byte) play_move_down::return#5 ← phi( play_move_down::@5/(byte) play_move_down::return#1 play_move_down::@7/(byte) play_move_down::return#2 ) + (byte) play_move_down::return#3 ← (byte) play_move_down::return#5 (byte) current_movedown_counter#5 ← (byte) current_movedown_counter#12 (byte) current_ypos#6 ← (byte) current_ypos#16 (byte*) current_piece#5 ← (byte*) current_piece#13 (byte) current_piece_orientation#6 ← (byte) current_piece_orientation#18 - (byte*) current_piece_gfx#6 ← (byte*) current_piece_gfx#18 + (byte*) current_piece_gfx#6 ← (byte*) current_piece_gfx#17 (byte) current_piece_color#5 ← (byte) current_piece_color#13 (byte) current_xpos#6 ← (byte) current_xpos#19 return to:@return -@13: scope:[] from @11 +play_move_leftright: scope:[play_move_leftright] from main::@27 + (byte*) current_piece#37 ← phi( main::@27/(byte*) current_piece#2 ) + (byte) current_piece_orientation#34 ← phi( main::@27/(byte) current_piece_orientation#2 ) + (byte) current_ypos#32 ← phi( main::@27/(byte) current_ypos#2 ) + (byte) current_xpos#37 ← phi( main::@27/(byte) current_xpos#2 ) + (byte) play_move_leftright::key_event#1 ← phi( main::@27/(byte) play_move_leftright::key_event#0 ) + (bool~) play_move_leftright::$0 ← (byte) play_move_leftright::key_event#1 == (byte) KEY_COMMA#0 + if((bool~) play_move_leftright::$0) goto play_move_leftright::@1 + to:play_move_leftright::@6 +play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright + (byte*) current_piece#26 ← phi( play_move_leftright/(byte*) current_piece#37 ) + (byte) current_piece_orientation#19 ← phi( play_move_leftright/(byte) current_piece_orientation#34 ) + (byte) current_ypos#17 ← phi( play_move_leftright/(byte) current_ypos#32 ) + (byte) current_xpos#20 ← phi( play_move_leftright/(byte) current_xpos#37 ) + (byte/signed word/word/dword/signed dword~) play_move_leftright::$7 ← (byte) current_xpos#20 - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) collision::xpos#1 ← (byte/signed word/word/dword/signed dword~) play_move_leftright::$7 + (byte) collision::ypos#1 ← (byte) current_ypos#17 + (byte) collision::orientation#1 ← (byte) current_piece_orientation#19 + call collision + (byte) collision::return#1 ← (byte) collision::return#5 + to:play_move_leftright::@14 +play_move_leftright::@14: scope:[play_move_leftright] from play_move_leftright::@1 + (byte) current_xpos#41 ← phi( play_move_leftright::@1/(byte) current_xpos#20 ) + (byte) collision::return#11 ← phi( play_move_leftright::@1/(byte) collision::return#1 ) + (byte~) play_move_leftright::$8 ← (byte) collision::return#11 + (bool~) play_move_leftright::$9 ← (byte~) play_move_leftright::$8 == (byte) COLLISION_NONE#0 + (bool~) play_move_leftright::$10 ← ! (bool~) play_move_leftright::$9 + if((bool~) play_move_leftright::$10) goto play_move_leftright::@5 + to:play_move_leftright::@11 +play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright + (byte*) current_piece#38 ← phi( play_move_leftright/(byte*) current_piece#37 ) + (byte) current_piece_orientation#35 ← phi( play_move_leftright/(byte) current_piece_orientation#34 ) + (byte) current_ypos#33 ← phi( play_move_leftright/(byte) current_ypos#32 ) + (byte) current_xpos#38 ← phi( play_move_leftright/(byte) current_xpos#37 ) + (byte) play_move_leftright::key_event#2 ← phi( play_move_leftright/(byte) play_move_leftright::key_event#1 ) + (bool~) play_move_leftright::$1 ← (byte) play_move_leftright::key_event#2 == (byte) KEY_DOT#0 + (bool~) play_move_leftright::$2 ← ! (bool~) play_move_leftright::$1 + if((bool~) play_move_leftright::$2) goto play_move_leftright::@2 + to:play_move_leftright::@7 +play_move_leftright::@2: scope:[play_move_leftright] from play_move_leftright::@6 + (byte) current_xpos#55 ← phi( play_move_leftright::@6/(byte) current_xpos#38 ) + to:play_move_leftright::@4 +play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@6 + (byte*) current_piece#27 ← phi( play_move_leftright::@6/(byte*) current_piece#38 ) + (byte) current_piece_orientation#20 ← phi( play_move_leftright::@6/(byte) current_piece_orientation#35 ) + (byte) current_ypos#18 ← phi( play_move_leftright::@6/(byte) current_ypos#33 ) + (byte) current_xpos#21 ← phi( play_move_leftright::@6/(byte) current_xpos#38 ) + (byte/signed word/word/dword/signed dword~) play_move_leftright::$3 ← (byte) current_xpos#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) collision::xpos#2 ← (byte/signed word/word/dword/signed dword~) play_move_leftright::$3 + (byte) collision::ypos#2 ← (byte) current_ypos#18 + (byte) collision::orientation#2 ← (byte) current_piece_orientation#20 + call collision + (byte) collision::return#2 ← (byte) collision::return#5 + to:play_move_leftright::@15 +play_move_leftright::@15: scope:[play_move_leftright] from play_move_leftright::@7 + (byte) current_xpos#39 ← phi( play_move_leftright::@7/(byte) current_xpos#21 ) + (byte) collision::return#12 ← phi( play_move_leftright::@7/(byte) collision::return#2 ) + (byte~) play_move_leftright::$4 ← (byte) collision::return#12 + (bool~) play_move_leftright::$5 ← (byte~) play_move_leftright::$4 == (byte) COLLISION_NONE#0 + (bool~) play_move_leftright::$6 ← ! (bool~) play_move_leftright::$5 + if((bool~) play_move_leftright::$6) goto play_move_leftright::@3 + to:play_move_leftright::@8 +play_move_leftright::@3: scope:[play_move_leftright] from play_move_leftright::@15 + (byte) current_xpos#56 ← phi( play_move_leftright::@15/(byte) current_xpos#39 ) + to:play_move_leftright::@4 +play_move_leftright::@8: scope:[play_move_leftright] from play_move_leftright::@15 + (byte) current_xpos#22 ← phi( play_move_leftright::@15/(byte) current_xpos#39 ) + (byte) current_xpos#7 ← ++ (byte) current_xpos#22 + (byte) play_move_leftright::return#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:play_move_leftright::@return +play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@11 play_move_leftright::@4 play_move_leftright::@8 + (byte) current_xpos#23 ← phi( play_move_leftright::@11/(byte) current_xpos#9 play_move_leftright::@4/(byte) current_xpos#40 play_move_leftright::@8/(byte) current_xpos#7 ) + (byte) play_move_leftright::return#6 ← phi( play_move_leftright::@11/(byte) play_move_leftright::return#4 play_move_leftright::@4/(byte) play_move_leftright::return#3 play_move_leftright::@8/(byte) play_move_leftright::return#1 ) + (byte) play_move_leftright::return#2 ← (byte) play_move_leftright::return#6 + (byte) current_xpos#8 ← (byte) current_xpos#23 + return + to:@return +play_move_leftright::@4: scope:[play_move_leftright] from play_move_leftright::@2 play_move_leftright::@3 play_move_leftright::@5 + (byte) current_xpos#40 ← phi( play_move_leftright::@2/(byte) current_xpos#55 play_move_leftright::@3/(byte) current_xpos#56 play_move_leftright::@5/(byte) current_xpos#57 ) + (byte) play_move_leftright::return#3 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:play_move_leftright::@return +play_move_leftright::@5: scope:[play_move_leftright] from play_move_leftright::@14 + (byte) current_xpos#57 ← phi( play_move_leftright::@14/(byte) current_xpos#41 ) + to:play_move_leftright::@4 +play_move_leftright::@11: scope:[play_move_leftright] from play_move_leftright::@14 + (byte) current_xpos#24 ← phi( play_move_leftright::@14/(byte) current_xpos#41 ) + (byte) current_xpos#9 ← -- (byte) current_xpos#24 + (byte) play_move_leftright::return#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:play_move_leftright::@return +play_move_rotate: scope:[play_move_rotate] from main::@28 + (byte*) current_piece_gfx#59 ← phi( main::@28/(byte*) current_piece_gfx#25 ) + (byte*) current_piece#49 ← phi( main::@28/(byte*) current_piece#52 ) + (byte) current_ypos#49 ← phi( main::@28/(byte) current_ypos#59 ) + (byte) current_xpos#58 ← phi( main::@28/(byte) current_xpos#3 ) + (byte) current_piece_orientation#36 ← phi( main::@28/(byte) current_piece_orientation#28 ) + (byte) play_move_rotate::key_event#1 ← phi( main::@28/(byte) play_move_rotate::key_event#0 ) + (byte) play_move_rotate::orientation#0 ← (byte/word/signed word/dword/signed dword) 128 + (bool~) play_move_rotate::$0 ← (byte) play_move_rotate::key_event#1 == (byte) KEY_Z#0 + if((bool~) play_move_rotate::$0) goto play_move_rotate::@1 + to:play_move_rotate::@6 +play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate + (byte*) current_piece_gfx#70 ← phi( play_move_rotate/(byte*) current_piece_gfx#59 ) + (byte*) current_piece#39 ← phi( play_move_rotate/(byte*) current_piece#49 ) + (byte) current_ypos#34 ← phi( play_move_rotate/(byte) current_ypos#49 ) + (byte) current_xpos#42 ← phi( play_move_rotate/(byte) current_xpos#58 ) + (byte) current_piece_orientation#21 ← phi( play_move_rotate/(byte) current_piece_orientation#36 ) + (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_piece_orientation#21 - (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte/word/dword~) play_move_rotate::$5 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 + (byte) play_move_rotate::orientation#1 ← (byte/word/dword~) play_move_rotate::$5 + to:play_move_rotate::@4 +play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate + (byte*) current_piece#50 ← phi( play_move_rotate/(byte*) current_piece#49 ) + (byte*) current_piece_gfx#44 ← phi( play_move_rotate/(byte*) current_piece_gfx#59 ) + (byte) current_ypos#50 ← phi( play_move_rotate/(byte) current_ypos#49 ) + (byte) current_xpos#59 ← phi( play_move_rotate/(byte) current_xpos#58 ) + (byte) current_piece_orientation#37 ← phi( play_move_rotate/(byte) current_piece_orientation#36 ) + (byte) play_move_rotate::key_event#2 ← phi( play_move_rotate/(byte) play_move_rotate::key_event#1 ) + (bool~) play_move_rotate::$1 ← (byte) play_move_rotate::key_event#2 == (byte) KEY_X#0 + if((bool~) play_move_rotate::$1) goto play_move_rotate::@2 + to:play_move_rotate::@7 +play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@6 + (byte*) current_piece_gfx#71 ← phi( play_move_rotate::@6/(byte*) current_piece_gfx#44 ) + (byte*) current_piece#40 ← phi( play_move_rotate::@6/(byte*) current_piece#50 ) + (byte) current_ypos#35 ← phi( play_move_rotate::@6/(byte) current_ypos#50 ) + (byte) current_xpos#43 ← phi( play_move_rotate::@6/(byte) current_xpos#59 ) + (byte) current_piece_orientation#22 ← phi( play_move_rotate::@6/(byte) current_piece_orientation#37 ) + (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_piece_orientation#22 + (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte/word/dword~) play_move_rotate::$3 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 + (byte) play_move_rotate::orientation#2 ← (byte/word/dword~) play_move_rotate::$3 + to:play_move_rotate::@4 +play_move_rotate::@7: scope:[play_move_rotate] from play_move_rotate::@6 + (byte*) current_piece_gfx#31 ← phi( play_move_rotate::@6/(byte*) current_piece_gfx#44 ) + (byte) current_piece_orientation#39 ← phi( play_move_rotate::@6/(byte) current_piece_orientation#37 ) + (byte) play_move_rotate::return#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:play_move_rotate::@return +play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@11 play_move_rotate::@5 play_move_rotate::@7 + (byte*) current_piece_gfx#18 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#8 play_move_rotate::@5/(byte*) current_piece_gfx#30 play_move_rotate::@7/(byte*) current_piece_gfx#31 ) + (byte) current_piece_orientation#23 ← phi( play_move_rotate::@11/(byte) current_piece_orientation#8 play_move_rotate::@5/(byte) current_piece_orientation#38 play_move_rotate::@7/(byte) current_piece_orientation#39 ) + (byte) play_move_rotate::return#6 ← phi( play_move_rotate::@11/(byte) play_move_rotate::return#4 play_move_rotate::@5/(byte) play_move_rotate::return#3 play_move_rotate::@7/(byte) play_move_rotate::return#1 ) + (byte) play_move_rotate::return#2 ← (byte) play_move_rotate::return#6 + (byte) current_piece_orientation#7 ← (byte) current_piece_orientation#23 + (byte*) current_piece_gfx#7 ← (byte*) current_piece_gfx#18 + return + to:@return +play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2 + (byte*) current_piece_gfx#60 ← phi( play_move_rotate::@1/(byte*) current_piece_gfx#70 play_move_rotate::@2/(byte*) current_piece_gfx#71 ) + (byte) current_piece_orientation#58 ← phi( play_move_rotate::@1/(byte) current_piece_orientation#21 play_move_rotate::@2/(byte) current_piece_orientation#22 ) + (byte*) current_piece#28 ← phi( play_move_rotate::@1/(byte*) current_piece#39 play_move_rotate::@2/(byte*) current_piece#40 ) + (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) + (byte) current_ypos#19 ← phi( play_move_rotate::@1/(byte) current_ypos#34 play_move_rotate::@2/(byte) current_ypos#35 ) + (byte) current_xpos#25 ← phi( play_move_rotate::@1/(byte) current_xpos#42 play_move_rotate::@2/(byte) current_xpos#43 ) + (byte) collision::xpos#3 ← (byte) current_xpos#25 + (byte) collision::ypos#3 ← (byte) current_ypos#19 + (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + call collision + (byte) collision::return#3 ← (byte) collision::return#5 + to:play_move_rotate::@14 +play_move_rotate::@14: scope:[play_move_rotate] from play_move_rotate::@4 + (byte*) current_piece_gfx#45 ← phi( play_move_rotate::@4/(byte*) current_piece_gfx#60 ) + (byte) current_piece_orientation#49 ← phi( play_move_rotate::@4/(byte) current_piece_orientation#58 ) + (byte*) current_piece#24 ← phi( play_move_rotate::@4/(byte*) current_piece#28 ) + (byte) play_move_rotate::orientation#5 ← phi( play_move_rotate::@4/(byte) play_move_rotate::orientation#3 ) + (byte) collision::return#13 ← phi( play_move_rotate::@4/(byte) collision::return#3 ) + (byte~) play_move_rotate::$6 ← (byte) collision::return#13 + (byte~) play_move_rotate::$7 ← (byte) COLLISION_LEFT#0 | (byte) COLLISION_RIGHT#0 + (byte~) play_move_rotate::$8 ← (byte~) play_move_rotate::$6 & (byte~) play_move_rotate::$7 + (bool~) play_move_rotate::$9 ← (byte~) play_move_rotate::$8 == (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) play_move_rotate::$10 ← ! (bool~) play_move_rotate::$9 + if((bool~) play_move_rotate::$10) goto play_move_rotate::@5 + to:play_move_rotate::@11 +play_move_rotate::@5: scope:[play_move_rotate] from play_move_rotate::@14 + (byte*) current_piece_gfx#30 ← phi( play_move_rotate::@14/(byte*) current_piece_gfx#45 ) + (byte) current_piece_orientation#38 ← phi( play_move_rotate::@14/(byte) current_piece_orientation#49 ) + (byte) play_move_rotate::return#3 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:play_move_rotate::@return +play_move_rotate::@11: scope:[play_move_rotate] from play_move_rotate::@14 + (byte*) current_piece#14 ← phi( play_move_rotate::@14/(byte*) current_piece#24 ) + (byte) play_move_rotate::orientation#4 ← phi( play_move_rotate::@14/(byte) play_move_rotate::orientation#5 ) + (byte) current_piece_orientation#8 ← (byte) play_move_rotate::orientation#4 + (byte*~) play_move_rotate::$11 ← (byte*) current_piece#14 + (byte) current_piece_orientation#8 + (byte*) current_piece_gfx#8 ← (byte*~) play_move_rotate::$11 + (byte) play_move_rotate::return#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:play_move_rotate::@return +@15: scope:[] from @11 (byte*) SCREEN#4 ← phi( @11/(byte*) SCREEN#0 ) (byte) current_movedown_counter#26 ← phi( @11/(byte) current_movedown_counter#0 ) (byte) keyboard_modifiers#32 ← phi( @11/(byte) keyboard_modifiers#38 ) (byte) keyboard_events_size#35 ← phi( @11/(byte) keyboard_events_size#44 ) - (byte) current_ypos#50 ← phi( @11/(byte) current_ypos#0 ) - (byte) current_xpos#62 ← phi( @11/(byte) current_xpos#0 ) + (byte) current_ypos#52 ← phi( @11/(byte) current_ypos#0 ) + (byte) current_xpos#64 ← phi( @11/(byte) current_xpos#0 ) (byte) current_piece_color#37 ← phi( @11/(byte) current_piece_color#0 ) - (byte*) current_piece_gfx#61 ← phi( @11/(byte*) current_piece_gfx#0 ) - (byte) current_piece_orientation#48 ← phi( @11/(byte) current_piece_orientation#0 ) - (byte*) current_piece#35 ← phi( @11/(byte*) current_piece#0 ) + (byte*) current_piece_gfx#52 ← phi( @11/(byte*) current_piece_gfx#0 ) + (byte) current_piece_orientation#50 ← phi( @11/(byte) current_piece_orientation#0 ) + (byte*) current_piece#41 ← phi( @11/(byte*) current_piece#0 ) (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:@20 -collision: scope:[collision] from play_movedown::@12 play_moveother::@2 play_moveother::@3 - (byte) collision::xpos#8 ← phi( play_movedown::@12/(byte) collision::xpos#0 play_moveother::@2/(byte) collision::xpos#1 play_moveother::@3/(byte) collision::xpos#2 ) - (byte*) current_piece_gfx#46 ← phi( play_movedown::@12/(byte*) current_piece_gfx#68 play_moveother::@2/(byte*) current_piece_gfx#69 play_moveother::@3/(byte*) current_piece_gfx#70 ) - (byte) collision::ypos#4 ← phi( play_movedown::@12/(byte) collision::ypos#0 play_moveother::@2/(byte) collision::ypos#1 play_moveother::@3/(byte) collision::ypos#2 ) + to:@21 +collision: scope:[collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 + (byte) collision::xpos#5 ← phi( play_move_down::@12/(byte) collision::xpos#0 play_move_leftright::@1/(byte) collision::xpos#1 play_move_leftright::@7/(byte) collision::xpos#2 play_move_rotate::@4/(byte) collision::xpos#3 ) + (byte) collision::ypos#4 ← phi( play_move_down::@12/(byte) collision::ypos#0 play_move_leftright::@1/(byte) collision::ypos#1 play_move_leftright::@7/(byte) collision::ypos#2 play_move_rotate::@4/(byte) collision::ypos#3 ) + (byte) collision::orientation#4 ← phi( play_move_down::@12/(byte) collision::orientation#0 play_move_leftright::@1/(byte) collision::orientation#1 play_move_leftright::@7/(byte) collision::orientation#2 play_move_rotate::@4/(byte) collision::orientation#3 ) + (byte*) current_piece#15 ← phi( play_move_down::@12/(byte*) current_piece#25 play_move_leftright::@1/(byte*) current_piece#26 play_move_leftright::@7/(byte*) current_piece#27 play_move_rotate::@4/(byte*) current_piece#28 ) + (byte*~) collision::$0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 + (byte*) collision::piece_gfx#0 ← (byte*~) collision::$0 (byte) collision::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) collision::$1 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) collision::ypos2#0 ← (byte~) collision::$1 (byte) collision::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:collision::@1 collision::@1: scope:[collision] from collision collision::@17 - (byte) collision::xpos#6 ← phi( collision/(byte) collision::xpos#8 collision::@17/(byte) collision::xpos#9 ) + (byte) collision::l#6 ← phi( collision/(byte) collision::l#0 collision::@17/(byte) collision::l#1 ) (byte) collision::i#3 ← phi( collision/(byte) collision::i#0 collision::@17/(byte) collision::i#5 ) - (byte*) current_piece_gfx#31 ← phi( collision/(byte*) current_piece_gfx#46 collision::@17/(byte*) current_piece_gfx#47 ) - (byte) collision::l#2 ← phi( collision/(byte) collision::l#0 collision::@17/(byte) collision::l#1 ) - (byte) collision::ypos#3 ← phi( collision/(byte) collision::ypos#4 collision::@17/(byte) collision::ypos#5 ) - (byte~) collision::$0 ← (byte) collision::ypos#3 + (byte) collision::l#2 - (byte) collision::line#0 ← (byte~) collision::$0 - (byte~) collision::$1 ← (byte) collision::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte*) collision::playfield_line#0 ← *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) collision::$1) + (byte*) collision::piece_gfx#2 ← phi( collision/(byte*) collision::piece_gfx#0 collision::@17/(byte*) collision::piece_gfx#4 ) + (byte) collision::xpos#4 ← phi( collision/(byte) collision::xpos#5 collision::@17/(byte) collision::xpos#6 ) + (byte) collision::ypos2#2 ← phi( collision/(byte) collision::ypos2#0 collision::@17/(byte) collision::ypos2#1 ) + (byte*) collision::playfield_line#0 ← *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) + (byte) collision::col#0 ← (byte) collision::xpos#4 (byte) collision::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:collision::@2 collision::@2: scope:[collision] from collision::@1 collision::@3 (byte*) collision::playfield_line#5 ← phi( collision::@1/(byte*) collision::playfield_line#0 collision::@3/(byte*) collision::playfield_line#6 ) - (byte) collision::ypos#7 ← phi( collision::@1/(byte) collision::ypos#3 collision::@3/(byte) collision::ypos#6 ) - (byte) collision::xpos#5 ← phi( collision::@1/(byte) collision::xpos#6 collision::@3/(byte) collision::xpos#7 ) - (byte) collision::l#5 ← phi( collision::@1/(byte) collision::l#2 collision::@3/(byte) collision::l#4 ) - (byte) collision::line#2 ← phi( collision::@1/(byte) collision::line#0 collision::@3/(byte) collision::line#3 ) - (byte) collision::c#4 ← phi( collision::@1/(byte) collision::c#0 collision::@3/(byte) collision::c#1 ) + (byte) collision::xpos#8 ← phi( collision::@1/(byte) collision::xpos#4 collision::@3/(byte) collision::xpos#7 ) + (byte) collision::l#4 ← phi( collision::@1/(byte) collision::l#6 collision::@3/(byte) collision::l#3 ) + (byte) collision::ypos2#5 ← phi( collision::@1/(byte) collision::ypos2#2 collision::@3/(byte) collision::ypos2#6 ) + (byte) collision::c#3 ← phi( collision::@1/(byte) collision::c#0 collision::@3/(byte) collision::c#1 ) + (byte) collision::col#6 ← phi( collision::@1/(byte) collision::col#0 collision::@3/(byte) collision::col#1 ) (byte) collision::i#2 ← phi( collision::@1/(byte) collision::i#3 collision::@3/(byte) collision::i#4 ) - (byte*) current_piece_gfx#19 ← phi( collision::@1/(byte*) current_piece_gfx#31 collision::@3/(byte*) current_piece_gfx#32 ) - (bool~) collision::$2 ← *((byte*) current_piece_gfx#19 + (byte) collision::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*) collision::piece_gfx#1 ← phi( collision::@1/(byte*) collision::piece_gfx#2 collision::@3/(byte*) collision::piece_gfx#3 ) + (bool~) collision::$2 ← *((byte*) collision::piece_gfx#1 + (byte) collision::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) collision::$3 ← ! (bool~) collision::$2 (byte) collision::i#1 ← ++ (byte) collision::i#2 if((bool~) collision::$3) goto collision::@3 to:collision::@8 collision::@3: scope:[collision] from collision::@2 collision::@7 (byte*) collision::playfield_line#6 ← phi( collision::@2/(byte*) collision::playfield_line#5 collision::@7/(byte*) collision::playfield_line#7 ) - (byte) collision::xpos#7 ← phi( collision::@2/(byte) collision::xpos#5 collision::@7/(byte) collision::xpos#10 ) - (byte) collision::ypos#6 ← phi( collision::@2/(byte) collision::ypos#7 collision::@7/(byte) collision::ypos#8 ) - (byte) collision::line#3 ← phi( collision::@2/(byte) collision::line#2 collision::@7/(byte) collision::line#4 ) - (byte) collision::l#4 ← phi( collision::@2/(byte) collision::l#5 collision::@7/(byte) collision::l#6 ) + (byte) collision::xpos#7 ← phi( collision::@2/(byte) collision::xpos#8 collision::@7/(byte) collision::xpos#9 ) + (byte) collision::l#3 ← phi( collision::@2/(byte) collision::l#4 collision::@7/(byte) collision::l#5 ) + (byte) collision::ypos2#6 ← phi( collision::@2/(byte) collision::ypos2#5 collision::@7/(byte) collision::ypos2#7 ) (byte) collision::i#4 ← phi( collision::@2/(byte) collision::i#1 collision::@7/(byte) collision::i#6 ) - (byte*) current_piece_gfx#32 ← phi( collision::@2/(byte*) current_piece_gfx#19 collision::@7/(byte*) current_piece_gfx#48 ) - (byte) collision::c#2 ← phi( collision::@2/(byte) collision::c#4 collision::@7/(byte) collision::c#5 ) + (byte*) collision::piece_gfx#3 ← phi( collision::@2/(byte*) collision::piece_gfx#1 collision::@7/(byte*) collision::piece_gfx#5 ) + (byte) collision::c#2 ← phi( collision::@2/(byte) collision::c#3 collision::@7/(byte) collision::c#4 ) + (byte) collision::col#2 ← phi( collision::@2/(byte) collision::col#6 collision::@7/(byte) collision::col#7 ) + (byte) collision::col#1 ← ++ (byte) collision::col#2 (byte) collision::c#1 ← (byte) collision::c#2 + rangenext(0,3) (bool~) collision::$14 ← (byte) collision::c#1 != rangelast(0,3) if((bool~) collision::$14) goto collision::@2 to:collision::@17 collision::@8: scope:[collision] from collision::@2 - (byte) collision::ypos#12 ← phi( collision::@2/(byte) collision::ypos#7 ) - (byte) collision::l#10 ← phi( collision::@2/(byte) collision::l#5 ) + (byte) collision::xpos#13 ← phi( collision::@2/(byte) collision::xpos#8 ) + (byte) collision::l#10 ← phi( collision::@2/(byte) collision::l#4 ) (byte) collision::i#10 ← phi( collision::@2/(byte) collision::i#1 ) - (byte*) current_piece_gfx#97 ← phi( collision::@2/(byte*) current_piece_gfx#19 ) + (byte*) collision::piece_gfx#9 ← phi( collision::@2/(byte*) collision::piece_gfx#1 ) + (byte) collision::c#8 ← phi( collision::@2/(byte) collision::c#3 ) (byte*) collision::playfield_line#4 ← phi( collision::@2/(byte*) collision::playfield_line#5 ) - (byte) collision::c#6 ← phi( collision::@2/(byte) collision::c#4 ) - (byte) collision::xpos#4 ← phi( collision::@2/(byte) collision::xpos#5 ) - (byte) collision::line#1 ← phi( collision::@2/(byte) collision::line#2 ) - (bool~) collision::$4 ← (byte) collision::line#1 >= (byte) PLAYFIELD_LINES#0 - (bool~) collision::$5 ← ! (bool~) collision::$4 - if((bool~) collision::$5) goto collision::@4 + (byte) collision::col#8 ← phi( collision::@2/(byte) collision::col#6 ) + (byte) collision::ypos2#3 ← phi( collision::@2/(byte) collision::ypos2#5 ) + (byte/signed word/word/dword/signed dword~) collision::$4 ← (byte/signed byte/word/signed word/dword/signed dword) 2 * (byte) PLAYFIELD_LINES#0 + (bool~) collision::$5 ← (byte) collision::ypos2#3 >= (byte/signed word/word/dword/signed dword~) collision::$4 + (bool~) collision::$6 ← ! (bool~) collision::$5 + if((bool~) collision::$6) goto collision::@4 to:collision::@9 collision::@4: scope:[collision] from collision::@8 - (byte) collision::ypos#11 ← phi( collision::@8/(byte) collision::ypos#12 ) - (byte) collision::line#7 ← phi( collision::@8/(byte) collision::line#1 ) + (byte) collision::xpos#12 ← phi( collision::@8/(byte) collision::xpos#13 ) (byte) collision::l#9 ← phi( collision::@8/(byte) collision::l#10 ) + (byte) collision::ypos2#10 ← phi( collision::@8/(byte) collision::ypos2#3 ) (byte) collision::i#9 ← phi( collision::@8/(byte) collision::i#10 ) - (byte*) current_piece_gfx#92 ← phi( collision::@8/(byte*) current_piece_gfx#97 ) + (byte*) collision::piece_gfx#8 ← phi( collision::@8/(byte*) collision::piece_gfx#9 ) + (byte) collision::c#7 ← phi( collision::@8/(byte) collision::c#8 ) (byte*) collision::playfield_line#3 ← phi( collision::@8/(byte*) collision::playfield_line#4 ) - (byte) collision::c#3 ← phi( collision::@8/(byte) collision::c#6 ) - (byte) collision::xpos#3 ← phi( collision::@8/(byte) collision::xpos#4 ) - (byte~) collision::$6 ← (byte) collision::xpos#3 + (byte) collision::c#3 - (byte) collision::col#0 ← (byte~) collision::$6 - (byte~) collision::$7 ← (byte) collision::col#0 & (byte/word/signed word/dword/signed dword) 128 + (byte) collision::col#3 ← phi( collision::@8/(byte) collision::col#8 ) + (byte~) collision::$7 ← (byte) collision::col#3 & (byte/word/signed word/dword/signed dword) 128 (bool~) collision::$8 ← (byte~) collision::$7 != (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) collision::$9 ← ! (bool~) collision::$8 if((bool~) collision::$9) goto collision::@5 to:collision::@11 collision::@9: scope:[collision] from collision::@8 - (byte) collision::return#1 ← (byte) COLLISION_BOTTOM#0 + (byte) collision::return#4 ← (byte) COLLISION_BOTTOM#0 to:collision::@return collision::@return: scope:[collision] from collision::@11 collision::@13 collision::@15 collision::@18 collision::@9 - (byte) collision::return#10 ← phi( collision::@11/(byte) collision::return#3 collision::@13/(byte) collision::return#4 collision::@15/(byte) collision::return#5 collision::@18/(byte) collision::return#6 collision::@9/(byte) collision::return#1 ) - (byte) collision::return#2 ← (byte) collision::return#10 + (byte) collision::return#14 ← phi( collision::@11/(byte) collision::return#6 collision::@13/(byte) collision::return#7 collision::@15/(byte) collision::return#8 collision::@18/(byte) collision::return#9 collision::@9/(byte) collision::return#4 ) + (byte) collision::return#5 ← (byte) collision::return#14 return to:@return collision::@5: scope:[collision] from collision::@4 - (byte) collision::xpos#12 ← phi( collision::@4/(byte) collision::xpos#3 ) - (byte) collision::ypos#10 ← phi( collision::@4/(byte) collision::ypos#11 ) - (byte) collision::line#6 ← phi( collision::@4/(byte) collision::line#7 ) + (byte) collision::xpos#11 ← phi( collision::@4/(byte) collision::xpos#12 ) (byte) collision::l#8 ← phi( collision::@4/(byte) collision::l#9 ) + (byte) collision::ypos2#9 ← phi( collision::@4/(byte) collision::ypos2#10 ) (byte) collision::i#8 ← phi( collision::@4/(byte) collision::i#9 ) - (byte*) current_piece_gfx#83 ← phi( collision::@4/(byte*) current_piece_gfx#92 ) - (byte) collision::c#8 ← phi( collision::@4/(byte) collision::c#3 ) + (byte*) collision::piece_gfx#7 ← phi( collision::@4/(byte*) collision::piece_gfx#8 ) + (byte) collision::c#6 ← phi( collision::@4/(byte) collision::c#7 ) (byte*) collision::playfield_line#2 ← phi( collision::@4/(byte*) collision::playfield_line#3 ) - (byte) collision::col#1 ← phi( collision::@4/(byte) collision::col#0 ) - (bool~) collision::$10 ← (byte) collision::col#1 >= (byte) PLAYFIELD_COLS#0 + (byte) collision::col#4 ← phi( collision::@4/(byte) collision::col#3 ) + (bool~) collision::$10 ← (byte) collision::col#4 >= (byte) PLAYFIELD_COLS#0 (bool~) collision::$11 ← ! (bool~) collision::$10 if((bool~) collision::$11) goto collision::@6 to:collision::@13 collision::@11: scope:[collision] from collision::@4 - (byte) collision::return#3 ← (byte) COLLISION_LEFT#0 + (byte) collision::return#6 ← (byte) COLLISION_LEFT#0 to:collision::@return collision::@6: scope:[collision] from collision::@5 - (byte) collision::xpos#11 ← phi( collision::@5/(byte) collision::xpos#12 ) - (byte) collision::ypos#9 ← phi( collision::@5/(byte) collision::ypos#10 ) - (byte) collision::line#5 ← phi( collision::@5/(byte) collision::line#6 ) + (byte) collision::xpos#10 ← phi( collision::@5/(byte) collision::xpos#11 ) (byte) collision::l#7 ← phi( collision::@5/(byte) collision::l#8 ) + (byte) collision::ypos2#8 ← phi( collision::@5/(byte) collision::ypos2#9 ) (byte) collision::i#7 ← phi( collision::@5/(byte) collision::i#8 ) - (byte*) current_piece_gfx#71 ← phi( collision::@5/(byte*) current_piece_gfx#83 ) - (byte) collision::c#7 ← phi( collision::@5/(byte) collision::c#8 ) - (byte) collision::col#2 ← phi( collision::@5/(byte) collision::col#1 ) + (byte*) collision::piece_gfx#6 ← phi( collision::@5/(byte*) collision::piece_gfx#7 ) + (byte) collision::c#5 ← phi( collision::@5/(byte) collision::c#6 ) + (byte) collision::col#5 ← phi( collision::@5/(byte) collision::col#4 ) (byte*) collision::playfield_line#1 ← phi( collision::@5/(byte*) collision::playfield_line#2 ) - (bool~) collision::$12 ← *((byte*) collision::playfield_line#1 + (byte) collision::col#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) collision::$12 ← *((byte*) collision::playfield_line#1 + (byte) collision::col#5) != (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) collision::$13 ← ! (bool~) collision::$12 if((bool~) collision::$13) goto collision::@7 to:collision::@15 collision::@13: scope:[collision] from collision::@5 - (byte) collision::return#4 ← (byte) COLLISION_RIGHT#0 + (byte) collision::return#7 ← (byte) COLLISION_RIGHT#0 to:collision::@return collision::@7: scope:[collision] from collision::@6 (byte*) collision::playfield_line#7 ← phi( collision::@6/(byte*) collision::playfield_line#1 ) - (byte) collision::xpos#10 ← phi( collision::@6/(byte) collision::xpos#11 ) - (byte) collision::ypos#8 ← phi( collision::@6/(byte) collision::ypos#9 ) - (byte) collision::line#4 ← phi( collision::@6/(byte) collision::line#5 ) - (byte) collision::l#6 ← phi( collision::@6/(byte) collision::l#7 ) + (byte) collision::xpos#9 ← phi( collision::@6/(byte) collision::xpos#10 ) + (byte) collision::l#5 ← phi( collision::@6/(byte) collision::l#7 ) + (byte) collision::ypos2#7 ← phi( collision::@6/(byte) collision::ypos2#8 ) (byte) collision::i#6 ← phi( collision::@6/(byte) collision::i#7 ) - (byte*) current_piece_gfx#48 ← phi( collision::@6/(byte*) current_piece_gfx#71 ) - (byte) collision::c#5 ← phi( collision::@6/(byte) collision::c#7 ) + (byte*) collision::piece_gfx#5 ← phi( collision::@6/(byte*) collision::piece_gfx#6 ) + (byte) collision::c#4 ← phi( collision::@6/(byte) collision::c#5 ) + (byte) collision::col#7 ← phi( collision::@6/(byte) collision::col#5 ) to:collision::@3 collision::@15: scope:[collision] from collision::@6 - (byte) collision::return#5 ← (byte) COLLISION_PLAYFIELD#0 + (byte) collision::return#8 ← (byte) COLLISION_PLAYFIELD#0 to:collision::@return collision::@17: scope:[collision] from collision::@3 - (byte) collision::xpos#9 ← phi( collision::@3/(byte) collision::xpos#7 ) (byte) collision::i#5 ← phi( collision::@3/(byte) collision::i#4 ) - (byte*) current_piece_gfx#47 ← phi( collision::@3/(byte*) current_piece_gfx#32 ) - (byte) collision::ypos#5 ← phi( collision::@3/(byte) collision::ypos#6 ) - (byte) collision::l#3 ← phi( collision::@3/(byte) collision::l#4 ) - (byte) collision::l#1 ← (byte) collision::l#3 + rangenext(0,3) + (byte*) collision::piece_gfx#4 ← phi( collision::@3/(byte*) collision::piece_gfx#3 ) + (byte) collision::xpos#6 ← phi( collision::@3/(byte) collision::xpos#7 ) + (byte) collision::l#2 ← phi( collision::@3/(byte) collision::l#3 ) + (byte) collision::ypos2#4 ← phi( collision::@3/(byte) collision::ypos2#6 ) + (byte) collision::ypos2#1 ← (byte) collision::ypos2#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) collision::l#1 ← (byte) collision::l#2 + rangenext(0,3) (bool~) collision::$15 ← (byte) collision::l#1 != rangelast(0,3) if((bool~) collision::$15) goto collision::@1 to:collision::@18 collision::@18: scope:[collision] from collision::@17 - (byte) collision::return#6 ← (byte) COLLISION_NONE#0 + (byte) collision::return#9 ← (byte) COLLISION_NONE#0 to:collision::@return -lock_current: scope:[lock_current] from play_movedown::@13 - (byte) current_piece_color#45 ← phi( play_movedown::@13/(byte) current_piece_color#32 ) - (byte) current_xpos#70 ← phi( play_movedown::@13/(byte) current_xpos#50 ) - (byte*) current_piece_gfx#49 ← phi( play_movedown::@13/(byte*) current_piece_gfx#44 ) - (byte) current_ypos#31 ← phi( play_movedown::@13/(byte) current_ypos#44 ) +lock_current: scope:[lock_current] from play_move_down::@13 + (byte) current_piece_color#45 ← phi( play_move_down::@13/(byte) current_piece_color#32 ) + (byte) current_xpos#73 ← phi( play_move_down::@13/(byte) current_xpos#53 ) + (byte*) current_piece_gfx#46 ← phi( play_move_down::@13/(byte*) current_piece_gfx#42 ) + (byte) current_ypos#36 ← phi( play_move_down::@13/(byte) current_ypos#48 ) (byte) lock_current::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) lock_current::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:lock_current::@1 lock_current::@1: scope:[lock_current] from lock_current lock_current::@5 (byte) current_piece_color#34 ← phi( lock_current/(byte) current_piece_color#45 lock_current::@5/(byte) current_piece_color#46 ) - (byte) current_xpos#52 ← phi( lock_current/(byte) current_xpos#70 lock_current::@5/(byte) current_xpos#71 ) + (byte) current_xpos#60 ← phi( lock_current/(byte) current_xpos#73 lock_current::@5/(byte) current_xpos#74 ) (byte) lock_current::i#3 ← phi( lock_current/(byte) lock_current::i#0 lock_current::@5/(byte) lock_current::i#5 ) - (byte*) current_piece_gfx#33 ← phi( lock_current/(byte*) current_piece_gfx#49 lock_current::@5/(byte*) current_piece_gfx#50 ) + (byte*) current_piece_gfx#32 ← phi( lock_current/(byte*) current_piece_gfx#46 lock_current::@5/(byte*) current_piece_gfx#47 ) (byte) lock_current::l#2 ← phi( lock_current/(byte) lock_current::l#0 lock_current::@5/(byte) lock_current::l#1 ) - (byte) current_ypos#17 ← phi( lock_current/(byte) current_ypos#31 lock_current::@5/(byte) current_ypos#32 ) - (byte~) lock_current::$0 ← (byte) current_ypos#17 + (byte) lock_current::l#2 + (byte) current_ypos#20 ← phi( lock_current/(byte) current_ypos#36 lock_current::@5/(byte) current_ypos#37 ) + (byte~) lock_current::$0 ← (byte) current_ypos#20 + (byte) lock_current::l#2 (byte) lock_current::line#0 ← (byte~) lock_current::$0 (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) lock_current::playfield_line#0 ← *((byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) (byte) lock_current::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:lock_current::@2 lock_current::@2: scope:[lock_current] from lock_current::@1 lock_current::@3 - (byte) current_ypos#58 ← phi( lock_current::@1/(byte) current_ypos#17 lock_current::@3/(byte) current_ypos#45 ) + (byte) current_ypos#60 ← phi( lock_current::@1/(byte) current_ypos#20 lock_current::@3/(byte) current_ypos#51 ) (byte) lock_current::l#5 ← phi( lock_current::@1/(byte) lock_current::l#2 lock_current::@3/(byte) lock_current::l#4 ) (byte*) lock_current::playfield_line#2 ← phi( lock_current::@1/(byte*) lock_current::playfield_line#0 lock_current::@3/(byte*) lock_current::playfield_line#3 ) (byte) current_piece_color#24 ← phi( lock_current::@1/(byte) current_piece_color#34 lock_current::@3/(byte) current_piece_color#35 ) - (byte) current_xpos#36 ← phi( lock_current::@1/(byte) current_xpos#52 lock_current::@3/(byte) current_xpos#53 ) + (byte) current_xpos#44 ← phi( lock_current::@1/(byte) current_xpos#60 lock_current::@3/(byte) current_xpos#61 ) (byte) lock_current::c#4 ← phi( lock_current::@1/(byte) lock_current::c#0 lock_current::@3/(byte) lock_current::c#1 ) (byte) lock_current::i#2 ← phi( lock_current::@1/(byte) lock_current::i#3 lock_current::@3/(byte) lock_current::i#4 ) - (byte*) current_piece_gfx#20 ← phi( lock_current::@1/(byte*) current_piece_gfx#33 lock_current::@3/(byte*) current_piece_gfx#34 ) - (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#20 + (byte) lock_current::i#2) + (byte*) current_piece_gfx#19 ← phi( lock_current::@1/(byte*) current_piece_gfx#32 lock_current::@3/(byte*) current_piece_gfx#33 ) + (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#19 + (byte) lock_current::i#2) (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 (bool~) lock_current::$2 ← (byte) lock_current::cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) lock_current::$3 ← ! (bool~) lock_current::$2 if((bool~) lock_current::$3) goto lock_current::@3 to:lock_current::@4 lock_current::@3: scope:[lock_current] from lock_current::@2 lock_current::@4 - (byte) current_ypos#45 ← phi( lock_current::@2/(byte) current_ypos#58 lock_current::@4/(byte) current_ypos#59 ) + (byte) current_ypos#51 ← phi( lock_current::@2/(byte) current_ypos#60 lock_current::@4/(byte) current_ypos#61 ) (byte*) lock_current::playfield_line#3 ← phi( lock_current::@2/(byte*) lock_current::playfield_line#2 lock_current::@4/(byte*) lock_current::playfield_line#1 ) (byte) current_piece_color#35 ← phi( lock_current::@2/(byte) current_piece_color#24 lock_current::@4/(byte) current_piece_color#14 ) - (byte) current_xpos#53 ← phi( lock_current::@2/(byte) current_xpos#36 lock_current::@4/(byte) current_xpos#20 ) + (byte) current_xpos#61 ← phi( lock_current::@2/(byte) current_xpos#44 lock_current::@4/(byte) current_xpos#26 ) (byte) lock_current::l#4 ← phi( lock_current::@2/(byte) lock_current::l#5 lock_current::@4/(byte) lock_current::l#6 ) (byte) lock_current::i#4 ← phi( lock_current::@2/(byte) lock_current::i#1 lock_current::@4/(byte) lock_current::i#6 ) - (byte*) current_piece_gfx#34 ← phi( lock_current::@2/(byte*) current_piece_gfx#20 lock_current::@4/(byte*) current_piece_gfx#51 ) + (byte*) current_piece_gfx#33 ← phi( lock_current::@2/(byte*) current_piece_gfx#19 lock_current::@4/(byte*) current_piece_gfx#48 ) (byte) lock_current::c#2 ← phi( lock_current::@2/(byte) lock_current::c#4 lock_current::@4/(byte) lock_current::c#3 ) (byte) lock_current::c#1 ← (byte) lock_current::c#2 + rangenext(0,3) (bool~) lock_current::$5 ← (byte) lock_current::c#1 != rangelast(0,3) if((bool~) lock_current::$5) goto lock_current::@2 to:lock_current::@5 lock_current::@4: scope:[lock_current] from lock_current::@2 - (byte) current_ypos#59 ← phi( lock_current::@2/(byte) current_ypos#58 ) + (byte) current_ypos#61 ← phi( lock_current::@2/(byte) current_ypos#60 ) (byte) lock_current::l#6 ← phi( lock_current::@2/(byte) lock_current::l#5 ) (byte) lock_current::i#6 ← phi( lock_current::@2/(byte) lock_current::i#1 ) - (byte*) current_piece_gfx#51 ← phi( lock_current::@2/(byte*) current_piece_gfx#20 ) + (byte*) current_piece_gfx#48 ← phi( lock_current::@2/(byte*) current_piece_gfx#19 ) (byte*) lock_current::playfield_line#1 ← phi( lock_current::@2/(byte*) lock_current::playfield_line#2 ) (byte) current_piece_color#14 ← phi( lock_current::@2/(byte) current_piece_color#24 ) (byte) lock_current::c#3 ← phi( lock_current::@2/(byte) lock_current::c#4 ) - (byte) current_xpos#20 ← phi( lock_current::@2/(byte) current_xpos#36 ) - (byte~) lock_current::$4 ← (byte) current_xpos#20 + (byte) lock_current::c#3 + (byte) current_xpos#26 ← phi( lock_current::@2/(byte) current_xpos#44 ) + (byte~) lock_current::$4 ← (byte) current_xpos#26 + (byte) lock_current::c#3 (byte) lock_current::col#0 ← (byte~) lock_current::$4 *((byte*) lock_current::playfield_line#1 + (byte) lock_current::col#0) ← (byte) current_piece_color#14 to:lock_current::@3 lock_current::@5: scope:[lock_current] from lock_current::@3 (byte) current_piece_color#46 ← phi( lock_current::@3/(byte) current_piece_color#35 ) - (byte) current_xpos#71 ← phi( lock_current::@3/(byte) current_xpos#53 ) + (byte) current_xpos#74 ← phi( lock_current::@3/(byte) current_xpos#61 ) (byte) lock_current::i#5 ← phi( lock_current::@3/(byte) lock_current::i#4 ) - (byte*) current_piece_gfx#50 ← phi( lock_current::@3/(byte*) current_piece_gfx#34 ) - (byte) current_ypos#32 ← phi( lock_current::@3/(byte) current_ypos#45 ) + (byte*) current_piece_gfx#47 ← phi( lock_current::@3/(byte*) current_piece_gfx#33 ) + (byte) current_ypos#37 ← phi( lock_current::@3/(byte) current_ypos#51 ) (byte) lock_current::l#3 ← phi( lock_current::@3/(byte) lock_current::l#4 ) (byte) lock_current::l#1 ← (byte) lock_current::l#3 + rangenext(0,3) (bool~) lock_current::$6 ← (byte) lock_current::l#1 != rangelast(0,3) @@ -1112,206 +1321,28 @@ lock_current::@5: scope:[lock_current] from lock_current::@3 lock_current::@return: scope:[lock_current] from lock_current::@5 return to:@return -spawn_current: scope:[spawn_current] from main::@21 play_movedown::@19 +spawn_current: scope:[spawn_current] from main::@21 play_move_down::@19 (byte*) current_piece#6 ← (byte[$4]) piece_t#0 - (byte) current_piece_orientation#7 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte*~) spawn_current::$0 ← (byte*) current_piece#6 + (byte) current_piece_orientation#7 - (byte*) current_piece_gfx#7 ← (byte*~) spawn_current::$0 + (byte) current_piece_orientation#9 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*~) spawn_current::$0 ← (byte*) current_piece#6 + (byte) current_piece_orientation#9 + (byte*) current_piece_gfx#9 ← (byte*~) spawn_current::$0 (byte) current_piece_color#6 ← (byte) GREEN#0 - (byte) current_xpos#7 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) current_xpos#10 ← (byte/signed byte/word/signed word/dword/signed dword) 3 (byte) current_ypos#7 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:spawn_current::@return spawn_current::@return: scope:[spawn_current] from spawn_current - (byte) current_ypos#18 ← phi( spawn_current/(byte) current_ypos#7 ) - (byte) current_xpos#21 ← phi( spawn_current/(byte) current_xpos#7 ) + (byte) current_ypos#21 ← phi( spawn_current/(byte) current_ypos#7 ) + (byte) current_xpos#27 ← phi( spawn_current/(byte) current_xpos#10 ) (byte) current_piece_color#15 ← phi( spawn_current/(byte) current_piece_color#6 ) - (byte*) current_piece_gfx#21 ← phi( spawn_current/(byte*) current_piece_gfx#7 ) - (byte) current_piece_orientation#19 ← phi( spawn_current/(byte) current_piece_orientation#7 ) - (byte*) current_piece#14 ← phi( spawn_current/(byte*) current_piece#6 ) - (byte*) current_piece#7 ← (byte*) current_piece#14 - (byte) current_piece_orientation#8 ← (byte) current_piece_orientation#19 - (byte*) current_piece_gfx#8 ← (byte*) current_piece_gfx#21 + (byte*) current_piece_gfx#20 ← phi( spawn_current/(byte*) current_piece_gfx#9 ) + (byte) current_piece_orientation#24 ← phi( spawn_current/(byte) current_piece_orientation#9 ) + (byte*) current_piece#16 ← phi( spawn_current/(byte*) current_piece#6 ) + (byte*) current_piece#7 ← (byte*) current_piece#16 + (byte) current_piece_orientation#10 ← (byte) current_piece_orientation#24 + (byte*) current_piece_gfx#10 ← (byte*) current_piece_gfx#20 (byte) current_piece_color#7 ← (byte) current_piece_color#15 - (byte) current_xpos#8 ← (byte) current_xpos#21 - (byte) current_ypos#8 ← (byte) current_ypos#18 - return - to:@return -play_moveother: scope:[play_moveother] from main::@27 - (byte*) current_piece#50 ← phi( main::@27/(byte*) current_piece#2 ) - (byte) current_ypos#46 ← phi( main::@27/(byte) current_ypos#2 ) - (byte) current_xpos#54 ← phi( main::@27/(byte) current_xpos#2 ) - (byte*) current_piece_gfx#52 ← phi( main::@27/(byte*) current_piece_gfx#2 ) - (byte) current_piece_orientation#41 ← phi( main::@27/(byte) current_piece_orientation#2 ) - (byte) play_moveother::key_event#1 ← phi( main::@27/(byte) play_moveother::key_event#0 ) - (byte) play_moveother::render#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte~) play_moveother::$0 ← (byte) play_moveother::key_event#1 & (byte/word/signed word/dword/signed dword) 128 - (bool~) play_moveother::$1 ← (byte~) play_moveother::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0 - (bool~) play_moveother::$2 ← ! (bool~) play_moveother::$1 - if((bool~) play_moveother::$2) goto play_moveother::@1 - to:play_moveother::@11 -play_moveother::@1: scope:[play_moveother] from play_moveother play_moveother::@10 play_moveother::@15 play_moveother::@18 play_moveother::@20 play_moveother::@4 play_moveother::@5 play_moveother::@8 - (byte) current_xpos#41 ← phi( play_moveother/(byte) current_xpos#54 play_moveother::@10/(byte) current_xpos#55 play_moveother::@15/(byte) current_xpos#56 play_moveother::@18/(byte) current_xpos#9 play_moveother::@20/(byte) current_xpos#10 play_moveother::@4/(byte) current_xpos#57 play_moveother::@5/(byte) current_xpos#58 play_moveother::@8/(byte) current_xpos#59 ) - (byte*) current_piece_gfx#35 ← phi( play_moveother/(byte*) current_piece_gfx#52 play_moveother::@10/(byte*) current_piece_gfx#53 play_moveother::@15/(byte*) current_piece_gfx#10 play_moveother::@18/(byte*) current_piece_gfx#54 play_moveother::@20/(byte*) current_piece_gfx#55 play_moveother::@4/(byte*) current_piece_gfx#9 play_moveother::@5/(byte*) current_piece_gfx#56 play_moveother::@8/(byte*) current_piece_gfx#57 ) - (byte) current_piece_orientation#32 ← phi( play_moveother/(byte) current_piece_orientation#41 play_moveother::@10/(byte) current_piece_orientation#42 play_moveother::@15/(byte) current_piece_orientation#10 play_moveother::@18/(byte) current_piece_orientation#43 play_moveother::@20/(byte) current_piece_orientation#44 play_moveother::@4/(byte) current_piece_orientation#9 play_moveother::@5/(byte) current_piece_orientation#45 play_moveother::@8/(byte) current_piece_orientation#46 ) - (byte) play_moveother::render#5 ← phi( play_moveother/(byte) play_moveother::render#0 play_moveother::@10/(byte) play_moveother::render#10 play_moveother::@15/(byte) play_moveother::render#2 play_moveother::@18/(byte) play_moveother::render#3 play_moveother::@20/(byte) play_moveother::render#4 play_moveother::@4/(byte) play_moveother::render#1 play_moveother::@5/(byte) play_moveother::render#11 play_moveother::@8/(byte) play_moveother::render#12 ) - (byte) play_moveother::return#1 ← (byte) play_moveother::render#5 - to:play_moveother::@return -play_moveother::@11: scope:[play_moveother] from play_moveother - (byte*) current_piece_gfx#84 ← phi( play_moveother/(byte*) current_piece_gfx#52 ) - (byte*) current_piece#43 ← phi( play_moveother/(byte*) current_piece#50 ) - (byte) current_piece_orientation#55 ← phi( play_moveother/(byte) current_piece_orientation#41 ) - (byte) play_moveother::render#20 ← phi( play_moveother/(byte) play_moveother::render#0 ) - (byte) current_ypos#33 ← phi( play_moveother/(byte) current_ypos#46 ) - (byte) current_xpos#37 ← phi( play_moveother/(byte) current_xpos#54 ) - (byte) play_moveother::key_event#2 ← phi( play_moveother/(byte) play_moveother::key_event#1 ) - (bool~) play_moveother::$3 ← (byte) play_moveother::key_event#2 == (byte) KEY_COMMA#0 - if((bool~) play_moveother::$3) goto play_moveother::@2 - to:play_moveother::@12 -play_moveother::@2: scope:[play_moveother] from play_moveother::@11 - (byte) current_piece_orientation#64 ← phi( play_moveother::@11/(byte) current_piece_orientation#55 ) - (byte*) current_piece_gfx#69 ← phi( play_moveother::@11/(byte*) current_piece_gfx#84 ) - (byte) play_moveother::render#17 ← phi( play_moveother::@11/(byte) play_moveother::render#20 ) - (byte) current_ypos#19 ← phi( play_moveother::@11/(byte) current_ypos#33 ) - (byte) current_xpos#22 ← phi( play_moveother::@11/(byte) current_xpos#37 ) - (byte/signed word/word/dword/signed dword~) play_moveother::$18 ← (byte) current_xpos#22 - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) collision::ypos#1 ← (byte) current_ypos#19 - (byte) collision::xpos#1 ← (byte/signed word/word/dword/signed dword~) play_moveother::$18 - call collision - (byte) collision::return#7 ← (byte) collision::return#2 - to:play_moveother::@22 -play_moveother::@22: scope:[play_moveother] from play_moveother::@2 - (byte*) current_piece_gfx#74 ← phi( play_moveother::@2/(byte*) current_piece_gfx#69 ) - (byte) current_piece_orientation#57 ← phi( play_moveother::@2/(byte) current_piece_orientation#64 ) - (byte) play_moveother::render#16 ← phi( play_moveother::@2/(byte) play_moveother::render#17 ) - (byte) current_xpos#40 ← phi( play_moveother::@2/(byte) current_xpos#22 ) - (byte) collision::return#11 ← phi( play_moveother::@2/(byte) collision::return#7 ) - (byte~) play_moveother::$19 ← (byte) collision::return#11 - (bool~) play_moveother::$20 ← (byte~) play_moveother::$19 == (byte) COLLISION_NONE#0 - (bool~) play_moveother::$21 ← ! (bool~) play_moveother::$20 - if((bool~) play_moveother::$21) goto play_moveother::@10 - to:play_moveother::@20 -play_moveother::@12: scope:[play_moveother] from play_moveother::@11 - (byte*) current_piece_gfx#85 ← phi( play_moveother::@11/(byte*) current_piece_gfx#84 ) - (byte) play_moveother::render#19 ← phi( play_moveother::@11/(byte) play_moveother::render#20 ) - (byte*) current_piece#34 ← phi( play_moveother::@11/(byte*) current_piece#43 ) - (byte) current_piece_orientation#47 ← phi( play_moveother::@11/(byte) current_piece_orientation#55 ) - (byte) current_ypos#34 ← phi( play_moveother::@11/(byte) current_ypos#33 ) - (byte) current_xpos#38 ← phi( play_moveother::@11/(byte) current_xpos#37 ) - (byte) play_moveother::key_event#3 ← phi( play_moveother::@11/(byte) play_moveother::key_event#2 ) - (bool~) play_moveother::$4 ← (byte) play_moveother::key_event#3 == (byte) KEY_DOT#0 - if((bool~) play_moveother::$4) goto play_moveother::@3 - to:play_moveother::@13 -play_moveother::@3: scope:[play_moveother] from play_moveother::@12 - (byte) current_piece_orientation#65 ← phi( play_moveother::@12/(byte) current_piece_orientation#47 ) - (byte*) current_piece_gfx#70 ← phi( play_moveother::@12/(byte*) current_piece_gfx#85 ) - (byte) play_moveother::render#18 ← phi( play_moveother::@12/(byte) play_moveother::render#19 ) - (byte) current_ypos#20 ← phi( play_moveother::@12/(byte) current_ypos#34 ) - (byte) current_xpos#23 ← phi( play_moveother::@12/(byte) current_xpos#38 ) - (byte/signed word/word/dword/signed dword~) play_moveother::$14 ← (byte) current_xpos#23 + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) collision::ypos#2 ← (byte) current_ypos#20 - (byte) collision::xpos#2 ← (byte/signed word/word/dword/signed dword~) play_moveother::$14 - call collision - (byte) collision::return#8 ← (byte) collision::return#2 - to:play_moveother::@23 -play_moveother::@23: scope:[play_moveother] from play_moveother::@3 - (byte*) current_piece_gfx#73 ← phi( play_moveother::@3/(byte*) current_piece_gfx#70 ) - (byte) current_piece_orientation#56 ← phi( play_moveother::@3/(byte) current_piece_orientation#65 ) - (byte) play_moveother::render#15 ← phi( play_moveother::@3/(byte) play_moveother::render#18 ) - (byte) current_xpos#39 ← phi( play_moveother::@3/(byte) current_xpos#23 ) - (byte) collision::return#12 ← phi( play_moveother::@3/(byte) collision::return#8 ) - (byte~) play_moveother::$15 ← (byte) collision::return#12 - (bool~) play_moveother::$16 ← (byte~) play_moveother::$15 == (byte) COLLISION_NONE#0 - (bool~) play_moveother::$17 ← ! (bool~) play_moveother::$16 - if((bool~) play_moveother::$17) goto play_moveother::@8 - to:play_moveother::@18 -play_moveother::@13: scope:[play_moveother] from play_moveother::@12 - (byte*) current_piece_gfx#86 ← phi( play_moveother::@12/(byte*) current_piece_gfx#85 ) - (byte) current_xpos#72 ← phi( play_moveother::@12/(byte) current_xpos#38 ) - (byte) play_moveother::render#13 ← phi( play_moveother::@12/(byte) play_moveother::render#19 ) - (byte*) current_piece#24 ← phi( play_moveother::@12/(byte*) current_piece#34 ) - (byte) current_piece_orientation#30 ← phi( play_moveother::@12/(byte) current_piece_orientation#47 ) - (byte) play_moveother::key_event#4 ← phi( play_moveother::@12/(byte) play_moveother::key_event#3 ) - (bool~) play_moveother::$5 ← (byte) play_moveother::key_event#4 == (byte) KEY_Z#0 - if((bool~) play_moveother::$5) goto play_moveother::@4 - to:play_moveother::@14 -play_moveother::@4: scope:[play_moveother] from play_moveother::@13 - (byte) current_xpos#57 ← phi( play_moveother::@13/(byte) current_xpos#72 ) - (byte) play_moveother::render#6 ← phi( play_moveother::@13/(byte) play_moveother::render#13 ) - (byte*) current_piece#15 ← phi( play_moveother::@13/(byte*) current_piece#24 ) - (byte) current_piece_orientation#20 ← phi( play_moveother::@13/(byte) current_piece_orientation#30 ) - (byte/signed word/word/dword/signed dword~) play_moveother::$11 ← (byte) current_piece_orientation#20 - (byte/signed byte/word/signed word/dword/signed dword) 16 - (byte/word/dword~) play_moveother::$12 ← (byte/signed word/word/dword/signed dword~) play_moveother::$11 & (byte/signed byte/word/signed word/dword/signed dword) 63 - (byte) current_piece_orientation#9 ← (byte/word/dword~) play_moveother::$12 - (byte*~) play_moveother::$13 ← (byte*) current_piece#15 + (byte) current_piece_orientation#9 - (byte*) current_piece_gfx#9 ← (byte*~) play_moveother::$13 - (byte) play_moveother::render#1 ← ++ (byte) play_moveother::render#6 - to:play_moveother::@1 -play_moveother::@14: scope:[play_moveother] from play_moveother::@13 - (byte) current_xpos#73 ← phi( play_moveother::@13/(byte) current_xpos#72 ) - (byte*) current_piece_gfx#72 ← phi( play_moveother::@13/(byte*) current_piece_gfx#86 ) - (byte) play_moveother::render#14 ← phi( play_moveother::@13/(byte) play_moveother::render#13 ) - (byte*) current_piece#25 ← phi( play_moveother::@13/(byte*) current_piece#24 ) - (byte) current_piece_orientation#31 ← phi( play_moveother::@13/(byte) current_piece_orientation#30 ) - (byte) play_moveother::key_event#5 ← phi( play_moveother::@13/(byte) play_moveother::key_event#4 ) - (bool~) play_moveother::$6 ← (byte) play_moveother::key_event#5 == (byte) KEY_X#0 - (bool~) play_moveother::$7 ← ! (bool~) play_moveother::$6 - if((bool~) play_moveother::$7) goto play_moveother::@5 - to:play_moveother::@15 -play_moveother::@5: scope:[play_moveother] from play_moveother::@14 - (byte) current_xpos#58 ← phi( play_moveother::@14/(byte) current_xpos#73 ) - (byte*) current_piece_gfx#56 ← phi( play_moveother::@14/(byte*) current_piece_gfx#72 ) - (byte) current_piece_orientation#45 ← phi( play_moveother::@14/(byte) current_piece_orientation#31 ) - (byte) play_moveother::render#11 ← phi( play_moveother::@14/(byte) play_moveother::render#14 ) - to:play_moveother::@1 -play_moveother::@15: scope:[play_moveother] from play_moveother::@14 - (byte) current_xpos#56 ← phi( play_moveother::@14/(byte) current_xpos#73 ) - (byte) play_moveother::render#7 ← phi( play_moveother::@14/(byte) play_moveother::render#14 ) - (byte*) current_piece#16 ← phi( play_moveother::@14/(byte*) current_piece#25 ) - (byte) current_piece_orientation#21 ← phi( play_moveother::@14/(byte) current_piece_orientation#31 ) - (byte/signed word/word/dword/signed dword~) play_moveother::$8 ← (byte) current_piece_orientation#21 + (byte/signed byte/word/signed word/dword/signed dword) 16 - (byte/word/dword~) play_moveother::$9 ← (byte/signed word/word/dword/signed dword~) play_moveother::$8 & (byte/signed byte/word/signed word/dword/signed dword) 63 - (byte) current_piece_orientation#10 ← (byte/word/dword~) play_moveother::$9 - (byte*~) play_moveother::$10 ← (byte*) current_piece#16 + (byte) current_piece_orientation#10 - (byte*) current_piece_gfx#10 ← (byte*~) play_moveother::$10 - (byte) play_moveother::render#2 ← ++ (byte) play_moveother::render#7 - to:play_moveother::@1 -play_moveother::@8: scope:[play_moveother] from play_moveother::@23 - (byte) current_xpos#59 ← phi( play_moveother::@23/(byte) current_xpos#39 ) - (byte*) current_piece_gfx#57 ← phi( play_moveother::@23/(byte*) current_piece_gfx#73 ) - (byte) current_piece_orientation#46 ← phi( play_moveother::@23/(byte) current_piece_orientation#56 ) - (byte) play_moveother::render#12 ← phi( play_moveother::@23/(byte) play_moveother::render#15 ) - to:play_moveother::@1 -play_moveother::@18: scope:[play_moveother] from play_moveother::@23 - (byte*) current_piece_gfx#54 ← phi( play_moveother::@23/(byte*) current_piece_gfx#73 ) - (byte) current_piece_orientation#43 ← phi( play_moveother::@23/(byte) current_piece_orientation#56 ) - (byte) play_moveother::render#8 ← phi( play_moveother::@23/(byte) play_moveother::render#15 ) - (byte) current_xpos#24 ← phi( play_moveother::@23/(byte) current_xpos#39 ) - (byte) current_xpos#9 ← ++ (byte) current_xpos#24 - (byte) play_moveother::render#3 ← ++ (byte) play_moveother::render#8 - to:play_moveother::@1 -play_moveother::@10: scope:[play_moveother] from play_moveother::@22 - (byte) current_xpos#55 ← phi( play_moveother::@22/(byte) current_xpos#40 ) - (byte*) current_piece_gfx#53 ← phi( play_moveother::@22/(byte*) current_piece_gfx#74 ) - (byte) current_piece_orientation#42 ← phi( play_moveother::@22/(byte) current_piece_orientation#57 ) - (byte) play_moveother::render#10 ← phi( play_moveother::@22/(byte) play_moveother::render#16 ) - to:play_moveother::@1 -play_moveother::@20: scope:[play_moveother] from play_moveother::@22 - (byte*) current_piece_gfx#55 ← phi( play_moveother::@22/(byte*) current_piece_gfx#74 ) - (byte) current_piece_orientation#44 ← phi( play_moveother::@22/(byte) current_piece_orientation#57 ) - (byte) play_moveother::render#9 ← phi( play_moveother::@22/(byte) play_moveother::render#16 ) - (byte) current_xpos#25 ← phi( play_moveother::@22/(byte) current_xpos#40 ) - (byte) current_xpos#10 ← -- (byte) current_xpos#25 - (byte) play_moveother::render#4 ← ++ (byte) play_moveother::render#9 - to:play_moveother::@1 -play_moveother::@return: scope:[play_moveother] from play_moveother::@1 - (byte) current_xpos#26 ← phi( play_moveother::@1/(byte) current_xpos#41 ) - (byte*) current_piece_gfx#22 ← phi( play_moveother::@1/(byte*) current_piece_gfx#35 ) - (byte) current_piece_orientation#22 ← phi( play_moveother::@1/(byte) current_piece_orientation#32 ) - (byte) play_moveother::return#4 ← phi( play_moveother::@1/(byte) play_moveother::return#1 ) - (byte) play_moveother::return#2 ← (byte) play_moveother::return#4 - (byte) current_piece_orientation#11 ← (byte) current_piece_orientation#22 - (byte*) current_piece_gfx#11 ← (byte*) current_piece_gfx#22 - (byte) current_xpos#11 ← (byte) current_xpos#26 + (byte) current_xpos#11 ← (byte) current_xpos#27 + (byte) current_ypos#8 ← (byte) current_ypos#21 return to:@return init: scope:[init] from main @@ -1407,80 +1438,82 @@ render_playfield::@1: scope:[render_playfield] from render_playfield render_pla to:render_playfield::@2 render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2 (byte) render_playfield::l#4 ← phi( render_playfield::@1/(byte) render_playfield::l#2 render_playfield::@2/(byte) render_playfield::l#4 ) - (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte) render_playfield::c#0 render_playfield::@2/(byte) render_playfield::c#1 ) - (byte*) render_playfield::line#1 ← phi( render_playfield::@1/(byte*) render_playfield::line#0 render_playfield::@2/(byte*) render_playfield::line#1 ) - (byte*~) render_playfield::$3 ← (byte*) render_playfield::line#1 + (byte) render_playfield::c#2 - *((byte*~) render_playfield::$3) ← *((byte[$1]) playfield#0 + (byte) render_playfield::i#2) + (byte*) render_playfield::line#2 ← phi( render_playfield::@1/(byte*) render_playfield::line#0 render_playfield::@2/(byte*) render_playfield::line#1 ) + (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) + *((byte*) render_playfield::line#2) ← *((byte[$1]) playfield#0 + (byte) render_playfield::i#2) + (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 (byte) render_playfield::c#1 ← (byte) render_playfield::c#2 + rangenext(0,render_playfield::$2) - (bool~) render_playfield::$4 ← (byte) render_playfield::c#1 != rangelast(0,render_playfield::$2) - if((bool~) render_playfield::$4) goto render_playfield::@2 + (bool~) render_playfield::$3 ← (byte) render_playfield::c#1 != rangelast(0,render_playfield::$2) + if((bool~) render_playfield::$3) goto render_playfield::@2 to:render_playfield::@3 render_playfield::@3: scope:[render_playfield] from render_playfield::@2 (byte) render_playfield::i#4 ← phi( render_playfield::@2/(byte) render_playfield::i#1 ) (byte) render_playfield::l#3 ← phi( render_playfield::@2/(byte) render_playfield::l#4 ) (byte) render_playfield::l#1 ← (byte) render_playfield::l#3 + rangenext(0,render_playfield::$0) - (bool~) render_playfield::$5 ← (byte) render_playfield::l#1 != rangelast(0,render_playfield::$0) - if((bool~) render_playfield::$5) goto render_playfield::@1 + (bool~) render_playfield::$4 ← (byte) render_playfield::l#1 != rangelast(0,render_playfield::$0) + if((bool~) render_playfield::$4) goto render_playfield::@1 to:render_playfield::@return render_playfield::@return: scope:[render_playfield] from render_playfield::@3 return to:@return -render_current: scope:[render_current] from main::@23 main::@29 - (byte) current_piece_color#62 ← phi( main::@23/(byte) current_piece_color#38 main::@29/(byte) current_piece_color#50 ) - (byte) current_xpos#81 ← phi( main::@23/(byte) current_xpos#63 main::@29/(byte) current_xpos#78 ) - (byte*) current_piece_gfx#75 ← phi( main::@23/(byte*) current_piece_gfx#62 main::@29/(byte*) current_piece_gfx#79 ) - (byte) current_ypos#35 ← phi( main::@23/(byte) current_ypos#47 main::@29/(byte) current_ypos#48 ) +render_current: scope:[render_current] from main::@23 main::@30 + (byte) current_piece_color#63 ← phi( main::@23/(byte) current_piece_color#38 main::@30/(byte) current_piece_color#51 ) + (byte*) current_piece_gfx#61 ← phi( main::@23/(byte*) current_piece_gfx#53 main::@30/(byte*) current_piece_gfx#65 ) + (byte) current_xpos#62 ← phi( main::@23/(byte) current_xpos#65 main::@30/(byte) current_xpos#75 ) + (byte) current_ypos#22 ← phi( main::@23/(byte) current_ypos#38 main::@30/(byte) current_ypos#39 ) (byte) render_current::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) render_current::$0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_current::ypos2#0 ← (byte~) render_current::$0 (byte) render_current::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_current::@1 render_current::@1: scope:[render_current] from render_current render_current::@2 - (byte) current_piece_color#55 ← phi( render_current/(byte) current_piece_color#62 render_current::@2/(byte) current_piece_color#63 ) - (byte) current_xpos#74 ← phi( render_current/(byte) current_xpos#81 render_current::@2/(byte) current_xpos#82 ) + (byte) current_piece_color#56 ← phi( render_current/(byte) current_piece_color#63 render_current::@2/(byte) current_piece_color#64 ) (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#58 ← phi( render_current/(byte*) current_piece_gfx#75 render_current::@2/(byte*) current_piece_gfx#76 ) - (byte) render_current::l#2 ← phi( render_current/(byte) render_current::l#0 render_current::@2/(byte) render_current::l#1 ) - (byte) current_ypos#21 ← phi( render_current/(byte) current_ypos#35 render_current::@2/(byte) current_ypos#36 ) - (byte~) render_current::$0 ← (byte) current_ypos#21 + (byte) render_current::l#2 - (byte) render_current::line#0 ← (byte~) render_current::$0 - (bool~) render_current::$1 ← (byte) render_current::line#0 < (byte) PLAYFIELD_LINES#0 - (bool~) render_current::$2 ← ! (bool~) render_current::$1 - if((bool~) render_current::$2) goto render_current::@2 + (byte*) current_piece_gfx#49 ← phi( render_current/(byte*) current_piece_gfx#61 render_current::@2/(byte*) current_piece_gfx#62 ) + (byte) current_xpos#45 ← phi( render_current/(byte) current_xpos#62 render_current::@2/(byte) current_xpos#63 ) + (byte) render_current::l#3 ← phi( render_current/(byte) render_current::l#0 render_current::@2/(byte) render_current::l#1 ) + (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@2/(byte) render_current::ypos2#1 ) + (byte/signed word/word/dword/signed dword~) render_current::$1 ← (byte/signed byte/word/signed word/dword/signed dword) 2 * (byte) PLAYFIELD_LINES#0 + (bool~) render_current::$2 ← (byte) render_current::ypos2#2 < (byte/signed word/word/dword/signed dword~) render_current::$1 + (bool~) render_current::$3 ← ! (bool~) render_current::$2 + 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#63 ← phi( render_current::@1/(byte) current_piece_color#55 render_current::@4/(byte) current_piece_color#47 ) - (byte) current_xpos#82 ← phi( render_current::@1/(byte) current_xpos#74 render_current::@4/(byte) current_xpos#60 ) + (byte) current_piece_color#64 ← phi( render_current::@1/(byte) current_piece_color#56 render_current::@4/(byte) current_piece_color#47 ) (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#76 ← phi( render_current::@1/(byte*) current_piece_gfx#58 render_current::@4/(byte*) current_piece_gfx#36 ) - (byte) current_ypos#36 ← phi( render_current::@1/(byte) current_ypos#21 render_current::@4/(byte) current_ypos#49 ) - (byte) render_current::l#3 ← phi( render_current::@1/(byte) render_current::l#2 render_current::@4/(byte) render_current::l#4 ) - (byte) render_current::l#1 ← (byte) render_current::l#3 + rangenext(0,3) - (bool~) render_current::$10 ← (byte) render_current::l#1 != rangelast(0,3) - if((bool~) render_current::$10) goto render_current::@1 + (byte*) current_piece_gfx#62 ← phi( render_current::@1/(byte*) current_piece_gfx#49 render_current::@4/(byte*) current_piece_gfx#34 ) + (byte) current_xpos#63 ← phi( render_current::@1/(byte) current_xpos#45 render_current::@4/(byte) current_xpos#76 ) + (byte) 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 + (byte) render_current::l#1 ← (byte) render_current::l#2 + rangenext(0,3) + (bool~) render_current::$9 ← (byte) render_current::l#1 != rangelast(0,3) + 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_ypos#66 ← phi( render_current::@1/(byte) current_ypos#21 ) - (byte) current_piece_color#48 ← phi( render_current::@1/(byte) current_piece_color#55 ) - (byte) render_current::l#8 ← phi( render_current::@1/(byte) render_current::l#2 ) - (byte) current_xpos#61 ← phi( render_current::@1/(byte) current_xpos#74 ) + (byte) current_piece_color#48 ← phi( render_current::@1/(byte) current_piece_color#56 ) + (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#37 ← phi( render_current::@1/(byte*) current_piece_gfx#58 ) - (byte) render_current::line#1 ← phi( render_current::@1/(byte) render_current::line#0 ) - (byte~) render_current::$3 ← (byte) render_current::line#1 << (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte*) render_current::screen_line#0 ← *((byte*[$2]) screen_lines#0 + (byte~) render_current::$3) + (byte*) current_piece_gfx#35 ← phi( render_current::@1/(byte*) current_piece_gfx#49 ) + (byte) current_xpos#28 ← phi( render_current::@1/(byte) current_xpos#45 ) + (byte) render_current::ypos2#4 ← phi( render_current::@1/(byte) render_current::ypos2#2 ) + (byte*) render_current::screen_line#0 ← *((byte*[$2]) screen_lines#0 + (byte) render_current::ypos2#4) + (byte) render_current::xpos#0 ← (byte) current_xpos#28 (byte) render_current::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_current::@3 render_current::@3: scope:[render_current] from render_current::@4 render_current::@6 - (byte) current_ypos#60 ← phi( render_current::@4/(byte) current_ypos#49 render_current::@6/(byte) current_ypos#66 ) + (byte) current_xpos#81 ← phi( render_current::@4/(byte) current_xpos#76 render_current::@6/(byte) current_xpos#28 ) (byte*) render_current::screen_line#3 ← phi( render_current::@4/(byte*) render_current::screen_line#4 render_current::@6/(byte*) render_current::screen_line#0 ) (byte) current_piece_color#36 ← phi( render_current::@4/(byte) current_piece_color#47 render_current::@6/(byte) current_piece_color#48 ) (byte) render_current::l#5 ← phi( render_current::@4/(byte) render_current::l#4 render_current::@6/(byte) render_current::l#8 ) - (byte) current_xpos#42 ← phi( render_current::@4/(byte) current_xpos#60 render_current::@6/(byte) current_xpos#61 ) - (byte) render_current::c#4 ← phi( render_current::@4/(byte) render_current::c#1 render_current::@6/(byte) render_current::c#0 ) + (byte) render_current::ypos2#6 ← phi( render_current::@4/(byte) render_current::ypos2#5 render_current::@6/(byte) render_current::ypos2#4 ) + (byte) render_current::c#3 ← phi( render_current::@4/(byte) render_current::c#1 render_current::@6/(byte) render_current::c#0 ) + (byte) render_current::xpos#5 ← phi( render_current::@4/(byte) render_current::xpos#1 render_current::@6/(byte) render_current::xpos#0 ) (byte) render_current::i#2 ← phi( render_current::@4/(byte) render_current::i#3 render_current::@6/(byte) render_current::i#4 ) - (byte*) current_piece_gfx#23 ← phi( render_current::@4/(byte*) current_piece_gfx#36 render_current::@6/(byte*) current_piece_gfx#37 ) - (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#23 + (byte) render_current::i#2) + (byte*) current_piece_gfx#21 ← phi( render_current::@4/(byte*) current_piece_gfx#34 render_current::@6/(byte*) current_piece_gfx#35 ) + (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#21 + (byte) render_current::i#2) (byte) render_current::i#1 ← ++ (byte) render_current::i#2 (bool~) render_current::$4 ← (byte) render_current::current_cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) render_current::$5 ← ! (bool~) render_current::$4 @@ -1488,94 +1521,96 @@ render_current::@3: scope:[render_current] from render_current::@4 render_curre to:render_current::@7 render_current::@4: scope:[render_current] from render_current::@3 render_current::@5 render_current::@8 (byte*) render_current::screen_line#4 ← phi( render_current::@3/(byte*) render_current::screen_line#3 render_current::@5/(byte*) render_current::screen_line#5 render_current::@8/(byte*) render_current::screen_line#1 ) - (byte) current_piece_color#47 ← phi( render_current::@3/(byte) current_piece_color#36 render_current::@5/(byte) current_piece_color#56 render_current::@8/(byte) current_piece_color#16 ) - (byte) current_xpos#60 ← phi( render_current::@3/(byte) current_xpos#42 render_current::@5/(byte) current_xpos#75 render_current::@8/(byte) current_xpos#76 ) - (byte) current_ypos#49 ← phi( render_current::@3/(byte) current_ypos#60 render_current::@5/(byte) current_ypos#61 render_current::@8/(byte) current_ypos#62 ) + (byte) current_piece_color#47 ← phi( render_current::@3/(byte) current_piece_color#36 render_current::@5/(byte) current_piece_color#57 render_current::@8/(byte) current_piece_color#16 ) + (byte) current_xpos#76 ← phi( render_current::@3/(byte) current_xpos#81 render_current::@5/(byte) current_xpos#82 render_current::@8/(byte) current_xpos#83 ) (byte) 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#36 ← phi( render_current::@3/(byte*) current_piece_gfx#23 render_current::@5/(byte*) current_piece_gfx#59 render_current::@8/(byte*) current_piece_gfx#60 ) + (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 ) - (byte) render_current::c#2 ← phi( render_current::@3/(byte) render_current::c#4 render_current::@5/(byte) render_current::c#5 render_current::@8/(byte) render_current::c#6 ) + (byte) render_current::ypos2#5 ← phi( render_current::@3/(byte) render_current::ypos2#6 render_current::@5/(byte) render_current::ypos2#7 render_current::@8/(byte) render_current::ypos2#8 ) + (byte) render_current::c#2 ← phi( render_current::@3/(byte) render_current::c#3 render_current::@5/(byte) render_current::c#4 render_current::@8/(byte) render_current::c#5 ) + (byte) render_current::xpos#2 ← phi( render_current::@3/(byte) render_current::xpos#5 render_current::@5/(byte) render_current::xpos#6 render_current::@8/(byte) render_current::xpos#4 ) + (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 (byte) render_current::c#1 ← (byte) render_current::c#2 + rangenext(0,3) - (bool~) render_current::$9 ← (byte) render_current::c#1 != rangelast(0,3) - if((bool~) render_current::$9) goto render_current::@3 + (bool~) render_current::$8 ← (byte) render_current::c#1 != rangelast(0,3) + 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_ypos#67 ← phi( render_current::@3/(byte) current_ypos#60 ) + (byte) current_xpos#88 ← phi( render_current::@3/(byte) current_xpos#81 ) (byte) render_current::i#9 ← phi( render_current::@3/(byte) render_current::i#1 ) - (byte*) current_piece_gfx#77 ← phi( render_current::@3/(byte*) current_piece_gfx#23 ) + (byte*) current_piece_gfx#63 ← 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 ) (byte*) render_current::screen_line#2 ← phi( render_current::@3/(byte*) render_current::screen_line#3 ) (byte) current_piece_color#25 ← phi( render_current::@3/(byte) current_piece_color#36 ) - (byte) render_current::c#3 ← phi( render_current::@3/(byte) render_current::c#4 ) - (byte) current_xpos#27 ← phi( render_current::@3/(byte) current_xpos#42 ) - (byte~) render_current::$6 ← (byte) current_xpos#27 + (byte) render_current::c#3 - (byte) render_current::xpos#0 ← (byte~) render_current::$6 - (bool~) render_current::$7 ← (byte) render_current::xpos#0 < (byte) PLAYFIELD_COLS#0 - (bool~) render_current::$8 ← ! (bool~) render_current::$7 - if((bool~) render_current::$8) goto render_current::@5 + (byte) render_current::xpos#3 ← phi( render_current::@3/(byte) render_current::xpos#5 ) + (bool~) render_current::$6 ← (byte) render_current::xpos#3 < (byte) PLAYFIELD_COLS#0 + (bool~) render_current::$7 ← ! (bool~) render_current::$6 + if((bool~) render_current::$7) goto render_current::@5 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#56 ← phi( render_current::@7/(byte) current_piece_color#25 ) - (byte) current_xpos#75 ← phi( render_current::@7/(byte) current_xpos#27 ) - (byte) current_ypos#61 ← phi( render_current::@7/(byte) current_ypos#67 ) + (byte) current_piece_color#57 ← phi( render_current::@7/(byte) current_piece_color#25 ) + (byte) current_xpos#82 ← phi( render_current::@7/(byte) current_xpos#88 ) (byte) render_current::i#6 ← phi( render_current::@7/(byte) render_current::i#9 ) - (byte*) current_piece_gfx#59 ← phi( render_current::@7/(byte*) current_piece_gfx#77 ) + (byte*) current_piece_gfx#50 ← phi( render_current::@7/(byte*) current_piece_gfx#63 ) (byte) render_current::l#6 ← phi( render_current::@7/(byte) render_current::l#9 ) - (byte) render_current::c#5 ← phi( render_current::@7/(byte) render_current::c#3 ) + (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#76 ← phi( render_current::@7/(byte) current_xpos#27 ) - (byte) current_ypos#62 ← phi( render_current::@7/(byte) current_ypos#67 ) + (byte) current_xpos#83 ← phi( render_current::@7/(byte) current_xpos#88 ) (byte) render_current::i#7 ← phi( render_current::@7/(byte) render_current::i#9 ) - (byte*) current_piece_gfx#60 ← phi( render_current::@7/(byte*) current_piece_gfx#77 ) + (byte*) current_piece_gfx#51 ← phi( render_current::@7/(byte*) current_piece_gfx#63 ) (byte) render_current::l#7 ← phi( render_current::@7/(byte) render_current::l#9 ) - (byte) render_current::c#6 ← phi( render_current::@7/(byte) render_current::c#3 ) - (byte) render_current::xpos#1 ← phi( render_current::@7/(byte) render_current::xpos#0 ) + (byte) render_current::ypos2#8 ← phi( render_current::@7/(byte) render_current::ypos2#9 ) + (byte) render_current::c#5 ← phi( render_current::@7/(byte) render_current::c#6 ) + (byte) render_current::xpos#4 ← phi( render_current::@7/(byte) render_current::xpos#3 ) (byte*) render_current::screen_line#1 ← phi( render_current::@7/(byte*) render_current::screen_line#2 ) (byte) current_piece_color#16 ← phi( render_current::@7/(byte) current_piece_color#25 ) - *((byte*) render_current::screen_line#1 + (byte) render_current::xpos#1) ← (byte) current_piece_color#16 + *((byte*) render_current::screen_line#1 + (byte) render_current::xpos#4) ← (byte) current_piece_color#16 to:render_current::@4 render_current::@return: scope:[render_current] from render_current::@2 return to:@return -@20: scope:[] from @13 - (byte*) SCREEN#3 ← phi( @13/(byte*) SCREEN#4 ) - (byte) current_movedown_counter#20 ← phi( @13/(byte) current_movedown_counter#26 ) - (byte) keyboard_modifiers#25 ← phi( @13/(byte) keyboard_modifiers#32 ) - (byte) keyboard_events_size#28 ← phi( @13/(byte) keyboard_events_size#35 ) - (byte) current_ypos#37 ← phi( @13/(byte) current_ypos#50 ) - (byte) current_xpos#43 ← phi( @13/(byte) current_xpos#62 ) - (byte) current_piece_color#26 ← phi( @13/(byte) current_piece_color#37 ) - (byte*) current_piece_gfx#38 ← phi( @13/(byte*) current_piece_gfx#61 ) - (byte) current_piece_orientation#33 ← phi( @13/(byte) current_piece_orientation#48 ) - (byte*) current_piece#26 ← phi( @13/(byte*) current_piece#35 ) +@21: scope:[] from @15 + (byte*) SCREEN#3 ← phi( @15/(byte*) SCREEN#4 ) + (byte) current_movedown_counter#20 ← phi( @15/(byte) current_movedown_counter#26 ) + (byte) keyboard_modifiers#25 ← phi( @15/(byte) keyboard_modifiers#32 ) + (byte) keyboard_events_size#28 ← phi( @15/(byte) keyboard_events_size#35 ) + (byte) current_ypos#40 ← phi( @15/(byte) current_ypos#52 ) + (byte) current_xpos#46 ← phi( @15/(byte) current_xpos#64 ) + (byte) current_piece_color#26 ← phi( @15/(byte) current_piece_color#37 ) + (byte*) current_piece_gfx#36 ← phi( @15/(byte*) current_piece_gfx#52 ) + (byte) current_piece_orientation#40 ← phi( @15/(byte) current_piece_orientation#50 ) + (byte*) current_piece#29 ← phi( @15/(byte*) current_piece#41 ) (byte/signed byte/word/signed word/dword/signed dword~) $3 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 (byte/signed word/word/dword/signed dword/signed byte~) $4 ← (byte/signed byte/word/signed word/dword/signed dword~) $3 * (byte/signed byte/word/signed word/dword/signed dword) 4 (byte[$4]) piece_t#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } call main - to:@21 -@21: scope:[] from @20 - (byte) current_movedown_counter#13 ← phi( @20/(byte) current_movedown_counter#2 ) - (byte) keyboard_modifiers#17 ← phi( @20/(byte) keyboard_modifiers#8 ) - (byte) keyboard_events_size#20 ← phi( @20/(byte) keyboard_events_size#8 ) - (byte) current_ypos#22 ← phi( @20/(byte) current_ypos#3 ) - (byte) current_xpos#28 ← phi( @20/(byte) current_xpos#4 ) - (byte) current_piece_color#17 ← phi( @20/(byte) current_piece_color#3 ) - (byte*) current_piece_gfx#24 ← phi( @20/(byte*) current_piece_gfx#4 ) - (byte) current_piece_orientation#23 ← phi( @20/(byte) current_piece_orientation#4 ) - (byte*) current_piece#17 ← phi( @20/(byte*) current_piece#3 ) + to:@22 +@22: scope:[] from @21 + (byte) current_movedown_counter#13 ← phi( @21/(byte) current_movedown_counter#2 ) + (byte) keyboard_modifiers#17 ← phi( @21/(byte) keyboard_modifiers#8 ) + (byte) keyboard_events_size#20 ← phi( @21/(byte) keyboard_events_size#8 ) + (byte) current_ypos#23 ← phi( @21/(byte) current_ypos#3 ) + (byte) current_xpos#29 ← phi( @21/(byte) current_xpos#4 ) + (byte) current_piece_color#17 ← phi( @21/(byte) current_piece_color#3 ) + (byte*) current_piece_gfx#22 ← phi( @21/(byte*) current_piece_gfx#4 ) + (byte) current_piece_orientation#25 ← phi( @21/(byte) current_piece_orientation#4 ) + (byte*) current_piece#17 ← phi( @21/(byte*) current_piece#3 ) (byte*) current_piece#8 ← (byte*) current_piece#17 - (byte) current_piece_orientation#12 ← (byte) current_piece_orientation#23 - (byte*) current_piece_gfx#12 ← (byte*) current_piece_gfx#24 + (byte) current_piece_orientation#11 ← (byte) current_piece_orientation#25 + (byte*) current_piece_gfx#11 ← (byte*) current_piece_gfx#22 (byte) current_piece_color#8 ← (byte) current_piece_color#17 - (byte) current_xpos#12 ← (byte) current_xpos#28 - (byte) current_ypos#9 ← (byte) current_ypos#22 + (byte) current_xpos#12 ← (byte) current_xpos#29 + (byte) current_ypos#9 ← (byte) current_ypos#23 (byte) keyboard_events_size#9 ← (byte) keyboard_events_size#20 (byte) keyboard_modifiers#9 ← (byte) keyboard_modifiers#17 (byte) current_movedown_counter#6 ← (byte) current_movedown_counter#13 to:@end -@end: scope:[] from @21 +@end: scope:[] from @22 SYMBOL TABLE SSA (byte~) $1 @@ -1583,9 +1618,9 @@ SYMBOL TABLE SSA (byte/signed byte/word/signed word/dword/signed dword~) $3 (byte/signed word/word/dword/signed dword/signed byte~) $4 (label) @11 -(label) @13 -(label) @20 +(label) @15 (label) @21 +(label) @22 (label) @4 (label) @8 (label) @begin @@ -1652,8 +1687,8 @@ SYMBOL TABLE SSA (byte*) SCREEN#2 (byte*) SCREEN#3 (byte*) SCREEN#4 -(byte()) collision((byte) collision::ypos , (byte) collision::xpos) -(byte~) collision::$0 +(byte()) collision((byte) collision::xpos , (byte) collision::ypos , (byte) collision::orientation) +(byte*~) collision::$0 (byte~) collision::$1 (bool~) collision::$10 (bool~) collision::$11 @@ -1663,9 +1698,9 @@ SYMBOL TABLE SSA (bool~) collision::$15 (bool~) collision::$2 (bool~) collision::$3 -(bool~) collision::$4 +(byte/signed word/word/dword/signed dword~) collision::$4 (bool~) collision::$5 -(byte~) collision::$6 +(bool~) collision::$6 (byte~) collision::$7 (bool~) collision::$8 (bool~) collision::$9 @@ -1698,6 +1733,12 @@ SYMBOL TABLE SSA (byte) collision::col#0 (byte) collision::col#1 (byte) collision::col#2 +(byte) collision::col#3 +(byte) collision::col#4 +(byte) collision::col#5 +(byte) collision::col#6 +(byte) collision::col#7 +(byte) collision::col#8 (byte) collision::i (byte) collision::i#0 (byte) collision::i#1 @@ -1722,15 +1763,23 @@ SYMBOL TABLE SSA (byte) collision::l#7 (byte) collision::l#8 (byte) collision::l#9 -(byte) collision::line -(byte) collision::line#0 -(byte) collision::line#1 -(byte) collision::line#2 -(byte) collision::line#3 -(byte) collision::line#4 -(byte) collision::line#5 -(byte) collision::line#6 -(byte) collision::line#7 +(byte) collision::orientation +(byte) collision::orientation#0 +(byte) collision::orientation#1 +(byte) collision::orientation#2 +(byte) collision::orientation#3 +(byte) collision::orientation#4 +(byte*) collision::piece_gfx +(byte*) collision::piece_gfx#0 +(byte*) collision::piece_gfx#1 +(byte*) collision::piece_gfx#2 +(byte*) collision::piece_gfx#3 +(byte*) collision::piece_gfx#4 +(byte*) collision::piece_gfx#5 +(byte*) collision::piece_gfx#6 +(byte*) collision::piece_gfx#7 +(byte*) collision::piece_gfx#8 +(byte*) collision::piece_gfx#9 (byte*) collision::playfield_line (byte*) collision::playfield_line#0 (byte*) collision::playfield_line#1 @@ -1746,6 +1795,8 @@ SYMBOL TABLE SSA (byte) collision::return#10 (byte) collision::return#11 (byte) collision::return#12 +(byte) collision::return#13 +(byte) collision::return#14 (byte) collision::return#2 (byte) collision::return#3 (byte) collision::return#4 @@ -1760,6 +1811,7 @@ SYMBOL TABLE SSA (byte) collision::xpos#10 (byte) collision::xpos#11 (byte) collision::xpos#12 +(byte) collision::xpos#13 (byte) collision::xpos#2 (byte) collision::xpos#3 (byte) collision::xpos#4 @@ -1771,17 +1823,21 @@ SYMBOL TABLE SSA (byte) collision::ypos (byte) collision::ypos#0 (byte) collision::ypos#1 -(byte) collision::ypos#10 -(byte) collision::ypos#11 -(byte) collision::ypos#12 (byte) collision::ypos#2 (byte) collision::ypos#3 (byte) collision::ypos#4 -(byte) collision::ypos#5 -(byte) collision::ypos#6 -(byte) collision::ypos#7 -(byte) collision::ypos#8 -(byte) collision::ypos#9 +(byte) collision::ypos2 +(byte) collision::ypos2#0 +(byte) collision::ypos2#1 +(byte) collision::ypos2#10 +(byte) collision::ypos2#2 +(byte) collision::ypos2#3 +(byte) collision::ypos2#4 +(byte) collision::ypos2#5 +(byte) collision::ypos2#6 +(byte) collision::ypos2#7 +(byte) collision::ypos2#8 +(byte) collision::ypos2#9 (byte) current_movedown_counter (byte) current_movedown_counter#0 (byte) current_movedown_counter#1 @@ -1821,6 +1877,7 @@ SYMBOL TABLE SSA (byte) current_movedown_counter#40 (byte) current_movedown_counter#41 (byte) current_movedown_counter#42 +(byte) current_movedown_counter#43 (byte) current_movedown_counter#5 (byte) current_movedown_counter#6 (byte) current_movedown_counter#7 @@ -1888,6 +1945,12 @@ SYMBOL TABLE SSA (byte*) current_piece#58 (byte*) current_piece#59 (byte*) current_piece#6 +(byte*) current_piece#60 +(byte*) current_piece#61 +(byte*) current_piece#62 +(byte*) current_piece#63 +(byte*) current_piece#64 +(byte*) current_piece#65 (byte*) current_piece#7 (byte*) current_piece#8 (byte*) current_piece#9 @@ -1957,6 +2020,7 @@ SYMBOL TABLE SSA (byte) current_piece_color#65 (byte) current_piece_color#66 (byte) current_piece_color#67 +(byte) current_piece_color#68 (byte) current_piece_color#7 (byte) current_piece_color#8 (byte) current_piece_color#9 @@ -2041,24 +2105,7 @@ SYMBOL TABLE SSA (byte*) current_piece_gfx#79 (byte*) current_piece_gfx#8 (byte*) current_piece_gfx#80 -(byte*) current_piece_gfx#81 -(byte*) current_piece_gfx#82 -(byte*) current_piece_gfx#83 -(byte*) current_piece_gfx#84 -(byte*) current_piece_gfx#85 -(byte*) current_piece_gfx#86 -(byte*) current_piece_gfx#87 -(byte*) current_piece_gfx#88 -(byte*) current_piece_gfx#89 (byte*) current_piece_gfx#9 -(byte*) current_piece_gfx#90 -(byte*) current_piece_gfx#91 -(byte*) current_piece_gfx#92 -(byte*) current_piece_gfx#93 -(byte*) current_piece_gfx#94 -(byte*) current_piece_gfx#95 -(byte*) current_piece_gfx#96 -(byte*) current_piece_gfx#97 (byte) current_piece_orientation (byte) current_piece_orientation#0 (byte) current_piece_orientation#1 @@ -2128,11 +2175,6 @@ SYMBOL TABLE SSA (byte) current_piece_orientation#68 (byte) current_piece_orientation#69 (byte) current_piece_orientation#7 -(byte) current_piece_orientation#70 -(byte) current_piece_orientation#71 -(byte) current_piece_orientation#72 -(byte) current_piece_orientation#73 -(byte) current_piece_orientation#74 (byte) current_piece_orientation#8 (byte) current_piece_orientation#9 (byte) current_xpos @@ -2226,6 +2268,7 @@ SYMBOL TABLE SSA (byte) current_xpos#88 (byte) current_xpos#89 (byte) current_xpos#9 +(byte) current_xpos#90 (byte) current_ypos (byte) current_ypos#0 (byte) current_ypos#1 @@ -2296,9 +2339,6 @@ SYMBOL TABLE SSA (byte) current_ypos#69 (byte) current_ypos#7 (byte) current_ypos#70 -(byte) current_ypos#71 -(byte) current_ypos#72 -(byte) current_ypos#73 (byte) current_ypos#8 (byte) current_ypos#9 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) @@ -2604,6 +2644,7 @@ SYMBOL TABLE SSA (byte) keyboard_events_size#64 (byte) keyboard_events_size#65 (byte) keyboard_events_size#66 +(byte) keyboard_events_size#67 (byte) keyboard_events_size#7 (byte) keyboard_events_size#8 (byte) keyboard_events_size#9 @@ -2669,6 +2710,7 @@ SYMBOL TABLE SSA (byte) keyboard_modifiers#45 (byte) keyboard_modifiers#46 (byte) keyboard_modifiers#47 +(byte) keyboard_modifiers#48 (byte) keyboard_modifiers#5 (byte) keyboard_modifiers#6 (byte) keyboard_modifiers#7 @@ -2724,8 +2766,9 @@ SYMBOL TABLE SSA (byte*) lock_current::playfield_line#2 (byte*) lock_current::playfield_line#3 (void()) main() -(bool~) main::$10 +(byte~) main::$10 (bool~) main::$11 +(bool~) main::$12 (bool~) main::$4 (bool~) main::$5 (byte~) main::$7 @@ -2745,6 +2788,7 @@ SYMBOL TABLE SSA (label) main::@28 (label) main::@29 (label) main::@30 +(label) main::@31 (label) main::@4 (label) main::@5 (label) main::@7 @@ -2754,159 +2798,163 @@ SYMBOL TABLE SSA (byte) main::key_event (byte) main::key_event#0 (byte) main::key_event#1 +(byte) main::key_event#2 (byte) main::render (byte) main::render#0 (byte) main::render#1 (byte) main::render#2 (byte) main::render#3 (byte) main::render#4 +(byte) main::render#5 +(byte) main::render#6 (byte[$4]) piece_t (byte[$4]) piece_t#0 -(byte()) play_movedown((byte) play_movedown::key_event) -(bool~) play_movedown::$0 -(bool~) play_movedown::$1 -(bool~) play_movedown::$10 -(byte/signed word/word/dword/signed dword~) play_movedown::$11 -(byte~) play_movedown::$12 -(bool~) play_movedown::$13 -(byte~) play_movedown::$2 -(bool~) play_movedown::$3 -(bool~) play_movedown::$4 -(bool~) play_movedown::$5 -(bool~) play_movedown::$6 -(bool~) play_movedown::$7 -(bool~) play_movedown::$8 -(bool~) play_movedown::$9 -(label) play_movedown::@1 -(label) play_movedown::@10 -(label) play_movedown::@11 -(label) play_movedown::@12 -(label) play_movedown::@13 -(label) play_movedown::@17 -(label) play_movedown::@18 -(label) play_movedown::@19 -(label) play_movedown::@2 -(label) play_movedown::@20 -(label) play_movedown::@3 -(label) play_movedown::@4 -(label) play_movedown::@5 -(label) play_movedown::@6 -(label) play_movedown::@7 -(label) play_movedown::@8 -(label) play_movedown::@9 -(label) play_movedown::@return -(byte) play_movedown::key_event -(byte) play_movedown::key_event#0 -(byte) play_movedown::key_event#1 -(byte) play_movedown::movedown -(byte) play_movedown::movedown#0 -(byte) play_movedown::movedown#1 -(byte) play_movedown::movedown#10 -(byte) play_movedown::movedown#11 -(byte) play_movedown::movedown#12 -(byte) play_movedown::movedown#2 -(byte) play_movedown::movedown#3 -(byte) play_movedown::movedown#4 -(byte) play_movedown::movedown#5 -(byte) play_movedown::movedown#6 -(byte) play_movedown::movedown#7 -(byte) play_movedown::movedown#8 -(byte) play_movedown::movedown#9 -(byte) play_movedown::return -(byte) play_movedown::return#0 -(byte) play_movedown::return#1 -(byte) play_movedown::return#2 -(byte) play_movedown::return#3 -(byte) play_movedown::return#4 -(byte) play_movedown::return#5 -(byte()) play_moveother((byte) play_moveother::key_event) -(byte~) play_moveother::$0 -(bool~) play_moveother::$1 -(byte*~) play_moveother::$10 -(byte/signed word/word/dword/signed dword~) play_moveother::$11 -(byte/word/dword~) play_moveother::$12 -(byte*~) play_moveother::$13 -(byte/signed word/word/dword/signed dword~) play_moveother::$14 -(byte~) play_moveother::$15 -(bool~) play_moveother::$16 -(bool~) play_moveother::$17 -(byte/signed word/word/dword/signed dword~) play_moveother::$18 -(byte~) play_moveother::$19 -(bool~) play_moveother::$2 -(bool~) play_moveother::$20 -(bool~) play_moveother::$21 -(bool~) play_moveother::$3 -(bool~) play_moveother::$4 -(bool~) play_moveother::$5 -(bool~) play_moveother::$6 -(bool~) play_moveother::$7 -(byte/signed word/word/dword/signed dword~) play_moveother::$8 -(byte/word/dword~) play_moveother::$9 -(label) play_moveother::@1 -(label) play_moveother::@10 -(label) play_moveother::@11 -(label) play_moveother::@12 -(label) play_moveother::@13 -(label) play_moveother::@14 -(label) play_moveother::@15 -(label) play_moveother::@18 -(label) play_moveother::@2 -(label) play_moveother::@20 -(label) play_moveother::@22 -(label) play_moveother::@23 -(label) play_moveother::@3 -(label) play_moveother::@4 -(label) play_moveother::@5 -(label) play_moveother::@8 -(label) play_moveother::@return -(byte) play_moveother::key_event -(byte) play_moveother::key_event#0 -(byte) play_moveother::key_event#1 -(byte) play_moveother::key_event#2 -(byte) play_moveother::key_event#3 -(byte) play_moveother::key_event#4 -(byte) play_moveother::key_event#5 -(byte) play_moveother::render -(byte) play_moveother::render#0 -(byte) play_moveother::render#1 -(byte) play_moveother::render#10 -(byte) play_moveother::render#11 -(byte) play_moveother::render#12 -(byte) play_moveother::render#13 -(byte) play_moveother::render#14 -(byte) play_moveother::render#15 -(byte) play_moveother::render#16 -(byte) play_moveother::render#17 -(byte) play_moveother::render#18 -(byte) play_moveother::render#19 -(byte) play_moveother::render#2 -(byte) play_moveother::render#20 -(byte) play_moveother::render#3 -(byte) play_moveother::render#4 -(byte) play_moveother::render#5 -(byte) play_moveother::render#6 -(byte) play_moveother::render#7 -(byte) play_moveother::render#8 -(byte) play_moveother::render#9 -(byte) play_moveother::return -(byte) play_moveother::return#0 -(byte) play_moveother::return#1 -(byte) play_moveother::return#2 -(byte) play_moveother::return#3 -(byte) play_moveother::return#4 +(byte()) play_move_down((byte) play_move_down::key_event) +(bool~) play_move_down::$0 +(bool~) play_move_down::$1 +(bool~) play_move_down::$10 +(byte/signed word/word/dword/signed dword~) play_move_down::$11 +(byte~) play_move_down::$12 +(bool~) play_move_down::$13 +(byte~) play_move_down::$2 +(bool~) play_move_down::$3 +(bool~) play_move_down::$4 +(bool~) play_move_down::$5 +(bool~) play_move_down::$6 +(bool~) play_move_down::$7 +(bool~) play_move_down::$8 +(bool~) play_move_down::$9 +(label) play_move_down::@1 +(label) play_move_down::@10 +(label) play_move_down::@11 +(label) play_move_down::@12 +(label) play_move_down::@13 +(label) play_move_down::@17 +(label) play_move_down::@18 +(label) play_move_down::@19 +(label) play_move_down::@2 +(label) play_move_down::@20 +(label) play_move_down::@3 +(label) play_move_down::@4 +(label) play_move_down::@5 +(label) play_move_down::@6 +(label) play_move_down::@7 +(label) play_move_down::@8 +(label) play_move_down::@9 +(label) play_move_down::@return +(byte) play_move_down::key_event +(byte) play_move_down::key_event#0 +(byte) play_move_down::key_event#1 +(byte) play_move_down::movedown +(byte) play_move_down::movedown#0 +(byte) play_move_down::movedown#1 +(byte) play_move_down::movedown#10 +(byte) play_move_down::movedown#11 +(byte) play_move_down::movedown#12 +(byte) play_move_down::movedown#2 +(byte) play_move_down::movedown#3 +(byte) play_move_down::movedown#4 +(byte) play_move_down::movedown#5 +(byte) play_move_down::movedown#6 +(byte) play_move_down::movedown#7 +(byte) play_move_down::movedown#8 +(byte) play_move_down::movedown#9 +(byte) play_move_down::return +(byte) play_move_down::return#0 +(byte) play_move_down::return#1 +(byte) play_move_down::return#2 +(byte) play_move_down::return#3 +(byte) play_move_down::return#4 +(byte) play_move_down::return#5 +(byte()) play_move_leftright((byte) play_move_leftright::key_event) +(bool~) play_move_leftright::$0 +(bool~) play_move_leftright::$1 +(bool~) play_move_leftright::$10 +(bool~) play_move_leftright::$2 +(byte/signed word/word/dword/signed dword~) play_move_leftright::$3 +(byte~) play_move_leftright::$4 +(bool~) play_move_leftright::$5 +(bool~) play_move_leftright::$6 +(byte/signed word/word/dword/signed dword~) play_move_leftright::$7 +(byte~) play_move_leftright::$8 +(bool~) play_move_leftright::$9 +(label) play_move_leftright::@1 +(label) play_move_leftright::@11 +(label) play_move_leftright::@14 +(label) play_move_leftright::@15 +(label) play_move_leftright::@2 +(label) play_move_leftright::@3 +(label) play_move_leftright::@4 +(label) play_move_leftright::@5 +(label) play_move_leftright::@6 +(label) play_move_leftright::@7 +(label) play_move_leftright::@8 +(label) play_move_leftright::@return +(byte) play_move_leftright::key_event +(byte) play_move_leftright::key_event#0 +(byte) play_move_leftright::key_event#1 +(byte) play_move_leftright::key_event#2 +(byte) play_move_leftright::return +(byte) play_move_leftright::return#0 +(byte) play_move_leftright::return#1 +(byte) play_move_leftright::return#2 +(byte) play_move_leftright::return#3 +(byte) play_move_leftright::return#4 +(byte) play_move_leftright::return#5 +(byte) play_move_leftright::return#6 +(byte()) play_move_rotate((byte) play_move_rotate::key_event) +(bool~) play_move_rotate::$0 +(bool~) play_move_rotate::$1 +(bool~) play_move_rotate::$10 +(byte*~) play_move_rotate::$11 +(byte/signed word/word/dword/signed dword~) play_move_rotate::$2 +(byte/word/dword~) play_move_rotate::$3 +(byte/signed word/word/dword/signed dword~) play_move_rotate::$4 +(byte/word/dword~) play_move_rotate::$5 +(byte~) play_move_rotate::$6 +(byte~) play_move_rotate::$7 +(byte~) play_move_rotate::$8 +(bool~) play_move_rotate::$9 +(label) play_move_rotate::@1 +(label) play_move_rotate::@11 +(label) play_move_rotate::@14 +(label) play_move_rotate::@2 +(label) play_move_rotate::@4 +(label) play_move_rotate::@5 +(label) play_move_rotate::@6 +(label) play_move_rotate::@7 +(label) play_move_rotate::@return +(byte) play_move_rotate::key_event +(byte) play_move_rotate::key_event#0 +(byte) play_move_rotate::key_event#1 +(byte) play_move_rotate::key_event#2 +(byte) play_move_rotate::orientation +(byte) play_move_rotate::orientation#0 +(byte) play_move_rotate::orientation#1 +(byte) play_move_rotate::orientation#2 +(byte) play_move_rotate::orientation#3 +(byte) play_move_rotate::orientation#4 +(byte) play_move_rotate::orientation#5 +(byte) play_move_rotate::return +(byte) play_move_rotate::return#0 +(byte) play_move_rotate::return#1 +(byte) play_move_rotate::return#2 +(byte) play_move_rotate::return#3 +(byte) play_move_rotate::return#4 +(byte) play_move_rotate::return#5 +(byte) play_move_rotate::return#6 (byte[$1]) playfield (byte[$1]) playfield#0 (byte*[PLAYFIELD_LINES#0]) playfield_lines (byte*[PLAYFIELD_LINES#0]) playfield_lines#0 (void()) render_current() (byte~) render_current::$0 -(bool~) render_current::$1 -(bool~) render_current::$10 +(byte/signed word/word/dword/signed dword~) render_current::$1 (bool~) render_current::$2 -(byte~) render_current::$3 +(bool~) render_current::$3 (bool~) render_current::$4 (bool~) render_current::$5 -(byte~) render_current::$6 +(bool~) render_current::$6 (bool~) render_current::$7 (bool~) render_current::$8 (bool~) render_current::$9 @@ -2951,9 +2999,6 @@ SYMBOL TABLE SSA (byte) render_current::l#7 (byte) render_current::l#8 (byte) render_current::l#9 -(byte) render_current::line -(byte) render_current::line#0 -(byte) render_current::line#1 (byte*) render_current::screen_line (byte*) render_current::screen_line#0 (byte*) render_current::screen_line#1 @@ -2964,13 +3009,28 @@ SYMBOL TABLE SSA (byte) render_current::xpos (byte) render_current::xpos#0 (byte) render_current::xpos#1 +(byte) render_current::xpos#2 +(byte) render_current::xpos#3 +(byte) render_current::xpos#4 +(byte) render_current::xpos#5 +(byte) render_current::xpos#6 +(byte) render_current::ypos2 +(byte) render_current::ypos2#0 +(byte) render_current::ypos2#1 +(byte) render_current::ypos2#2 +(byte) render_current::ypos2#3 +(byte) render_current::ypos2#4 +(byte) render_current::ypos2#5 +(byte) render_current::ypos2#6 +(byte) render_current::ypos2#7 +(byte) render_current::ypos2#8 +(byte) render_current::ypos2#9 (void()) render_playfield() (byte/signed word/word/dword/signed dword~) render_playfield::$0 (byte~) render_playfield::$1 (byte/signed word/word/dword/signed dword~) render_playfield::$2 -(byte*~) render_playfield::$3 +(bool~) render_playfield::$3 (bool~) render_playfield::$4 -(bool~) render_playfield::$5 (label) render_playfield::@1 (label) render_playfield::@2 (label) render_playfield::@3 @@ -2994,6 +3054,7 @@ SYMBOL TABLE SSA (byte*) render_playfield::line (byte*) render_playfield::line#0 (byte*) render_playfield::line#1 +(byte*) render_playfield::line#2 (byte*[$2]) screen_lines (byte*[$2]) screen_lines#0 (void()) spawn_current() @@ -3006,25 +3067,25 @@ Inversing boolean not (bool~) keyboard_event_scan::$16 ← (byte~) keyboard_even Inversing boolean not (bool~) keyboard_event_scan::$20 ← (byte~) keyboard_event_scan::$18 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) keyboard_event_scan::$19 ← (byte~) keyboard_event_scan::$18 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) keyboard_event_scan::$24 ← (byte~) keyboard_event_scan::$22 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) keyboard_event_scan::$23 ← (byte~) keyboard_event_scan::$22 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) keyboard_event_scan::$28 ← (byte~) keyboard_event_scan::$26 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) keyboard_event_scan::$27 ← (byte~) keyboard_event_scan::$26 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) main::$11 ← (byte) main::render#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$10 ← (byte) main::render#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) play_movedown::$1 ← (byte) play_movedown::key_event#1 != (byte) KEY_SPACE#0 from (bool~) play_movedown::$0 ← (byte) play_movedown::key_event#1 == (byte) KEY_SPACE#0 -Inversing boolean not (bool~) play_movedown::$4 ← (byte~) play_movedown::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_movedown::$3 ← (byte~) play_movedown::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) play_movedown::$8 ← (byte) current_movedown_counter#10 < (byte) current_movedown_rate#0 from (bool~) play_movedown::$7 ← (byte) current_movedown_counter#10 >= (byte) current_movedown_rate#0 -Inversing boolean not (bool~) play_movedown::$6 ← (byte) current_movedown_counter#11 < (byte) current_movedown_rate_fast#0 from (bool~) play_movedown::$5 ← (byte) current_movedown_counter#11 >= (byte) current_movedown_rate_fast#0 -Inversing boolean not (bool~) play_movedown::$10 ← (byte) play_movedown::movedown#6 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_movedown::$9 ← (byte) play_movedown::movedown#6 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) collision::$3 ← *((byte*) current_piece_gfx#19 + (byte) collision::i#2) == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) collision::$2 ← *((byte*) current_piece_gfx#19 + (byte) collision::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) collision::$5 ← (byte) collision::line#1 < (byte) PLAYFIELD_LINES#0 from (bool~) collision::$4 ← (byte) collision::line#1 >= (byte) PLAYFIELD_LINES#0 +Inversing boolean not (bool~) main::$12 ← (byte) main::render#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$11 ← (byte) main::render#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) play_move_down::$1 ← (byte) play_move_down::key_event#1 != (byte) KEY_SPACE#0 from (bool~) play_move_down::$0 ← (byte) play_move_down::key_event#1 == (byte) KEY_SPACE#0 +Inversing boolean not (bool~) play_move_down::$4 ← (byte~) play_move_down::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_move_down::$3 ← (byte~) play_move_down::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) play_move_down::$8 ← (byte) current_movedown_counter#10 < (byte) current_movedown_rate#0 from (bool~) play_move_down::$7 ← (byte) current_movedown_counter#10 >= (byte) current_movedown_rate#0 +Inversing boolean not (bool~) play_move_down::$6 ← (byte) current_movedown_counter#11 < (byte) current_movedown_rate_fast#0 from (bool~) play_move_down::$5 ← (byte) current_movedown_counter#11 >= (byte) current_movedown_rate_fast#0 +Inversing boolean not (bool~) play_move_down::$10 ← (byte) play_move_down::movedown#6 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_move_down::$9 ← (byte) play_move_down::movedown#6 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) play_move_leftright::$10 ← (byte~) play_move_leftright::$8 != (byte) COLLISION_NONE#0 from (bool~) play_move_leftright::$9 ← (byte~) play_move_leftright::$8 == (byte) COLLISION_NONE#0 +Inversing boolean not (bool~) play_move_leftright::$2 ← (byte) play_move_leftright::key_event#2 != (byte) KEY_DOT#0 from (bool~) play_move_leftright::$1 ← (byte) play_move_leftright::key_event#2 == (byte) KEY_DOT#0 +Inversing boolean not (bool~) play_move_leftright::$6 ← (byte~) play_move_leftright::$4 != (byte) COLLISION_NONE#0 from (bool~) play_move_leftright::$5 ← (byte~) play_move_leftright::$4 == (byte) COLLISION_NONE#0 +Inversing boolean not (bool~) play_move_rotate::$10 ← (byte~) play_move_rotate::$8 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_move_rotate::$9 ← (byte~) play_move_rotate::$8 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) collision::$3 ← *((byte*) collision::piece_gfx#1 + (byte) collision::i#2) == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) collision::$2 ← *((byte*) collision::piece_gfx#1 + (byte) collision::i#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) collision::$6 ← (byte) collision::ypos2#3 < (byte/signed word/word/dword/signed dword~) collision::$4 from (bool~) collision::$5 ← (byte) collision::ypos2#3 >= (byte/signed word/word/dword/signed dword~) collision::$4 Inversing boolean not (bool~) collision::$9 ← (byte~) collision::$7 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) collision::$8 ← (byte~) collision::$7 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) collision::$11 ← (byte) collision::col#1 < (byte) PLAYFIELD_COLS#0 from (bool~) collision::$10 ← (byte) collision::col#1 >= (byte) PLAYFIELD_COLS#0 -Inversing boolean not (bool~) collision::$13 ← *((byte*) collision::playfield_line#1 + (byte) collision::col#2) == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) collision::$12 ← *((byte*) collision::playfield_line#1 + (byte) collision::col#2) != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (bool~) collision::$11 ← (byte) collision::col#4 < (byte) PLAYFIELD_COLS#0 from (bool~) collision::$10 ← (byte) collision::col#4 >= (byte) PLAYFIELD_COLS#0 +Inversing boolean not (bool~) collision::$13 ← *((byte*) collision::playfield_line#1 + (byte) collision::col#5) == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) collision::$12 ← *((byte*) collision::playfield_line#1 + (byte) collision::col#5) != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) lock_current::$3 ← (byte) lock_current::cell#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) lock_current::$2 ← (byte) lock_current::cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) play_moveother::$2 ← (byte~) play_moveother::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) play_moveother::$1 ← (byte~) play_moveother::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) play_moveother::$21 ← (byte~) play_moveother::$19 != (byte) COLLISION_NONE#0 from (bool~) play_moveother::$20 ← (byte~) play_moveother::$19 == (byte) COLLISION_NONE#0 -Inversing boolean not (bool~) play_moveother::$17 ← (byte~) play_moveother::$15 != (byte) COLLISION_NONE#0 from (bool~) play_moveother::$16 ← (byte~) play_moveother::$15 == (byte) COLLISION_NONE#0 -Inversing boolean not (bool~) play_moveother::$7 ← (byte) play_moveother::key_event#5 != (byte) KEY_X#0 from (bool~) play_moveother::$6 ← (byte) play_moveother::key_event#5 == (byte) KEY_X#0 -Inversing boolean not (bool~) render_current::$2 ← (byte) render_current::line#0 >= (byte) PLAYFIELD_LINES#0 from (bool~) render_current::$1 ← (byte) render_current::line#0 < (byte) PLAYFIELD_LINES#0 +Inversing boolean not (bool~) render_current::$3 ← (byte) render_current::ypos2#2 >= (byte/signed word/word/dword/signed dword~) render_current::$1 from (bool~) render_current::$2 ← (byte) render_current::ypos2#2 < (byte/signed word/word/dword/signed dword~) render_current::$1 Inversing boolean not (bool~) render_current::$5 ← (byte) render_current::current_cell#0 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) render_current::$4 ← (byte) render_current::current_cell#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (bool~) render_current::$8 ← (byte) render_current::xpos#0 >= (byte) PLAYFIELD_COLS#0 from (bool~) render_current::$7 ← (byte) render_current::xpos#0 < (byte) PLAYFIELD_COLS#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 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) fill::end#0 = (byte*~) fill::$0 Alias (byte*) fill::addr#0 = (byte*) fill::start#2 @@ -3032,7 +3093,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#58 +Alias (byte) keyboard_events_size#29 = (byte) keyboard_events_size#36 (byte) keyboard_events_size#45 (byte) keyboard_events_size#59 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 @@ -3044,13 +3105,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#59 -Alias (byte) keyboard_events_size#54 = (byte) keyboard_events_size#66 (byte) keyboard_events_size#65 (byte) keyboard_events_size#64 +Alias (byte) keyboard_events_size#30 = (byte) keyboard_events_size#60 +Alias (byte) keyboard_events_size#54 = (byte) keyboard_events_size#67 (byte) keyboard_events_size#66 (byte) keyboard_events_size#65 Alias (byte) keyboard_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#60 = (byte) keyboard_events_size#61 (byte) keyboard_events_size#63 +Alias (byte) keyboard_events_size#61 = (byte) keyboard_events_size#62 (byte) keyboard_events_size#64 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 @@ -3069,208 +3130,220 @@ Alias (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#4 Alias (byte) keyboard_events_size#16 = (byte) keyboard_events_size#5 Alias (byte) keyboard_events_size#0 = (byte) keyboard_events_size#44 (byte) keyboard_events_size#35 (byte) keyboard_events_size#28 Alias (byte) keyboard_modifiers#0 = (byte) keyboard_modifiers#38 (byte) keyboard_modifiers#32 (byte) keyboard_modifiers#25 -Alias (byte*) current_piece#18 = (byte*) current_piece#27 -Alias (byte) current_piece_orientation#24 = (byte) current_piece_orientation#34 -Alias (byte*) current_piece_gfx#25 = (byte*) current_piece_gfx#39 +Alias (byte*) current_piece#18 = (byte*) current_piece#30 +Alias (byte) current_piece_orientation#26 = (byte) current_piece_orientation#41 +Alias (byte*) current_piece_gfx#23 = (byte*) current_piece_gfx#37 Alias (byte) current_piece_color#18 = (byte) current_piece_color#27 -Alias (byte) current_xpos#29 = (byte) current_xpos#44 -Alias (byte) current_ypos#23 = (byte) current_ypos#38 -Alias (byte) keyboard_events_size#33 = (byte) keyboard_events_size#56 (byte) keyboard_events_size#62 (byte) keyboard_events_size#48 (byte) keyboard_events_size#39 +Alias (byte) current_xpos#30 = (byte) current_xpos#47 +Alias (byte) current_ypos#24 = (byte) current_ypos#41 +Alias (byte) keyboard_events_size#33 = (byte) keyboard_events_size#56 (byte) keyboard_events_size#63 (byte) keyboard_events_size#48 (byte) keyboard_events_size#39 Alias (byte) keyboard_modifiers#30 = (byte) keyboard_modifiers#44 (byte) keyboard_modifiers#47 (byte) keyboard_modifiers#39 (byte) keyboard_modifiers#33 -Alias (byte) current_movedown_counter#22 = (byte) current_movedown_counter#36 (byte) current_movedown_counter#40 (byte) current_movedown_counter#33 (byte) current_movedown_counter#27 -Alias (byte*) current_piece#1 = (byte*) current_piece#9 (byte*) current_piece#36 (byte*) current_piece#29 -Alias (byte) current_piece_orientation#1 = (byte) current_piece_orientation#13 (byte) current_piece_orientation#49 (byte) current_piece_orientation#36 -Alias (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#13 (byte*) current_piece_gfx#62 (byte*) current_piece_gfx#41 +Alias (byte) current_movedown_counter#22 = (byte) current_movedown_counter#37 (byte) current_movedown_counter#41 (byte) current_movedown_counter#33 (byte) current_movedown_counter#27 +Alias (byte*) current_piece#1 = (byte*) current_piece#9 (byte*) current_piece#42 (byte*) current_piece#32 +Alias (byte) current_piece_orientation#1 = (byte) current_piece_orientation#12 (byte) current_piece_orientation#51 (byte) current_piece_orientation#43 +Alias (byte*) current_piece_gfx#1 = (byte*) current_piece_gfx#12 (byte*) current_piece_gfx#53 (byte*) current_piece_gfx#39 Alias (byte) current_piece_color#1 = (byte) current_piece_color#9 (byte) current_piece_color#38 (byte) current_piece_color#29 -Alias (byte) current_xpos#1 = (byte) current_xpos#13 (byte) current_xpos#63 (byte) current_xpos#46 -Alias (byte) current_ypos#1 = (byte) current_ypos#10 (byte) current_ypos#47 (byte) current_ypos#40 +Alias (byte) current_xpos#1 = (byte) current_xpos#13 (byte) current_xpos#65 (byte) current_xpos#49 +Alias (byte) current_ypos#1 = (byte) current_ypos#10 (byte) current_ypos#38 (byte) current_ypos#43 Alias (byte) keyboard_events_size#19 = (byte) keyboard_events_size#49 (byte) keyboard_events_size#27 (byte) keyboard_events_size#8 Alias (byte) keyboard_modifiers#16 = (byte) keyboard_modifiers#40 (byte) keyboard_modifiers#24 (byte) keyboard_modifiers#8 -Alias (byte) current_movedown_counter#15 = (byte) current_movedown_counter#41 (byte) current_movedown_counter#8 (byte) current_movedown_counter#2 -Alias (byte) current_ypos#12 = (byte) current_ypos#72 (byte) current_ypos#25 (byte) current_ypos#3 -Alias (byte*) current_piece#11 = (byte*) current_piece#56 (byte*) current_piece#20 (byte*) current_piece#3 -Alias (byte) current_piece_orientation#16 = (byte) current_piece_orientation#71 (byte) current_piece_orientation#26 (byte) current_piece_orientation#4 -Alias (byte*) current_piece_gfx#16 = (byte*) current_piece_gfx#93 (byte*) current_piece_gfx#27 (byte*) current_piece_gfx#4 -Alias (byte) current_piece_color#11 = (byte) current_piece_color#64 (byte) current_piece_color#20 (byte) current_piece_color#3 -Alias (byte) current_xpos#16 = (byte) current_xpos#88 (byte) current_xpos#31 (byte) current_xpos#4 +Alias (byte) current_movedown_counter#15 = (byte) current_movedown_counter#42 (byte) current_movedown_counter#8 (byte) current_movedown_counter#2 +Alias (byte) current_ypos#12 = (byte) current_ypos#69 (byte) current_ypos#26 (byte) current_ypos#3 +Alias (byte*) current_piece#11 = (byte*) current_piece#62 (byte*) current_piece#20 (byte*) current_piece#3 +Alias (byte) current_piece_orientation#15 = (byte) current_piece_orientation#68 (byte) current_piece_orientation#29 (byte) current_piece_orientation#4 +Alias (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#77 (byte*) current_piece_gfx#26 (byte*) current_piece_gfx#4 +Alias (byte) current_piece_color#11 = (byte) current_piece_color#65 (byte) current_piece_color#20 (byte) current_piece_color#3 +Alias (byte) current_xpos#16 = (byte) current_xpos#89 (byte) current_xpos#32 (byte) current_xpos#4 Alias (byte) keyboard_events_size#40 = (byte) keyboard_events_size#50 Alias (byte) keyboard_modifiers#34 = (byte) keyboard_modifiers#41 -Alias (byte) current_movedown_counter#37 = (byte) current_movedown_counter#42 -Alias (byte) current_ypos#68 = (byte) current_ypos#73 -Alias (byte*) current_piece#51 = (byte*) current_piece#57 -Alias (byte) current_piece_orientation#66 = (byte) current_piece_orientation#72 -Alias (byte*) current_piece_gfx#87 = (byte*) current_piece_gfx#94 -Alias (byte) current_piece_color#57 = (byte) current_piece_color#65 -Alias (byte) current_xpos#83 = (byte) current_xpos#89 +Alias (byte) current_movedown_counter#38 = (byte) current_movedown_counter#43 +Alias (byte) current_ypos#65 = (byte) current_ypos#70 +Alias (byte*) current_piece#57 = (byte*) current_piece#63 +Alias (byte) current_piece_orientation#63 = (byte) current_piece_orientation#69 +Alias (byte*) current_piece_gfx#72 = (byte*) current_piece_gfx#78 +Alias (byte) current_piece_color#58 = (byte) current_piece_color#66 +Alias (byte) current_xpos#84 = (byte) current_xpos#90 Alias (byte) 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#38 (byte) current_movedown_counter#34 (byte) current_movedown_counter#28 (byte) current_movedown_counter#23 -Alias (byte) current_ypos#24 = (byte) current_ypos#69 (byte) current_ypos#63 (byte) current_ypos#51 (byte) current_ypos#41 -Alias (byte*) current_piece#19 = (byte*) current_piece#52 (byte*) current_piece#44 (byte*) current_piece#37 (byte*) current_piece#30 -Alias (byte) current_piece_orientation#25 = (byte) current_piece_orientation#67 (byte) current_piece_orientation#58 (byte) current_piece_orientation#50 (byte) current_piece_orientation#37 -Alias (byte*) current_piece_gfx#26 = (byte*) current_piece_gfx#88 (byte*) current_piece_gfx#78 (byte*) current_piece_gfx#63 (byte*) current_piece_gfx#42 -Alias (byte) current_piece_color#19 = (byte) current_piece_color#58 (byte) current_piece_color#49 (byte) current_piece_color#39 (byte) current_piece_color#30 -Alias (byte) current_xpos#30 = (byte) current_xpos#84 (byte) current_xpos#77 (byte) current_xpos#64 (byte) current_xpos#47 +Alias (byte) current_movedown_counter#14 = (byte) current_movedown_counter#39 (byte) current_movedown_counter#34 (byte) current_movedown_counter#28 (byte) current_movedown_counter#23 +Alias (byte) current_ypos#25 = (byte) current_ypos#66 (byte) current_ypos#62 (byte) current_ypos#53 (byte) current_ypos#44 +Alias (byte*) current_piece#19 = (byte*) current_piece#58 (byte*) current_piece#51 (byte*) current_piece#43 (byte*) current_piece#33 +Alias (byte) current_piece_orientation#27 = (byte) current_piece_orientation#64 (byte) current_piece_orientation#59 (byte) current_piece_orientation#52 (byte) current_piece_orientation#44 +Alias (byte*) current_piece_gfx#24 = (byte*) current_piece_gfx#73 (byte*) current_piece_gfx#64 (byte*) current_piece_gfx#54 (byte*) current_piece_gfx#40 +Alias (byte) current_piece_color#19 = (byte) current_piece_color#59 (byte) current_piece_color#49 (byte) current_piece_color#39 (byte) current_piece_color#30 +Alias (byte) current_xpos#31 = (byte) current_xpos#85 (byte) current_xpos#77 (byte) current_xpos#66 (byte) current_xpos#50 Alias (byte) keyboard_events_size#17 = (byte) keyboard_events_size#6 -Alias (byte) keyboard_modifiers#15 = (byte) keyboard_modifiers#7 (byte) keyboard_modifiers#45 (byte) keyboard_modifiers#42 (byte) keyboard_modifiers#36 (byte) keyboard_modifiers#46 (byte) keyboard_modifiers#43 (byte) keyboard_modifiers#37 +Alias (byte) keyboard_modifiers#15 = (byte) keyboard_modifiers#7 (byte) keyboard_modifiers#48 (byte) keyboard_modifiers#45 (byte) keyboard_modifiers#42 (byte) keyboard_modifiers#36 (byte) keyboard_modifiers#46 (byte) keyboard_modifiers#43 (byte) keyboard_modifiers#37 Alias (byte) keyboard_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#51 (byte) keyboard_events_size#42 (byte) keyboard_events_size#57 (byte) keyboard_events_size#52 (byte) keyboard_events_size#43 -Alias (byte) main::key_event#0 = (byte~) main::$7 (byte) main::key_event#1 -Alias (byte) play_movedown::return#0 = (byte) play_movedown::return#4 -Alias (byte) main::render#0 = (byte) main::render#3 -Alias (byte) current_movedown_counter#1 = (byte) current_movedown_counter#7 (byte) current_movedown_counter#29 (byte) current_movedown_counter#39 (byte) current_movedown_counter#35 (byte) current_movedown_counter#30 -Alias (byte) current_ypos#11 = (byte) current_ypos#2 (byte) current_ypos#52 (byte) current_ypos#54 (byte) current_ypos#48 (byte) current_ypos#53 -Alias (byte*) current_piece#10 = (byte*) current_piece#2 (byte*) current_piece#38 (byte*) current_piece#53 (byte*) current_piece#45 (byte*) current_piece#39 -Alias (byte) current_piece_orientation#14 = (byte) current_piece_orientation#2 -Alias (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#2 -Alias (byte) current_piece_color#10 = (byte) current_piece_color#2 (byte) current_piece_color#40 (byte) current_piece_color#59 (byte) current_piece_color#50 (byte) current_piece_color#41 +Alias (byte) keyboard_events_size#18 = (byte) keyboard_events_size#7 (byte) keyboard_events_size#57 (byte) keyboard_events_size#51 (byte) keyboard_events_size#42 (byte) keyboard_events_size#58 (byte) keyboard_events_size#52 (byte) keyboard_events_size#43 +Alias (byte) main::key_event#0 = (byte~) main::$7 (byte) main::key_event#1 (byte) main::key_event#2 +Alias (byte) play_move_down::return#0 = (byte) play_move_down::return#4 +Alias (byte) main::render#0 = (byte) main::render#4 +Alias (byte) current_movedown_counter#1 = (byte) current_movedown_counter#7 (byte) current_movedown_counter#35 (byte) current_movedown_counter#29 (byte) current_movedown_counter#40 (byte) current_movedown_counter#36 (byte) current_movedown_counter#30 +Alias (byte) current_ypos#11 = (byte) current_ypos#2 (byte) current_ypos#59 (byte) current_ypos#54 (byte) current_ypos#45 (byte) current_ypos#39 (byte) current_ypos#55 +Alias (byte*) current_piece#10 = (byte*) current_piece#2 (byte*) current_piece#52 (byte*) current_piece#44 (byte*) current_piece#59 (byte*) current_piece#53 (byte*) current_piece#45 +Alias (byte) current_piece_orientation#13 = (byte) current_piece_orientation#2 (byte) current_piece_orientation#28 +Alias (byte*) current_piece_gfx#13 = (byte*) current_piece_gfx#2 (byte*) current_piece_gfx#25 +Alias (byte) current_piece_color#10 = (byte) current_piece_color#2 (byte) current_piece_color#50 (byte) current_piece_color#40 (byte) current_piece_color#60 (byte) current_piece_color#51 (byte) current_piece_color#41 Alias (byte) current_xpos#14 = (byte) current_xpos#2 -Alias (byte) play_moveother::return#0 = (byte) play_moveother::return#3 -Alias (byte) main::render#1 = (byte) main::render#4 -Alias (byte) current_piece_orientation#15 = (byte) current_piece_orientation#3 (byte) current_piece_orientation#68 (byte) current_piece_orientation#59 (byte) current_piece_orientation#51 -Alias (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#3 (byte*) current_piece_gfx#89 (byte*) current_piece_gfx#79 (byte*) current_piece_gfx#64 -Alias (byte) current_xpos#15 = (byte) current_xpos#3 (byte) current_xpos#85 (byte) current_xpos#78 (byte) current_xpos#65 +Alias (byte) play_move_leftright::return#0 = (byte) play_move_leftright::return#5 +Alias (byte) main::render#1 = (byte) main::render#5 +Alias (byte) current_xpos#15 = (byte) current_xpos#3 (byte) current_xpos#67 (byte) current_xpos#78 (byte) current_xpos#75 (byte) current_xpos#68 +Alias (byte) play_move_rotate::return#0 = (byte) play_move_rotate::return#5 +Alias (byte) main::render#2 = (byte) main::render#6 +Alias (byte) current_piece_orientation#14 = (byte) current_piece_orientation#3 (byte) current_piece_orientation#65 (byte) current_piece_orientation#60 (byte) current_piece_orientation#53 +Alias (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#3 (byte*) current_piece_gfx#74 (byte*) current_piece_gfx#65 (byte*) current_piece_gfx#55 Alias (byte) 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_movedown::movedown#10 = (byte) play_movedown::movedown#12 (byte) play_movedown::movedown#8 (byte) play_movedown::movedown#11 (byte) play_movedown::movedown#5 -Alias (byte) current_ypos#55 = (byte) current_ypos#56 (byte) current_ypos#64 (byte) current_ypos#65 (byte) current_ypos#57 -Alias (byte) current_xpos#66 = (byte) current_xpos#67 (byte) current_xpos#79 (byte) current_xpos#80 (byte) current_xpos#68 -Alias (byte*) current_piece#46 = (byte*) current_piece#47 (byte*) current_piece#54 (byte*) current_piece#55 (byte*) current_piece#48 -Alias (byte) current_piece_orientation#60 = (byte) current_piece_orientation#61 (byte) current_piece_orientation#69 (byte) current_piece_orientation#70 (byte) current_piece_orientation#62 -Alias (byte*) current_piece_gfx#80 = (byte*) current_piece_gfx#81 (byte*) current_piece_gfx#90 (byte*) current_piece_gfx#91 (byte*) current_piece_gfx#82 -Alias (byte) current_piece_color#51 = (byte) current_piece_color#52 (byte) current_piece_color#60 (byte) current_piece_color#61 (byte) current_piece_color#53 -Alias (byte) play_movedown::movedown#0 = (byte) play_movedown::movedown#4 +Alias (byte) play_move_down::movedown#10 = (byte) play_move_down::movedown#12 (byte) play_move_down::movedown#8 (byte) play_move_down::movedown#11 (byte) play_move_down::movedown#5 +Alias (byte) current_ypos#56 = (byte) current_ypos#57 (byte) current_ypos#63 (byte) current_ypos#64 (byte) current_ypos#58 +Alias (byte) current_xpos#69 = (byte) current_xpos#70 (byte) current_xpos#79 (byte) current_xpos#80 (byte) current_xpos#71 +Alias (byte) current_piece_orientation#54 = (byte) current_piece_orientation#55 (byte) current_piece_orientation#61 (byte) current_piece_orientation#62 (byte) current_piece_orientation#56 +Alias (byte*) current_piece#54 = (byte*) current_piece#55 (byte*) current_piece#60 (byte*) current_piece#61 (byte*) current_piece#56 +Alias (byte*) current_piece_gfx#66 = (byte*) current_piece_gfx#67 (byte*) current_piece_gfx#75 (byte*) current_piece_gfx#76 (byte*) current_piece_gfx#68 +Alias (byte) current_piece_color#52 = (byte) current_piece_color#53 (byte) current_piece_color#61 (byte) current_piece_color#62 (byte) current_piece_color#54 +Alias (byte) 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#70 = (byte) current_ypos#71 +Alias (byte) current_ypos#67 = (byte) current_ypos#68 Alias (byte) current_xpos#86 = (byte) current_xpos#87 -Alias (byte*) current_piece#58 = (byte*) current_piece#59 -Alias (byte) current_piece_orientation#73 = (byte) current_piece_orientation#74 -Alias (byte*) current_piece_gfx#95 = (byte*) current_piece_gfx#96 -Alias (byte) current_piece_color#66 = (byte) current_piece_color#67 -Alias (byte) play_movedown::movedown#7 = (byte) play_movedown::movedown#9 -Alias (byte) current_ypos#42 = (byte) current_ypos#43 -Alias (byte) current_xpos#48 = (byte) current_xpos#49 +Alias (byte) current_piece_orientation#66 = (byte) current_piece_orientation#67 +Alias (byte*) current_piece#64 = (byte*) current_piece#65 +Alias (byte*) current_piece_gfx#79 = (byte*) current_piece_gfx#80 +Alias (byte) current_piece_color#67 = (byte) current_piece_color#68 +Alias (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#9 +Alias (byte) current_ypos#46 = (byte) current_ypos#47 +Alias (byte) current_xpos#51 = (byte) current_xpos#52 +Alias (byte) current_piece_orientation#45 = (byte) current_piece_orientation#46 Alias (byte) current_movedown_counter#10 = (byte) current_movedown_counter#32 -Alias (byte*) current_piece#40 = (byte*) current_piece#41 -Alias (byte) current_piece_orientation#52 = (byte) current_piece_orientation#53 -Alias (byte*) current_piece_gfx#65 = (byte*) current_piece_gfx#66 +Alias (byte*) current_piece#46 = (byte*) current_piece#47 +Alias (byte*) current_piece_gfx#56 = (byte*) current_piece_gfx#57 Alias (byte) current_piece_color#42 = (byte) current_piece_color#43 Alias (byte) current_movedown_counter#19 = (byte) current_movedown_counter#25 -Alias (byte) current_ypos#13 = (byte) current_ypos#29 (byte) current_ypos#26 (byte) current_ypos#27 (byte) current_ypos#14 (byte) current_ypos#44 (byte) current_ypos#28 -Alias (byte*) current_piece#21 = (byte*) current_piece#22 (byte*) current_piece#31 (byte*) current_piece#49 (byte*) current_piece#42 (byte*) current_piece#33 (byte*) current_piece#32 -Alias (byte) current_piece_orientation#27 = (byte) current_piece_orientation#28 (byte) current_piece_orientation#38 (byte) current_piece_orientation#63 (byte) current_piece_orientation#54 (byte) current_piece_orientation#40 (byte) current_piece_orientation#39 -Alias (byte*) current_piece_gfx#28 = (byte*) current_piece_gfx#29 (byte*) current_piece_gfx#43 (byte*) current_piece_gfx#68 (byte*) current_piece_gfx#67 (byte*) current_piece_gfx#45 (byte*) current_piece_gfx#44 -Alias (byte) current_piece_color#21 = (byte) current_piece_color#22 (byte) current_piece_color#31 (byte) current_piece_color#54 (byte) current_piece_color#44 (byte) current_piece_color#33 (byte) current_piece_color#32 -Alias (byte) current_xpos#17 = (byte) current_xpos#34 (byte) current_xpos#32 (byte) current_xpos#69 (byte) current_xpos#51 (byte) current_xpos#50 (byte) current_xpos#33 -Alias (byte) collision::ypos#0 = (byte/signed word/word/dword/signed dword~) play_movedown::$11 -Alias (byte) collision::return#0 = (byte) collision::return#9 +Alias (byte) current_ypos#13 = (byte) current_ypos#30 (byte) current_ypos#27 (byte) current_ypos#28 (byte) current_ypos#14 (byte) current_ypos#48 (byte) current_ypos#29 +Alias (byte*) current_piece#21 = (byte*) current_piece#22 (byte*) current_piece#34 (byte*) current_piece#25 (byte*) current_piece#48 (byte*) current_piece#36 (byte*) current_piece#35 +Alias (byte) current_piece_orientation#16 = (byte) current_piece_orientation#32 (byte) current_piece_orientation#30 (byte) current_piece_orientation#57 (byte) current_piece_orientation#48 (byte) current_piece_orientation#47 (byte) current_piece_orientation#31 +Alias (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#28 (byte*) current_piece_gfx#41 (byte*) current_piece_gfx#69 (byte*) current_piece_gfx#58 (byte*) current_piece_gfx#43 (byte*) current_piece_gfx#42 +Alias (byte) current_piece_color#21 = (byte) current_piece_color#22 (byte) current_piece_color#31 (byte) current_piece_color#55 (byte) current_piece_color#44 (byte) current_piece_color#33 (byte) current_piece_color#32 +Alias (byte) current_xpos#17 = (byte) current_xpos#35 (byte) current_xpos#33 (byte) current_xpos#72 (byte) current_xpos#54 (byte) current_xpos#53 (byte) current_xpos#34 +Alias (byte) collision::ypos#0 = (byte/signed word/word/dword/signed dword~) play_move_down::$11 +Alias (byte) collision::return#0 = (byte) collision::return#10 Alias (byte*) current_piece#12 = (byte*) current_piece#4 Alias (byte) current_piece_orientation#17 = (byte) current_piece_orientation#5 -Alias (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#5 +Alias (byte*) current_piece_gfx#16 = (byte*) current_piece_gfx#5 Alias (byte) current_piece_color#12 = (byte) current_piece_color#4 Alias (byte) current_xpos#18 = (byte) current_xpos#5 Alias (byte) current_ypos#15 = (byte) current_ypos#5 -Alias (byte) play_movedown::return#3 = (byte) play_movedown::return#5 +Alias (byte) play_move_down::return#3 = (byte) play_move_down::return#5 Alias (byte) current_movedown_counter#12 = (byte) current_movedown_counter#5 Alias (byte) current_ypos#16 = (byte) current_ypos#6 Alias (byte*) current_piece#13 = (byte*) current_piece#5 Alias (byte) current_piece_orientation#18 = (byte) current_piece_orientation#6 -Alias (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#6 +Alias (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#6 Alias (byte) current_piece_color#13 = (byte) current_piece_color#5 Alias (byte) current_xpos#19 = (byte) current_xpos#6 -Alias (byte*) current_piece#0 = (byte*) current_piece#35 (byte*) current_piece#26 -Alias (byte) current_piece_orientation#0 = (byte) current_piece_orientation#48 (byte) current_piece_orientation#33 -Alias (byte*) current_piece_gfx#0 = (byte*) current_piece_gfx#61 (byte*) current_piece_gfx#38 +Alias (byte) current_xpos#20 = (byte) current_xpos#37 (byte) current_xpos#41 (byte) current_xpos#38 (byte) current_xpos#55 (byte) current_xpos#21 (byte) current_xpos#39 (byte) current_xpos#56 (byte) current_xpos#22 (byte) current_xpos#57 (byte) current_xpos#24 +Alias (byte) current_ypos#17 = (byte) current_ypos#32 (byte) current_ypos#33 (byte) current_ypos#18 +Alias (byte) current_piece_orientation#19 = (byte) current_piece_orientation#34 (byte) current_piece_orientation#35 (byte) current_piece_orientation#20 +Alias (byte*) current_piece#26 = (byte*) current_piece#37 (byte*) current_piece#38 (byte*) current_piece#27 +Alias (byte) collision::xpos#1 = (byte/signed word/word/dword/signed dword~) play_move_leftright::$7 +Alias (byte) collision::return#1 = (byte) collision::return#11 +Alias (byte) play_move_leftright::key_event#1 = (byte) play_move_leftright::key_event#2 +Alias (byte) collision::xpos#2 = (byte/signed word/word/dword/signed dword~) play_move_leftright::$3 +Alias (byte) collision::return#12 = (byte) collision::return#2 +Alias (byte) play_move_leftright::return#2 = (byte) play_move_leftright::return#6 +Alias (byte) current_xpos#23 = (byte) current_xpos#8 +Alias (byte) current_piece_orientation#21 = (byte) current_piece_orientation#36 (byte) current_piece_orientation#37 (byte) current_piece_orientation#22 (byte) current_piece_orientation#39 +Alias (byte) current_xpos#42 = (byte) current_xpos#58 (byte) current_xpos#59 (byte) current_xpos#43 +Alias (byte) current_ypos#34 = (byte) current_ypos#49 (byte) current_ypos#50 (byte) current_ypos#35 +Alias (byte*) current_piece#39 = (byte*) current_piece#49 (byte*) current_piece#50 (byte*) current_piece#40 +Alias (byte*) current_piece_gfx#31 = (byte*) current_piece_gfx#70 (byte*) current_piece_gfx#59 (byte*) current_piece_gfx#44 (byte*) current_piece_gfx#71 +Alias (byte) play_move_rotate::orientation#1 = (byte/word/dword~) play_move_rotate::$5 +Alias (byte) play_move_rotate::key_event#1 = (byte) play_move_rotate::key_event#2 +Alias (byte) play_move_rotate::orientation#2 = (byte/word/dword~) play_move_rotate::$3 +Alias (byte) play_move_rotate::return#2 = (byte) play_move_rotate::return#6 +Alias (byte) current_piece_orientation#23 = (byte) current_piece_orientation#7 +Alias (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#7 +Alias (byte) collision::return#13 = (byte) collision::return#3 +Alias (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#5 (byte) play_move_rotate::orientation#4 +Alias (byte*) current_piece#14 = (byte*) current_piece#24 (byte*) current_piece#28 +Alias (byte) current_piece_orientation#38 = (byte) current_piece_orientation#49 (byte) current_piece_orientation#58 +Alias (byte*) current_piece_gfx#30 = (byte*) current_piece_gfx#45 (byte*) current_piece_gfx#60 +Alias (byte*) current_piece_gfx#8 = (byte*~) play_move_rotate::$11 +Alias (byte*) current_piece#0 = (byte*) current_piece#41 (byte*) current_piece#29 +Alias (byte) current_piece_orientation#0 = (byte) current_piece_orientation#50 (byte) current_piece_orientation#40 +Alias (byte*) current_piece_gfx#0 = (byte*) current_piece_gfx#52 (byte*) current_piece_gfx#36 Alias (byte) current_piece_color#0 = (byte) current_piece_color#37 (byte) current_piece_color#26 -Alias (byte) current_xpos#0 = (byte) current_xpos#62 (byte) current_xpos#43 -Alias (byte) current_ypos#0 = (byte) current_ypos#50 (byte) current_ypos#37 +Alias (byte) current_xpos#0 = (byte) current_xpos#64 (byte) current_xpos#46 +Alias (byte) current_ypos#0 = (byte) current_ypos#52 (byte) current_ypos#40 Alias (byte) current_movedown_counter#0 = (byte) current_movedown_counter#26 (byte) current_movedown_counter#20 Alias (byte*) SCREEN#0 = (byte*) SCREEN#4 (byte*) SCREEN#3 -Alias (byte) collision::line#0 = (byte~) collision::$0 -Alias (byte) collision::line#1 = (byte) collision::line#2 (byte) collision::line#7 (byte) collision::line#6 (byte) collision::line#5 (byte) collision::line#4 -Alias (byte) collision::xpos#10 = (byte) collision::xpos#4 (byte) collision::xpos#5 (byte) collision::xpos#3 (byte) collision::xpos#12 (byte) collision::xpos#11 -Alias (byte) collision::c#3 = (byte) collision::c#6 (byte) collision::c#4 (byte) collision::c#8 (byte) collision::c#7 (byte) collision::c#5 +Alias (byte*) collision::piece_gfx#0 = (byte*~) collision::$0 +Alias (byte) collision::ypos2#0 = (byte~) collision::$1 +Alias (byte) collision::col#0 = (byte) collision::xpos#4 +Alias (byte) collision::ypos2#10 = (byte) collision::ypos2#3 (byte) collision::ypos2#5 (byte) collision::ypos2#9 (byte) collision::ypos2#8 (byte) collision::ypos2#7 +Alias (byte) collision::col#3 = (byte) collision::col#8 (byte) collision::col#6 (byte) collision::col#4 (byte) collision::col#5 (byte) collision::col#7 Alias (byte*) collision::playfield_line#1 = (byte*) collision::playfield_line#4 (byte*) collision::playfield_line#5 (byte*) collision::playfield_line#3 (byte*) collision::playfield_line#2 (byte*) collision::playfield_line#7 -Alias (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#97 (byte*) current_piece_gfx#92 (byte*) current_piece_gfx#83 (byte*) current_piece_gfx#71 (byte*) current_piece_gfx#48 +Alias (byte) collision::c#3 = (byte) collision::c#8 (byte) collision::c#7 (byte) collision::c#6 (byte) collision::c#5 (byte) collision::c#4 +Alias (byte*) collision::piece_gfx#1 = (byte*) collision::piece_gfx#9 (byte*) collision::piece_gfx#8 (byte*) collision::piece_gfx#7 (byte*) collision::piece_gfx#6 (byte*) collision::piece_gfx#5 Alias (byte) collision::i#1 = (byte) collision::i#10 (byte) collision::i#9 (byte) collision::i#8 (byte) collision::i#7 (byte) collision::i#6 -Alias (byte) collision::l#10 = (byte) collision::l#5 (byte) collision::l#9 (byte) collision::l#8 (byte) collision::l#7 (byte) collision::l#6 -Alias (byte) collision::ypos#10 = (byte) collision::ypos#12 (byte) collision::ypos#7 (byte) collision::ypos#11 (byte) collision::ypos#9 (byte) collision::ypos#8 -Alias (byte) collision::col#0 = (byte~) collision::$6 (byte) collision::col#1 (byte) collision::col#2 -Alias (byte) collision::return#10 = (byte) collision::return#2 -Alias (byte) collision::l#3 = (byte) collision::l#4 -Alias (byte) collision::ypos#5 = (byte) collision::ypos#6 -Alias (byte*) current_piece_gfx#32 = (byte*) current_piece_gfx#47 +Alias (byte) collision::l#10 = (byte) collision::l#4 (byte) collision::l#9 (byte) collision::l#8 (byte) collision::l#7 (byte) collision::l#5 +Alias (byte) collision::xpos#10 = (byte) collision::xpos#13 (byte) collision::xpos#8 (byte) collision::xpos#12 (byte) collision::xpos#11 (byte) collision::xpos#9 +Alias (byte) collision::return#14 = (byte) collision::return#5 +Alias (byte) collision::ypos2#4 = (byte) collision::ypos2#6 +Alias (byte) collision::l#2 = (byte) collision::l#3 +Alias (byte) collision::xpos#6 = (byte) collision::xpos#7 +Alias (byte*) collision::piece_gfx#3 = (byte*) collision::piece_gfx#4 Alias (byte) collision::i#4 = (byte) collision::i#5 -Alias (byte) collision::xpos#7 = (byte) collision::xpos#9 Alias (byte) lock_current::line#0 = (byte~) lock_current::$0 -Alias (byte) current_xpos#20 = (byte) current_xpos#36 +Alias (byte) current_xpos#26 = (byte) current_xpos#44 Alias (byte) lock_current::c#3 = (byte) lock_current::c#4 Alias (byte) current_piece_color#14 = (byte) current_piece_color#24 Alias (byte*) lock_current::playfield_line#1 = (byte*) lock_current::playfield_line#2 -Alias (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#51 +Alias (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#48 Alias (byte) lock_current::i#1 = (byte) lock_current::i#6 Alias (byte) lock_current::l#5 = (byte) lock_current::l#6 -Alias (byte) current_ypos#58 = (byte) current_ypos#59 +Alias (byte) current_ypos#60 = (byte) current_ypos#61 Alias (byte) lock_current::col#0 = (byte~) lock_current::$4 Alias (byte) lock_current::l#3 = (byte) lock_current::l#4 -Alias (byte) current_ypos#32 = (byte) current_ypos#45 -Alias (byte*) current_piece_gfx#34 = (byte*) current_piece_gfx#50 +Alias (byte) current_ypos#37 = (byte) current_ypos#51 +Alias (byte*) current_piece_gfx#33 = (byte*) current_piece_gfx#47 Alias (byte) lock_current::i#4 = (byte) lock_current::i#5 -Alias (byte) current_xpos#53 = (byte) current_xpos#71 +Alias (byte) current_xpos#61 = (byte) current_xpos#74 Alias (byte) current_piece_color#35 = (byte) current_piece_color#46 -Alias (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#7 (byte*~) spawn_current::$0 (byte*) current_piece_gfx#8 -Alias (byte*) current_piece#14 = (byte*) current_piece#6 (byte*) current_piece#7 -Alias (byte) current_piece_orientation#19 = (byte) current_piece_orientation#7 (byte) current_piece_orientation#8 +Alias (byte*) current_piece_gfx#10 = (byte*) current_piece_gfx#9 (byte*~) spawn_current::$0 (byte*) current_piece_gfx#20 +Alias (byte*) current_piece#16 = (byte*) current_piece#6 (byte*) current_piece#7 +Alias (byte) current_piece_orientation#10 = (byte) current_piece_orientation#24 (byte) current_piece_orientation#9 Alias (byte) current_piece_color#15 = (byte) current_piece_color#6 (byte) current_piece_color#7 -Alias (byte) current_xpos#21 = (byte) current_xpos#7 (byte) current_xpos#8 -Alias (byte) current_ypos#18 = (byte) current_ypos#7 (byte) current_ypos#8 -Alias (byte) play_moveother::return#1 = (byte) play_moveother::render#5 (byte) play_moveother::return#4 (byte) play_moveother::return#2 -Alias (byte) play_moveother::key_event#1 = (byte) play_moveother::key_event#2 (byte) play_moveother::key_event#3 (byte) play_moveother::key_event#4 (byte) play_moveother::key_event#5 -Alias (byte) current_xpos#22 = (byte) current_xpos#37 (byte) current_xpos#54 (byte) current_xpos#40 (byte) current_xpos#38 (byte) current_xpos#23 (byte) current_xpos#39 (byte) current_xpos#72 (byte) current_xpos#57 (byte) current_xpos#73 (byte) current_xpos#58 (byte) current_xpos#56 (byte) current_xpos#59 (byte) current_xpos#24 (byte) current_xpos#55 (byte) current_xpos#25 -Alias (byte) current_ypos#19 = (byte) current_ypos#33 (byte) current_ypos#46 (byte) current_ypos#34 (byte) current_ypos#20 -Alias (byte) play_moveother::render#0 = (byte) play_moveother::render#20 (byte) play_moveother::render#17 (byte) play_moveother::render#16 (byte) play_moveother::render#19 (byte) play_moveother::render#18 (byte) play_moveother::render#15 (byte) play_moveother::render#13 (byte) play_moveother::render#6 (byte) play_moveother::render#14 (byte) play_moveother::render#11 (byte) play_moveother::render#7 (byte) play_moveother::render#12 (byte) play_moveother::render#8 (byte) play_moveother::render#10 (byte) play_moveother::render#9 -Alias (byte) current_piece_orientation#20 = (byte) current_piece_orientation#55 (byte) current_piece_orientation#41 (byte) current_piece_orientation#64 (byte) current_piece_orientation#57 (byte) current_piece_orientation#47 (byte) current_piece_orientation#65 (byte) current_piece_orientation#56 (byte) current_piece_orientation#30 (byte) current_piece_orientation#31 (byte) current_piece_orientation#45 (byte) current_piece_orientation#21 (byte) current_piece_orientation#46 (byte) current_piece_orientation#43 (byte) current_piece_orientation#42 (byte) current_piece_orientation#44 -Alias (byte*) current_piece#15 = (byte*) current_piece#43 (byte*) current_piece#50 (byte*) current_piece#34 (byte*) current_piece#24 (byte*) current_piece#25 (byte*) current_piece#16 -Alias (byte*) current_piece_gfx#52 = (byte*) current_piece_gfx#84 (byte*) current_piece_gfx#69 (byte*) current_piece_gfx#74 (byte*) current_piece_gfx#85 (byte*) current_piece_gfx#70 (byte*) current_piece_gfx#73 (byte*) current_piece_gfx#86 (byte*) current_piece_gfx#72 (byte*) current_piece_gfx#56 (byte*) current_piece_gfx#57 (byte*) current_piece_gfx#54 (byte*) current_piece_gfx#53 (byte*) current_piece_gfx#55 -Alias (byte) collision::xpos#1 = (byte/signed word/word/dword/signed dword~) play_moveother::$18 -Alias (byte) collision::return#11 = (byte) collision::return#7 -Alias (byte) collision::xpos#2 = (byte/signed word/word/dword/signed dword~) play_moveother::$14 -Alias (byte) collision::return#12 = (byte) collision::return#8 -Alias (byte) current_piece_orientation#9 = (byte/word/dword~) play_moveother::$12 -Alias (byte*) current_piece_gfx#9 = (byte*~) play_moveother::$13 -Alias (byte) current_piece_orientation#10 = (byte/word/dword~) play_moveother::$9 -Alias (byte*) current_piece_gfx#10 = (byte*~) play_moveother::$10 -Alias (byte) current_piece_orientation#11 = (byte) current_piece_orientation#22 (byte) current_piece_orientation#32 -Alias (byte*) current_piece_gfx#11 = (byte*) current_piece_gfx#22 (byte*) current_piece_gfx#35 -Alias (byte) current_xpos#11 = (byte) current_xpos#26 (byte) current_xpos#41 +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*) init::li#0 = (byte*~) init::$3 Alias (byte*) init::line#0 = (byte*~) init::$10 Alias (byte*) init::line#2 = (byte*) init::line#3 Alias (byte) init::l#2 = (byte) init::l#3 Alias (byte) render_playfield::l#3 = (byte) render_playfield::l#4 Alias (byte) render_playfield::i#1 = (byte) render_playfield::i#4 -Alias (byte) render_current::line#0 = (byte~) render_current::$0 (byte) render_current::line#1 -Alias (byte*) current_piece_gfx#37 = (byte*) current_piece_gfx#58 +Alias (byte) render_current::ypos2#0 = (byte~) render_current::$0 +Alias (byte) render_current::ypos2#2 = (byte) render_current::ypos2#4 +Alias (byte) current_xpos#28 = (byte) current_xpos#45 +Alias (byte*) current_piece_gfx#35 = (byte*) current_piece_gfx#49 Alias (byte) render_current::i#4 = (byte) render_current::i#5 -Alias (byte) current_xpos#61 = (byte) current_xpos#74 -Alias (byte) render_current::l#2 = (byte) render_current::l#8 -Alias (byte) current_piece_color#48 = (byte) current_piece_color#55 -Alias (byte) current_ypos#21 = (byte) current_ypos#66 -Alias (byte) current_xpos#27 = (byte) current_xpos#42 (byte) current_xpos#75 (byte) current_xpos#76 -Alias (byte) render_current::c#3 = (byte) render_current::c#4 (byte) render_current::c#5 (byte) render_current::c#6 -Alias (byte) current_piece_color#16 = (byte) current_piece_color#25 (byte) current_piece_color#36 (byte) current_piece_color#56 +Alias (byte) render_current::l#3 = (byte) render_current::l#8 +Alias (byte) current_piece_color#48 = (byte) current_piece_color#56 +Alias (byte) render_current::xpos#3 = (byte) render_current::xpos#5 (byte) render_current::xpos#6 (byte) render_current::xpos#4 +Alias (byte) current_piece_color#16 = (byte) current_piece_color#25 (byte) current_piece_color#36 (byte) current_piece_color#57 Alias (byte*) 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#23 = (byte*) current_piece_gfx#77 (byte*) current_piece_gfx#59 (byte*) current_piece_gfx#60 +Alias (byte*) current_piece_gfx#21 = (byte*) current_piece_gfx#63 (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_ypos#60 = (byte) current_ypos#67 (byte) current_ypos#61 (byte) current_ypos#62 -Alias (byte) render_current::xpos#0 = (byte~) render_current::$6 (byte) render_current::xpos#1 +Alias (byte) current_xpos#81 = (byte) current_xpos#88 (byte) current_xpos#82 (byte) current_xpos#83 Alias (byte*) current_piece#17 = (byte*) current_piece#8 -Alias (byte) current_piece_orientation#12 = (byte) current_piece_orientation#23 -Alias (byte*) current_piece_gfx#12 = (byte*) current_piece_gfx#24 +Alias (byte) current_piece_orientation#11 = (byte) current_piece_orientation#25 +Alias (byte*) current_piece_gfx#11 = (byte*) current_piece_gfx#22 Alias (byte) current_piece_color#17 = (byte) current_piece_color#8 -Alias (byte) current_xpos#12 = (byte) current_xpos#28 -Alias (byte) current_ypos#22 = (byte) current_ypos#9 +Alias (byte) current_xpos#12 = (byte) current_xpos#29 +Alias (byte) current_ypos#23 = (byte) current_ypos#9 Alias (byte) keyboard_events_size#20 = (byte) keyboard_events_size#9 Alias (byte) keyboard_modifiers#17 = (byte) keyboard_modifiers#9 Alias (byte) current_movedown_counter#13 = (byte) current_movedown_counter#6 @@ -3279,45 +3352,52 @@ 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#60 (byte) keyboard_events_size#54 (byte) keyboard_events_size#46 (byte) keyboard_events_size#23 -Alias (byte*) current_piece#10 = (byte*) current_piece#28 -Alias (byte) current_piece_orientation#15 = (byte) current_piece_orientation#35 -Alias (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#40 +Alias (byte) keyboard_events_size#13 = (byte) keyboard_events_size#61 (byte) keyboard_events_size#54 (byte) keyboard_events_size#46 (byte) keyboard_events_size#23 +Alias (byte*) current_piece#10 = (byte*) current_piece#31 +Alias (byte) current_piece_orientation#14 = (byte) current_piece_orientation#42 +Alias (byte*) current_piece_gfx#14 = (byte*) current_piece_gfx#38 Alias (byte) current_piece_color#10 = (byte) current_piece_color#28 -Alias (byte) current_xpos#15 = (byte) current_xpos#45 -Alias (byte) current_ypos#11 = (byte) current_ypos#39 +Alias (byte) current_xpos#15 = (byte) current_xpos#48 +Alias (byte) current_ypos#11 = (byte) current_ypos#42 Alias (byte) keyboard_events_size#18 = (byte) keyboard_events_size#32 Alias (byte) keyboard_modifiers#15 = (byte) keyboard_modifiers#29 Alias (byte) current_movedown_counter#1 = (byte) current_movedown_counter#21 Alias (byte) current_movedown_counter#10 = (byte) current_movedown_counter#11 (byte) current_movedown_counter#3 (byte) current_movedown_counter#19 -Alias (byte) current_ypos#13 = (byte) current_ypos#55 (byte) current_ypos#70 (byte) current_ypos#42 -Alias (byte) current_xpos#17 = (byte) current_xpos#66 (byte) current_xpos#86 (byte) current_xpos#48 -Alias (byte*) current_piece#21 = (byte*) current_piece#46 (byte*) current_piece#58 (byte*) current_piece#40 -Alias (byte) current_piece_orientation#27 = (byte) current_piece_orientation#60 (byte) current_piece_orientation#73 (byte) current_piece_orientation#52 -Alias (byte*) current_piece_gfx#28 = (byte*) current_piece_gfx#80 (byte*) current_piece_gfx#95 (byte*) current_piece_gfx#65 -Alias (byte) current_piece_color#21 = (byte) current_piece_color#51 (byte) current_piece_color#66 (byte) current_piece_color#42 +Alias (byte) current_ypos#13 = (byte) current_ypos#56 (byte) current_ypos#67 (byte) current_ypos#46 +Alias (byte) current_xpos#17 = (byte) current_xpos#69 (byte) current_xpos#86 (byte) current_xpos#51 +Alias (byte) current_piece_orientation#16 = (byte) current_piece_orientation#54 (byte) current_piece_orientation#66 (byte) current_piece_orientation#45 +Alias (byte*) current_piece#21 = (byte*) current_piece#54 (byte*) current_piece#64 (byte*) current_piece#46 +Alias (byte*) current_piece_gfx#27 = (byte*) current_piece_gfx#66 (byte*) current_piece_gfx#79 (byte*) current_piece_gfx#56 +Alias (byte) current_piece_color#21 = (byte) current_piece_color#52 (byte) current_piece_color#67 (byte) current_piece_color#42 +Alias (byte) current_xpos#20 = (byte) current_xpos#40 +Alias (byte) current_xpos#25 = (byte) current_xpos#42 +Alias (byte) current_ypos#19 = (byte) current_ypos#34 +Alias (byte*) current_piece#14 = (byte*) current_piece#39 +Alias (byte) current_piece_orientation#21 = (byte) current_piece_orientation#38 +Alias (byte*) current_piece_gfx#30 = (byte*) current_piece_gfx#31 +Alias (byte) collision::col#2 = (byte) collision::col#3 Alias (byte) collision::c#2 = (byte) collision::c#3 -Alias (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#32 +Alias (byte*) collision::piece_gfx#1 = (byte*) collision::piece_gfx#3 Alias (byte) collision::i#1 = (byte) collision::i#4 -Alias (byte) collision::l#10 = (byte) collision::l#3 -Alias (byte) collision::line#1 = (byte) collision::line#3 -Alias (byte) collision::ypos#10 = (byte) collision::ypos#5 -Alias (byte) collision::xpos#10 = (byte) collision::xpos#7 +Alias (byte) collision::ypos2#10 = (byte) collision::ypos2#4 +Alias (byte) collision::l#10 = (byte) collision::l#2 +Alias (byte) collision::xpos#10 = (byte) collision::xpos#6 Alias (byte*) collision::playfield_line#1 = (byte*) collision::playfield_line#6 Alias (byte) lock_current::c#2 = (byte) lock_current::c#3 -Alias (byte*) current_piece_gfx#20 = (byte*) current_piece_gfx#34 +Alias (byte*) current_piece_gfx#19 = (byte*) current_piece_gfx#33 Alias (byte) lock_current::i#1 = (byte) lock_current::i#4 Alias (byte) lock_current::l#3 = (byte) lock_current::l#5 -Alias (byte) current_xpos#20 = (byte) current_xpos#53 +Alias (byte) current_xpos#26 = (byte) current_xpos#61 Alias (byte) current_piece_color#14 = (byte) current_piece_color#35 Alias (byte*) lock_current::playfield_line#1 = (byte*) lock_current::playfield_line#3 -Alias (byte) current_ypos#32 = (byte) current_ypos#58 +Alias (byte) current_ypos#37 = (byte) current_ypos#60 +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#23 = (byte*) current_piece_gfx#36 +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_ypos#49 = (byte) current_ypos#60 -Alias (byte) current_xpos#27 = (byte) current_xpos#60 +Alias (byte) current_xpos#76 = (byte) current_xpos#81 Alias (byte) current_piece_color#16 = (byte) current_piece_color#47 Alias (byte*) render_current::screen_line#1 = (byte*) render_current::screen_line#4 Successful SSA optimization Pass2AliasElimination @@ -3327,44 +3407,42 @@ 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#37 -Self Phi Eliminated (byte) current_ypos#68 -Self Phi Eliminated (byte*) current_piece#51 -Self Phi Eliminated (byte) current_piece_orientation#66 -Self Phi Eliminated (byte*) current_piece_gfx#87 -Self Phi Eliminated (byte) current_piece_color#57 -Self Phi Eliminated (byte) current_xpos#83 +Self Phi Eliminated (byte) current_movedown_counter#38 +Self Phi Eliminated (byte) current_ypos#65 +Self Phi Eliminated (byte*) current_piece#57 +Self Phi Eliminated (byte) current_piece_orientation#63 +Self Phi Eliminated (byte*) current_piece_gfx#72 +Self Phi Eliminated (byte) current_piece_color#58 +Self Phi Eliminated (byte) current_xpos#84 Self Phi Eliminated (byte) keyboard_events_size#26 Self Phi Eliminated (byte) keyboard_modifiers#23 Self Phi Eliminated (byte) current_movedown_counter#14 -Self Phi Eliminated (byte) current_ypos#24 +Self Phi Eliminated (byte) current_ypos#25 Self Phi Eliminated (byte*) current_piece#19 -Self Phi Eliminated (byte) current_piece_orientation#25 -Self Phi Eliminated (byte*) current_piece_gfx#26 +Self Phi Eliminated (byte) current_piece_orientation#27 +Self Phi Eliminated (byte*) current_piece_gfx#24 Self Phi Eliminated (byte) current_piece_color#19 -Self Phi Eliminated (byte) current_xpos#30 -Self Phi Eliminated (byte*) current_piece_gfx#19 -Self Phi Eliminated (byte) collision::line#1 +Self Phi Eliminated (byte) current_xpos#31 +Self Phi Eliminated (byte*) collision::piece_gfx#1 +Self Phi Eliminated (byte) collision::ypos2#10 Self Phi Eliminated (byte) collision::l#10 Self Phi Eliminated (byte) collision::xpos#10 -Self Phi Eliminated (byte) collision::ypos#10 Self Phi Eliminated (byte*) collision::playfield_line#1 -Self Phi Eliminated (byte*) current_piece_gfx#20 -Self Phi Eliminated (byte) current_xpos#20 +Self Phi Eliminated (byte*) current_piece_gfx#19 +Self Phi Eliminated (byte) current_xpos#26 Self Phi Eliminated (byte) current_piece_color#14 Self Phi Eliminated (byte*) lock_current::playfield_line#1 Self Phi Eliminated (byte) lock_current::l#3 -Self Phi Eliminated (byte) current_ypos#32 +Self Phi Eliminated (byte) current_ypos#37 Self Phi Eliminated (byte*) init::line#2 Self Phi Eliminated (byte) init::l#2 -Self Phi Eliminated (byte*) render_playfield::line#1 Self Phi Eliminated (byte) render_playfield::l#3 -Self Phi Eliminated (byte*) current_piece_gfx#23 -Self Phi Eliminated (byte) current_xpos#27 +Self Phi Eliminated (byte*) current_piece_gfx#21 +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_ypos#49 +Self Phi Eliminated (byte) current_xpos#76 Successful SSA optimization Pass2SelfPhiElimination Redundant Phi (byte) fill::val#2 (byte) fill::val#3 Redundant Phi (byte*) fill::end#1 (byte*) fill::end#0 @@ -3375,114 +3453,117 @@ Redundant Phi (byte) keyboard_event_scan::row#10 (byte) keyboard_event_scan::row Redundant Phi (byte) keyboard_events_size#14 (byte) keyboard_events_size#17 Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0 Redundant Phi (byte*) current_piece#18 (byte*) current_piece#0 -Redundant Phi (byte) current_piece_orientation#24 (byte) current_piece_orientation#0 -Redundant Phi (byte*) current_piece_gfx#25 (byte*) current_piece_gfx#0 +Redundant Phi (byte) current_piece_orientation#26 (byte) current_piece_orientation#0 +Redundant Phi (byte*) current_piece_gfx#23 (byte*) current_piece_gfx#0 Redundant Phi (byte) current_piece_color#18 (byte) current_piece_color#0 -Redundant Phi (byte) current_xpos#29 (byte) current_xpos#0 -Redundant Phi (byte) current_ypos#23 (byte) current_ypos#0 +Redundant Phi (byte) current_xpos#30 (byte) current_xpos#0 +Redundant Phi (byte) current_ypos#24 (byte) current_ypos#0 Redundant Phi (byte) keyboard_events_size#33 (byte) keyboard_events_size#0 Redundant Phi (byte) keyboard_modifiers#30 (byte) keyboard_modifiers#0 Redundant Phi (byte) current_movedown_counter#22 (byte) current_movedown_counter#0 -Redundant Phi (byte*) current_piece#1 (byte*) current_piece#14 -Redundant Phi (byte) current_piece_orientation#1 (byte) current_piece_orientation#19 -Redundant Phi (byte*) current_piece_gfx#1 (byte*) current_piece_gfx#21 +Redundant Phi (byte*) current_piece#1 (byte*) current_piece#16 +Redundant Phi (byte) current_piece_orientation#1 (byte) current_piece_orientation#10 +Redundant Phi (byte*) current_piece_gfx#1 (byte*) current_piece_gfx#10 Redundant Phi (byte) current_piece_color#1 (byte) current_piece_color#15 -Redundant Phi (byte) current_xpos#1 (byte) current_xpos#21 -Redundant Phi (byte) current_ypos#1 (byte) current_ypos#18 +Redundant Phi (byte) current_xpos#1 (byte) current_xpos#10 +Redundant Phi (byte) current_ypos#1 (byte) current_ypos#21 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#37 (byte) current_movedown_counter#15 -Redundant Phi (byte) current_ypos#68 (byte) current_ypos#12 -Redundant Phi (byte*) current_piece#51 (byte*) current_piece#11 -Redundant Phi (byte) current_piece_orientation#66 (byte) current_piece_orientation#16 -Redundant Phi (byte*) current_piece_gfx#87 (byte*) current_piece_gfx#16 -Redundant Phi (byte) current_piece_color#57 (byte) current_piece_color#11 -Redundant Phi (byte) current_xpos#83 (byte) current_xpos#16 +Redundant Phi (byte) current_movedown_counter#38 (byte) current_movedown_counter#15 +Redundant Phi (byte) current_ypos#65 (byte) current_ypos#12 +Redundant Phi (byte*) current_piece#57 (byte*) current_piece#11 +Redundant Phi (byte) current_piece_orientation#63 (byte) current_piece_orientation#15 +Redundant Phi (byte*) current_piece_gfx#72 (byte*) current_piece_gfx#15 +Redundant Phi (byte) current_piece_color#58 (byte) current_piece_color#11 +Redundant Phi (byte) current_xpos#84 (byte) current_xpos#16 Redundant Phi (byte) 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#37 -Redundant Phi (byte) current_ypos#24 (byte) current_ypos#68 -Redundant Phi (byte*) current_piece#19 (byte*) current_piece#51 -Redundant Phi (byte) current_piece_orientation#25 (byte) current_piece_orientation#66 -Redundant Phi (byte*) current_piece_gfx#26 (byte*) current_piece_gfx#87 -Redundant Phi (byte) current_piece_color#19 (byte) current_piece_color#57 -Redundant Phi (byte) current_xpos#30 (byte) current_xpos#83 +Redundant Phi (byte) current_movedown_counter#14 (byte) current_movedown_counter#38 +Redundant Phi (byte) current_ypos#25 (byte) current_ypos#65 +Redundant Phi (byte*) current_piece#19 (byte*) current_piece#57 +Redundant Phi (byte) current_piece_orientation#27 (byte) current_piece_orientation#63 +Redundant Phi (byte*) current_piece_gfx#24 (byte*) current_piece_gfx#72 +Redundant Phi (byte) current_piece_color#19 (byte) current_piece_color#58 +Redundant Phi (byte) current_xpos#31 (byte) current_xpos#84 Redundant Phi (byte) keyboard_events_size#17 (byte) keyboard_events_size#13 Redundant Phi (byte) keyboard_modifiers#15 (byte) keyboard_modifiers#14 Redundant Phi (byte) keyboard_events_size#18 (byte) keyboard_events_size#16 Redundant Phi (byte) current_movedown_counter#1 (byte) current_movedown_counter#12 Redundant Phi (byte) current_ypos#11 (byte) current_ypos#16 Redundant Phi (byte*) current_piece#10 (byte*) current_piece#13 -Redundant Phi (byte) current_piece_orientation#14 (byte) current_piece_orientation#18 -Redundant Phi (byte*) current_piece_gfx#14 (byte*) current_piece_gfx#18 +Redundant Phi (byte) current_piece_orientation#13 (byte) current_piece_orientation#18 +Redundant Phi (byte*) current_piece_gfx#13 (byte*) current_piece_gfx#17 Redundant Phi (byte) current_piece_color#10 (byte) current_piece_color#13 Redundant Phi (byte) current_xpos#14 (byte) current_xpos#19 -Redundant Phi (byte) current_piece_orientation#15 (byte) current_piece_orientation#11 -Redundant Phi (byte*) current_piece_gfx#15 (byte*) current_piece_gfx#11 -Redundant Phi (byte) current_xpos#15 (byte) current_xpos#11 +Redundant Phi (byte) current_xpos#15 (byte) current_xpos#23 +Redundant Phi (byte) current_piece_orientation#14 (byte) current_piece_orientation#23 +Redundant Phi (byte*) current_piece_gfx#14 (byte*) current_piece_gfx#18 Redundant Phi (byte) current_movedown_counter#9 (byte) current_movedown_counter#14 -Redundant Phi (byte) play_movedown::key_event#1 (byte) play_movedown::key_event#0 -Redundant Phi (byte) current_ypos#13 (byte) current_ypos#24 -Redundant Phi (byte) current_xpos#17 (byte) current_xpos#30 +Redundant Phi (byte) play_move_down::key_event#1 (byte) play_move_down::key_event#0 +Redundant Phi (byte) current_ypos#13 (byte) current_ypos#25 +Redundant Phi (byte) current_xpos#17 (byte) current_xpos#31 +Redundant Phi (byte) current_piece_orientation#16 (byte) current_piece_orientation#27 Redundant Phi (byte*) current_piece#21 (byte*) current_piece#19 -Redundant Phi (byte) current_piece_orientation#27 (byte) current_piece_orientation#25 -Redundant Phi (byte*) current_piece_gfx#28 (byte*) current_piece_gfx#26 +Redundant Phi (byte*) current_piece_gfx#27 (byte*) current_piece_gfx#24 Redundant Phi (byte) current_piece_color#21 (byte) current_piece_color#19 -Redundant Phi (byte*) current_piece#12 (byte*) current_piece#14 -Redundant Phi (byte) current_piece_orientation#17 (byte) current_piece_orientation#19 -Redundant Phi (byte*) current_piece_gfx#17 (byte*) current_piece_gfx#21 +Redundant Phi (byte*) current_piece#12 (byte*) current_piece#16 +Redundant Phi (byte) current_piece_orientation#17 (byte) current_piece_orientation#10 +Redundant Phi (byte*) current_piece_gfx#16 (byte*) current_piece_gfx#10 Redundant Phi (byte) current_piece_color#12 (byte) current_piece_color#15 -Redundant Phi (byte) current_xpos#18 (byte) current_xpos#21 -Redundant Phi (byte) current_ypos#15 (byte) current_ypos#18 -Redundant Phi (byte*) current_piece_gfx#19 (byte*) current_piece_gfx#31 -Redundant Phi (byte) collision::line#1 (byte) collision::line#0 -Redundant Phi (byte) collision::l#10 (byte) collision::l#2 -Redundant Phi (byte) collision::xpos#10 (byte) collision::xpos#6 -Redundant Phi (byte) collision::ypos#10 (byte) collision::ypos#3 +Redundant Phi (byte) current_xpos#18 (byte) current_xpos#10 +Redundant Phi (byte) current_ypos#15 (byte) current_ypos#21 +Redundant Phi (byte) play_move_leftright::key_event#1 (byte) play_move_leftright::key_event#0 +Redundant Phi (byte) current_xpos#20 (byte) current_xpos#14 +Redundant Phi (byte) current_ypos#17 (byte) current_ypos#11 +Redundant Phi (byte) current_piece_orientation#19 (byte) current_piece_orientation#13 +Redundant Phi (byte*) current_piece#26 (byte*) current_piece#10 +Redundant Phi (byte) play_move_rotate::key_event#1 (byte) play_move_rotate::key_event#0 +Redundant Phi (byte) current_piece_orientation#21 (byte) current_piece_orientation#13 +Redundant Phi (byte) current_xpos#25 (byte) current_xpos#15 +Redundant Phi (byte) current_ypos#19 (byte) current_ypos#11 +Redundant Phi (byte*) current_piece#14 (byte*) current_piece#10 +Redundant Phi (byte*) current_piece_gfx#30 (byte*) current_piece_gfx#13 +Redundant Phi (byte*) collision::piece_gfx#1 (byte*) collision::piece_gfx#2 +Redundant Phi (byte) collision::ypos2#10 (byte) collision::ypos2#2 +Redundant Phi (byte) collision::l#10 (byte) collision::l#6 +Redundant Phi (byte) collision::xpos#10 (byte) collision::col#0 Redundant Phi (byte*) collision::playfield_line#1 (byte*) collision::playfield_line#0 -Redundant Phi (byte) current_ypos#31 (byte) current_ypos#13 -Redundant Phi (byte*) current_piece_gfx#49 (byte*) current_piece_gfx#28 -Redundant Phi (byte) current_xpos#70 (byte) current_xpos#17 +Redundant Phi (byte) current_ypos#36 (byte) current_ypos#13 +Redundant Phi (byte*) current_piece_gfx#46 (byte*) current_piece_gfx#27 +Redundant Phi (byte) current_xpos#73 (byte) current_xpos#17 Redundant Phi (byte) current_piece_color#45 (byte) current_piece_color#21 -Redundant Phi (byte*) current_piece_gfx#20 (byte*) current_piece_gfx#33 -Redundant Phi (byte) current_xpos#20 (byte) current_xpos#52 +Redundant Phi (byte*) current_piece_gfx#19 (byte*) current_piece_gfx#32 +Redundant Phi (byte) current_xpos#26 (byte) current_xpos#60 Redundant Phi (byte) current_piece_color#14 (byte) current_piece_color#34 Redundant Phi (byte*) lock_current::playfield_line#1 (byte*) lock_current::playfield_line#0 Redundant Phi (byte) lock_current::l#3 (byte) lock_current::l#2 -Redundant Phi (byte) current_ypos#32 (byte) current_ypos#17 -Redundant Phi (byte) play_moveother::key_event#1 (byte) play_moveother::key_event#0 -Redundant Phi (byte) current_piece_orientation#20 (byte) current_piece_orientation#14 -Redundant Phi (byte*) current_piece_gfx#52 (byte*) current_piece_gfx#14 -Redundant Phi (byte) current_xpos#22 (byte) current_xpos#14 -Redundant Phi (byte) current_ypos#19 (byte) current_ypos#11 -Redundant Phi (byte*) current_piece#15 (byte*) current_piece#10 +Redundant Phi (byte) current_ypos#37 (byte) current_ypos#20 Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2 Redundant Phi (byte*) init::line#2 (byte*) init::line#4 Redundant Phi (byte) init::l#2 (byte) init::l#4 -Redundant Phi (byte*) render_playfield::line#1 (byte*) render_playfield::line#0 Redundant Phi (byte) render_playfield::l#3 (byte) render_playfield::l#2 -Redundant Phi (byte*) current_piece_gfx#23 (byte*) current_piece_gfx#37 -Redundant Phi (byte) current_xpos#27 (byte) current_xpos#61 -Redundant Phi (byte) render_current::l#4 (byte) render_current::l#2 +Redundant Phi (byte*) current_piece_gfx#21 (byte*) current_piece_gfx#35 +Redundant Phi (byte) render_current::ypos2#5 (byte) render_current::ypos2#2 +Redundant Phi (byte) render_current::l#4 (byte) render_current::l#3 Redundant Phi (byte) current_piece_color#16 (byte) current_piece_color#48 Redundant Phi (byte*) render_current::screen_line#1 (byte*) render_current::screen_line#0 -Redundant Phi (byte) current_ypos#49 (byte) current_ypos#21 +Redundant Phi (byte) current_xpos#76 (byte) current_xpos#28 Redundant Phi (byte*) current_piece#17 (byte*) current_piece#11 -Redundant Phi (byte) current_piece_orientation#12 (byte) current_piece_orientation#16 -Redundant Phi (byte*) current_piece_gfx#12 (byte*) current_piece_gfx#16 +Redundant Phi (byte) current_piece_orientation#11 (byte) current_piece_orientation#15 +Redundant Phi (byte*) current_piece_gfx#11 (byte*) current_piece_gfx#15 Redundant Phi (byte) current_piece_color#17 (byte) current_piece_color#11 Redundant Phi (byte) current_xpos#12 (byte) current_xpos#16 -Redundant Phi (byte) current_ypos#22 (byte) current_ypos#12 +Redundant Phi (byte) current_ypos#23 (byte) current_ypos#12 Redundant Phi (byte) keyboard_events_size#20 (byte) keyboard_events_size#19 Redundant Phi (byte) keyboard_modifiers#17 (byte) keyboard_modifiers#16 Redundant Phi (byte) current_movedown_counter#13 (byte) current_movedown_counter#15 Successful SSA optimization Pass2RedundantPhiElimination Redundant Phi (byte) keyboard_event_scan::row#4 (byte) keyboard_event_scan::row#2 -Redundant Phi (byte) render_current::l#3 (byte) render_current::l#2 -Redundant Phi (byte) current_ypos#36 (byte) current_ypos#21 -Redundant Phi (byte*) current_piece_gfx#76 (byte*) current_piece_gfx#37 -Redundant Phi (byte) current_xpos#82 (byte) current_xpos#61 -Redundant Phi (byte) current_piece_color#63 (byte) current_piece_color#48 +Redundant Phi (byte) render_current::ypos2#3 (byte) render_current::ypos2#2 +Redundant Phi (byte) render_current::l#2 (byte) render_current::l#3 +Redundant Phi (byte) current_xpos#63 (byte) current_xpos#28 +Redundant Phi (byte*) current_piece_gfx#62 (byte*) current_piece_gfx#35 +Redundant Phi (byte) current_piece_color#64 (byte) current_piece_color#48 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 @@ -3498,41 +3579,41 @@ Simple Condition (bool~) keyboard_event_scan::$28 if((byte~) keyboard_event_scan Simple Condition (bool~) keyboard_event_get::$0 if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@1 Simple Condition (bool~) main::$4 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 Simple Condition (bool~) main::$5 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@8 -Simple Condition (bool~) main::$11 if((byte) main::render#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -Simple Condition (bool~) play_movedown::$1 if((byte) play_movedown::key_event#0!=(byte) KEY_SPACE#0) goto play_movedown::@1 -Simple Condition (bool~) play_movedown::$4 if((byte~) play_movedown::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movedown::@2 -Simple Condition (bool~) play_movedown::$8 if((byte) current_movedown_counter#10<(byte) current_movedown_rate#0) goto play_movedown::@4 -Simple Condition (bool~) play_movedown::$6 if((byte) current_movedown_counter#10<(byte) current_movedown_rate_fast#0) goto play_movedown::@3 -Simple Condition (bool~) play_movedown::$10 if((byte) play_movedown::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movedown::@5 -Simple Condition (bool~) play_movedown::$13 if((byte~) play_movedown::$12==(byte) COLLISION_NONE#0) goto play_movedown::@6 -Simple Condition (bool~) collision::$3 if(*((byte*) current_piece_gfx#31 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 +Simple Condition (bool~) main::$12 if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 +Simple Condition (bool~) play_move_down::$1 if((byte) play_move_down::key_event#0!=(byte) KEY_SPACE#0) goto play_move_down::@1 +Simple Condition (bool~) play_move_down::$4 if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 +Simple Condition (bool~) play_move_down::$8 if((byte) current_movedown_counter#10<(byte) current_movedown_rate#0) goto play_move_down::@4 +Simple Condition (bool~) play_move_down::$6 if((byte) current_movedown_counter#10<(byte) current_movedown_rate_fast#0) goto play_move_down::@3 +Simple Condition (bool~) play_move_down::$10 if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@5 +Simple Condition (bool~) play_move_down::$13 if((byte~) play_move_down::$12==(byte) COLLISION_NONE#0) goto play_move_down::@6 +Simple Condition (bool~) play_move_leftright::$0 if((byte) play_move_leftright::key_event#0==(byte) KEY_COMMA#0) goto play_move_leftright::@1 +Simple Condition (bool~) play_move_leftright::$10 if((byte~) play_move_leftright::$8!=(byte) COLLISION_NONE#0) goto play_move_leftright::@5 +Simple Condition (bool~) play_move_leftright::$2 if((byte) play_move_leftright::key_event#0!=(byte) KEY_DOT#0) goto play_move_leftright::@2 +Simple Condition (bool~) play_move_leftright::$6 if((byte~) play_move_leftright::$4!=(byte) COLLISION_NONE#0) goto play_move_leftright::@3 +Simple Condition (bool~) play_move_rotate::$0 if((byte) play_move_rotate::key_event#0==(byte) KEY_Z#0) goto play_move_rotate::@1 +Simple Condition (bool~) play_move_rotate::$1 if((byte) play_move_rotate::key_event#0==(byte) KEY_X#0) goto play_move_rotate::@2 +Simple Condition (bool~) play_move_rotate::$10 if((byte~) play_move_rotate::$8!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@5 +Simple Condition (bool~) collision::$3 if(*((byte*) collision::piece_gfx#2 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 Simple Condition (bool~) collision::$14 if((byte) collision::c#1!=rangelast(0,3)) goto collision::@2 -Simple Condition (bool~) collision::$5 if((byte) collision::line#0<(byte) PLAYFIELD_LINES#0) goto collision::@4 +Simple Condition (bool~) collision::$6 if((byte) collision::ypos2#2<(byte/signed word/word/dword/signed dword~) collision::$4) goto collision::@4 Simple Condition (bool~) collision::$9 if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -Simple Condition (bool~) collision::$11 if((byte) collision::col#0<(byte) PLAYFIELD_COLS#0) goto collision::@6 -Simple Condition (bool~) collision::$13 if(*((byte*) collision::playfield_line#0 + (byte) collision::col#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@7 +Simple Condition (bool~) collision::$11 if((byte) collision::col#2<(byte) PLAYFIELD_COLS#0) goto collision::@6 +Simple Condition (bool~) collision::$13 if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@7 Simple Condition (bool~) collision::$15 if((byte) collision::l#1!=rangelast(0,3)) goto collision::@1 Simple Condition (bool~) lock_current::$3 if((byte) lock_current::cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 Simple Condition (bool~) lock_current::$5 if((byte) lock_current::c#1!=rangelast(0,3)) goto lock_current::@2 Simple Condition (bool~) lock_current::$6 if((byte) lock_current::l#1!=rangelast(0,3)) goto lock_current::@1 -Simple Condition (bool~) play_moveother::$2 if((byte~) play_moveother::$0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_moveother::@1 -Simple Condition (bool~) play_moveother::$3 if((byte) play_moveother::key_event#0==(byte) KEY_COMMA#0) goto play_moveother::@2 -Simple Condition (bool~) play_moveother::$21 if((byte~) play_moveother::$19!=(byte) COLLISION_NONE#0) goto play_moveother::@10 -Simple Condition (bool~) play_moveother::$4 if((byte) play_moveother::key_event#0==(byte) KEY_DOT#0) goto play_moveother::@3 -Simple Condition (bool~) play_moveother::$17 if((byte~) play_moveother::$15!=(byte) COLLISION_NONE#0) goto play_moveother::@8 -Simple Condition (bool~) play_moveother::$5 if((byte) play_moveother::key_event#0==(byte) KEY_Z#0) goto play_moveother::@4 -Simple Condition (bool~) play_moveother::$7 if((byte) play_moveother::key_event#0!=(byte) KEY_X#0) goto play_moveother::@5 Simple Condition (bool~) init::$6 if((byte) init::i#1!=rangelast(0,init::$4)) goto init::@1 Simple Condition (bool~) init::$9 if((byte) init::j#1!=rangelast(0,init::$7)) goto init::@2 Simple Condition (bool~) init::$14 if((byte) init::c#1!=rangelast(0,init::$12)) goto init::@4 Simple Condition (bool~) init::$15 if((byte) init::l#1!=rangelast(0,init::$11)) goto init::@3 -Simple Condition (bool~) render_playfield::$4 if((byte) render_playfield::c#1!=rangelast(0,render_playfield::$2)) goto render_playfield::@2 -Simple Condition (bool~) render_playfield::$5 if((byte) render_playfield::l#1!=rangelast(0,render_playfield::$0)) goto render_playfield::@1 -Simple Condition (bool~) render_current::$2 if((byte) render_current::line#0>=(byte) PLAYFIELD_LINES#0) goto render_current::@2 -Simple Condition (bool~) render_current::$10 if((byte) render_current::l#1!=rangelast(0,3)) goto render_current::@1 +Simple Condition (bool~) render_playfield::$3 if((byte) render_playfield::c#1!=rangelast(0,render_playfield::$2)) goto render_playfield::@2 +Simple Condition (bool~) render_playfield::$4 if((byte) render_playfield::l#1!=rangelast(0,render_playfield::$0)) goto render_playfield::@1 +Simple Condition (bool~) render_current::$3 if((byte) render_current::ypos2#2>=(byte/signed word/word/dword/signed dword~) render_current::$1) goto render_current::@2 +Simple Condition (bool~) render_current::$9 if((byte) render_current::l#1!=rangelast(0,3)) goto render_current::@1 Simple Condition (bool~) render_current::$5 if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -Simple Condition (bool~) render_current::$9 if((byte) render_current::c#1!=rangelast(0,3)) goto render_current::@3 -Simple Condition (bool~) render_current::$8 if((byte) render_current::xpos#0>=(byte) PLAYFIELD_COLS#0) goto render_current::@5 +Simple Condition (bool~) render_current::$8 if((byte) render_current::c#1!=rangelast(0,3)) goto render_current::@3 +Simple Condition (bool~) render_current::$7 if((byte) render_current::xpos#2>=(byte) PLAYFIELD_COLS#0) goto render_current::@5 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) RASTER#0 = ((byte*))53266 Constant (const byte*) BORDERCOL#0 = ((byte*))53280 @@ -3579,10 +3660,17 @@ Constant (const byte) current_movedown_rate#0 = 50 Constant (const byte) current_movedown_rate_fast#0 = 5 Constant (const byte) current_movedown_counter#0 = 0 Constant (const byte) main::render#0 = 0 -Constant (const byte) play_movedown::movedown#0 = 0 -Constant (const byte) play_movedown::return#1 = 0 +Constant (const byte) play_move_down::movedown#0 = 0 +Constant (const byte) play_move_down::return#1 = 0 Constant (const byte) current_movedown_counter#4 = 0 -Constant (const byte) play_movedown::return#2 = 1 +Constant (const byte) play_move_down::return#2 = 1 +Constant (const byte) play_move_leftright::return#1 = 1 +Constant (const byte) play_move_leftright::return#3 = 0 +Constant (const byte) play_move_leftright::return#4 = 1 +Constant (const byte) play_move_rotate::orientation#0 = 128 +Constant (const byte) play_move_rotate::return#1 = 0 +Constant (const byte) play_move_rotate::return#3 = 0 +Constant (const byte) play_move_rotate::return#4 = 1 Constant (const byte) COLLISION_NONE#0 = 0 Constant (const byte) COLLISION_PLAYFIELD#0 = 1 Constant (const byte) COLLISION_BOTTOM#0 = 2 @@ -3594,10 +3682,9 @@ Constant (const byte) collision::c#0 = 0 Constant (const byte) lock_current::i#0 = 0 Constant (const byte) lock_current::l#0 = 0 Constant (const byte) lock_current::c#0 = 0 -Constant (const byte) current_piece_orientation#19 = 0 -Constant (const byte) current_xpos#21 = 3 -Constant (const byte) current_ypos#18 = 0 -Constant (const byte) play_moveother::render#0 = 0 +Constant (const byte) current_piece_orientation#10 = 0 +Constant (const byte) current_xpos#10 = 3 +Constant (const byte) current_ypos#21 = 0 Constant (const word) fill::size#0 = 1000 Constant (const byte) fill::val#0 = 160 Constant (const word) fill::size#1 = 1000 @@ -3623,18 +3710,16 @@ Constant (const byte) $1 = PLAYFIELD_LINES#0*PLAYFIELD_COLS#0 Constant (const byte/signed word/word/dword/signed dword) $2 = PLAYFIELD_LINES#0+3 Constant (const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 = { fill( PLAYFIELD_LINES#0, 0) } Constant (const byte) keyboard_event_pressed::keycode#4 = KEY_SPACE#0 -Constant (const byte) play_movedown::movedown#1 = ++play_movedown::movedown#0 -Constant (const byte) collision::return#1 = COLLISION_BOTTOM#0 -Constant (const byte) collision::return#3 = COLLISION_LEFT#0 -Constant (const byte) collision::return#4 = COLLISION_RIGHT#0 -Constant (const byte) collision::return#5 = COLLISION_PLAYFIELD#0 -Constant (const byte) collision::return#6 = COLLISION_NONE#0 -Constant (const byte*) current_piece#14 = piece_t#0 +Constant (const byte) play_move_down::movedown#1 = ++play_move_down::movedown#0 +Constant (const byte) play_move_rotate::$7 = COLLISION_LEFT#0|COLLISION_RIGHT#0 +Constant (const byte/signed word/word/dword/signed dword) collision::$4 = 2*PLAYFIELD_LINES#0 +Constant (const byte) collision::return#4 = COLLISION_BOTTOM#0 +Constant (const byte) collision::return#6 = COLLISION_LEFT#0 +Constant (const byte) collision::return#7 = COLLISION_RIGHT#0 +Constant (const byte) collision::return#8 = COLLISION_PLAYFIELD#0 +Constant (const byte) collision::return#9 = COLLISION_NONE#0 +Constant (const byte*) current_piece#16 = piece_t#0 Constant (const byte) current_piece_color#15 = GREEN#0 -Constant (const byte) play_moveother::render#1 = ++play_moveother::render#0 -Constant (const byte) play_moveother::render#2 = ++play_moveother::render#0 -Constant (const byte) play_moveother::render#3 = ++play_moveother::render#0 -Constant (const byte) play_moveother::render#4 = ++play_moveother::render#0 Constant (const byte*) fill::start#0 = SCREEN#0 Constant (const byte*) fill::start#1 = COLS#0 Constant (const byte) fill::val#1 = BLACK#0 @@ -3646,11 +3731,12 @@ Constant (const byte/signed word/word/dword/signed dword) init::$11 = PLAYFIELD_ Constant (const byte/signed word/word/dword/signed dword) init::$12 = PLAYFIELD_COLS#0+1 Constant (const byte/signed word/word/dword/signed dword) render_playfield::$0 = PLAYFIELD_LINES#0-1 Constant (const byte/signed word/word/dword/signed dword) render_playfield::$2 = PLAYFIELD_COLS#0-1 +Constant (const byte/signed word/word/dword/signed dword) render_current::$1 = 2*PLAYFIELD_LINES#0 Constant (const byte/signed word/word/dword/signed dword/signed byte) $4 = $3*4 Successful SSA optimization Pass2ConstantIdentification Constant (const byte[$1]) playfield#0 = { fill( $1, 0) } Constant (const byte*[$2]) screen_lines#0 = { fill( $2, 0) } -Constant (const byte*) current_piece_gfx#21 = current_piece#14+current_piece_orientation#19 +Constant (const byte*) current_piece_gfx#10 = current_piece#16+current_piece_orientation#10 Constant (const byte*) init::li#0 = init::$2+15 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) init::pli#0 = playfield#0 @@ -3675,7 +3761,7 @@ Resolved ranged next value keyboard_event_scan::col#1 ← ++ keyboard_event_scan Resolved ranged comparison value if(keyboard_event_scan::col#1!=rangelast(0,7)) goto keyboard_event_scan::@4 to (byte/signed byte/word/signed word/dword/signed dword) 8 Resolved ranged next value collision::c#1 ← ++ collision::c#2 to ++ Resolved ranged comparison value if(collision::c#1!=rangelast(0,3)) goto collision::@2 to (byte/signed byte/word/signed word/dword/signed dword) 4 -Resolved ranged next value collision::l#1 ← ++ collision::l#2 to ++ +Resolved ranged next value collision::l#1 ← ++ collision::l#6 to ++ Resolved ranged comparison value if(collision::l#1!=rangelast(0,3)) goto collision::@1 to (byte/signed byte/word/signed word/dword/signed dword) 4 Resolved ranged next value lock_current::c#1 ← ++ lock_current::c#2 to ++ Resolved ranged comparison value if(lock_current::c#1!=rangelast(0,3)) goto lock_current::@2 to (byte/signed byte/word/signed word/dword/signed dword) 4 @@ -3693,7 +3779,7 @@ Resolved ranged next value render_playfield::c#1 ← ++ render_playfield::c#2 to Resolved ranged comparison value if(render_playfield::c#1!=rangelast(0,render_playfield::$2)) goto render_playfield::@2 to (const byte/signed word/word/dword/signed dword) render_playfield::$2+(byte/signed byte/word/signed word/dword/signed dword) 1 Resolved ranged next value render_playfield::l#1 ← ++ render_playfield::l#2 to ++ Resolved ranged comparison value if(render_playfield::l#1!=rangelast(0,render_playfield::$0)) goto render_playfield::@1 to (const byte/signed word/word/dword/signed dword) render_playfield::$0+(byte/signed byte/word/signed word/dword/signed dword) 1 -Resolved ranged next value render_current::l#1 ← ++ render_current::l#2 to ++ +Resolved ranged next value render_current::l#1 ← ++ render_current::l#3 to ++ Resolved ranged comparison value if(render_current::l#1!=rangelast(0,3)) goto render_current::@1 to (byte/signed byte/word/signed word/dword/signed dword) 4 Resolved ranged next value render_current::c#1 ← ++ render_current::c#2 to ++ Resolved ranged comparison value if(render_current::c#1!=rangelast(0,3)) goto render_current::@3 to (byte/signed byte/word/signed word/dword/signed dword) 4 @@ -3708,48 +3794,47 @@ Culled Empty Block (label) main::@24 Culled Empty Block (label) main::@2 Culled Empty Block (label) main::@5 Culled Empty Block (label) main::@8 -Culled Empty Block (label) play_movedown::@3 -Culled Empty Block (label) play_movedown::@5 -Culled Empty Block (label) play_movedown::@20 -Culled Empty Block (label) @13 +Culled Empty Block (label) play_move_down::@3 +Culled Empty Block (label) play_move_down::@5 +Culled Empty Block (label) play_move_down::@20 +Culled Empty Block (label) play_move_leftright::@2 +Culled Empty Block (label) play_move_leftright::@3 +Culled Empty Block (label) play_move_leftright::@4 +Culled Empty Block (label) play_move_leftright::@5 +Culled Empty Block (label) play_move_rotate::@7 +Culled Empty Block (label) play_move_rotate::@5 +Culled Empty Block (label) @15 Culled Empty Block (label) collision::@9 Culled Empty Block (label) collision::@11 Culled Empty Block (label) collision::@13 Culled Empty Block (label) collision::@7 Culled Empty Block (label) collision::@15 Culled Empty Block (label) collision::@18 -Culled Empty Block (label) play_moveother::@5 -Culled Empty Block (label) play_moveother::@8 -Culled Empty Block (label) play_moveother::@10 Culled Empty Block (label) init::@10 Culled Empty Block (label) init::@5 Culled Empty Block (label) init::@6 Culled Empty Block (label) render_current::@5 -Culled Empty Block (label) @21 +Culled Empty Block (label) @22 Successful SSA optimization Pass2CullEmptyBlocks -Self Phi Eliminated (byte) collision::ypos#3 -Self Phi Eliminated (byte*) current_piece_gfx#31 -Self Phi Eliminated (byte) collision::xpos#6 -Self Phi Eliminated (byte) current_ypos#17 -Self Phi Eliminated (byte*) current_piece_gfx#33 -Self Phi Eliminated (byte) current_xpos#52 +Self Phi Eliminated (byte) collision::col#0 +Self Phi Eliminated (byte*) collision::piece_gfx#2 +Self Phi Eliminated (byte) current_ypos#20 +Self Phi Eliminated (byte*) current_piece_gfx#32 +Self Phi Eliminated (byte) current_xpos#60 Self Phi Eliminated (byte) current_piece_color#34 -Self Phi Eliminated (byte) current_ypos#21 -Self Phi Eliminated (byte*) current_piece_gfx#37 -Self Phi Eliminated (byte) current_xpos#61 +Self Phi Eliminated (byte) current_xpos#28 +Self Phi Eliminated (byte*) current_piece_gfx#35 Self Phi Eliminated (byte) current_piece_color#48 Successful SSA optimization Pass2SelfPhiElimination -Redundant Phi (byte) collision::ypos#3 (byte) collision::ypos#4 -Redundant Phi (byte*) current_piece_gfx#31 (byte*) current_piece_gfx#46 -Redundant Phi (byte) collision::xpos#6 (byte) collision::xpos#8 -Redundant Phi (byte) current_ypos#17 (byte) current_ypos#12 -Redundant Phi (byte*) current_piece_gfx#33 (byte*) current_piece_gfx#16 -Redundant Phi (byte) current_xpos#52 (byte) current_xpos#16 +Redundant Phi (byte) collision::col#0 (byte) collision::xpos#5 +Redundant Phi (byte*) collision::piece_gfx#2 (byte*) collision::piece_gfx#0 +Redundant Phi (byte) current_ypos#20 (byte) current_ypos#12 +Redundant Phi (byte*) current_piece_gfx#32 (byte*) current_piece_gfx#15 +Redundant Phi (byte) current_xpos#60 (byte) current_xpos#16 Redundant Phi (byte) current_piece_color#34 (byte) current_piece_color#11 -Redundant Phi (byte) current_ypos#21 (byte) current_ypos#35 -Redundant Phi (byte*) current_piece_gfx#37 (byte*) current_piece_gfx#75 -Redundant Phi (byte) current_xpos#61 (byte) current_xpos#81 -Redundant Phi (byte) current_piece_color#48 (byte) current_piece_color#62 +Redundant Phi (byte) current_xpos#28 (byte) current_xpos#62 +Redundant Phi (byte*) current_piece_gfx#35 (byte*) current_piece_gfx#61 +Redundant Phi (byte) current_piece_color#48 (byte) current_piece_color#63 Successful SSA optimization Pass2RedundantPhiElimination Inlining constant with var siblings (const word) fill::size#0 Inlining constant with var siblings (const byte) fill::val#0 @@ -3765,26 +3850,27 @@ Inlining constant with var siblings (const byte) keyboard_event_pressed::keycode Inlining constant with var siblings (const byte) keyboard_event_pressed::keycode#4 Inlining constant with var siblings (const byte) keyboard_event_get::return#0 Inlining constant with var siblings (const byte) main::render#0 -Inlining constant with var siblings (const byte) play_movedown::movedown#0 -Inlining constant with var siblings (const byte) play_movedown::return#1 -Inlining constant with var siblings (const byte) play_movedown::return#2 -Inlining constant with var siblings (const byte) play_movedown::movedown#1 +Inlining constant with var siblings (const byte) play_move_down::movedown#0 +Inlining constant with var siblings (const byte) play_move_down::return#1 +Inlining constant with var siblings (const byte) play_move_down::return#2 +Inlining constant with var siblings (const byte) play_move_down::movedown#1 +Inlining constant with var siblings (const byte) play_move_leftright::return#1 +Inlining constant with var siblings (const byte) play_move_leftright::return#3 +Inlining constant with var siblings (const byte) play_move_leftright::return#4 +Inlining constant with var siblings (const byte) play_move_rotate::return#1 +Inlining constant with var siblings (const byte) play_move_rotate::return#3 +Inlining constant with var siblings (const byte) play_move_rotate::return#4 Inlining constant with var siblings (const byte) collision::i#0 Inlining constant with var siblings (const byte) collision::l#0 Inlining constant with var siblings (const byte) collision::c#0 -Inlining constant with var siblings (const byte) collision::return#1 -Inlining constant with var siblings (const byte) collision::return#3 Inlining constant with var siblings (const byte) collision::return#4 -Inlining constant with var siblings (const byte) collision::return#5 Inlining constant with var siblings (const byte) collision::return#6 +Inlining constant with var siblings (const byte) collision::return#7 +Inlining constant with var siblings (const byte) collision::return#8 +Inlining constant with var siblings (const byte) collision::return#9 Inlining constant with var siblings (const byte) lock_current::i#0 Inlining constant with var siblings (const byte) lock_current::l#0 Inlining constant with var siblings (const byte) lock_current::c#0 -Inlining constant with different constant siblings (const byte) play_moveother::render#0 -Inlining constant with different constant siblings (const byte) play_moveother::render#1 -Inlining constant with different constant siblings (const byte) play_moveother::render#2 -Inlining constant with different constant siblings (const byte) play_moveother::render#3 -Inlining constant with different constant siblings (const byte) play_moveother::render#4 Inlining constant with var siblings (const byte) init::i#0 Inlining constant with var siblings (const byte) init::j#0 Inlining constant with var siblings (const byte) init::l#0 @@ -3801,15 +3887,21 @@ Inlining constant with var siblings (const byte) render_current::c#0 Inlining constant with var siblings (const byte) keyboard_events_size#0 Inlining constant with var siblings (const byte) current_movedown_counter#0 Inlining constant with var siblings (const byte) current_movedown_counter#4 -Inlining constant with var siblings (const byte) current_piece_orientation#19 -Inlining constant with var siblings (const byte) current_xpos#21 -Inlining constant with var siblings (const byte) current_ypos#18 -Inlining constant with var siblings (const byte*) current_piece#14 +Inlining constant with var siblings (const byte) current_piece_orientation#10 +Inlining constant with var siblings (const byte) current_xpos#10 +Inlining constant with var siblings (const byte) current_ypos#21 +Inlining constant with var siblings (const byte*) current_piece#16 Inlining constant with var siblings (const byte) current_piece_color#15 -Inlining constant with var siblings (const byte*) current_piece_gfx#21 +Inlining constant with var siblings (const byte*) current_piece_gfx#10 +Constant inlined current_piece_orientation#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined current_xpos#10 = (byte/signed byte/word/signed word/dword/signed dword) 3 +Constant inlined play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_move_rotate::return#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined init::line#0 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 +Constant inlined play_move_rotate::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined init::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined init::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined current_ypos#21 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined init::$12 = (const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined render_current::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined current_movedown_counter#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -3824,9 +3916,11 @@ Constant inlined init::$4 = (const byte) PLAYFIELD_LINES#0+(byte/signed byte/wor Constant inlined fill::start#1 = (const byte*) COLS#0 Constant inlined fill::start#0 = (const byte*) SCREEN#0 Constant inlined render_playfield::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined current_piece_orientation#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_playfield::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined current_piece#14 = (const byte[4*4*4]) piece_t#0 +Constant inlined current_piece#16 = (const byte[4*4*4]) piece_t#0 +Constant inlined play_move_leftright::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined play_move_leftright::return#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined play_move_leftright::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined fill::size#1 = (word/signed word/dword/signed dword) 1000 Constant inlined fill::size#0 = (word/signed word/dword/signed dword) 1000 Constant inlined keyboard_event_scan::keycode#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -3834,9 +3928,14 @@ Constant inlined current_piece_color#15 = (const byte) GREEN#0 Constant inlined lock_current::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined init::$2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40 Constant inlined collision::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined current_piece_gfx#10 = (const byte[4*4*4]) piece_t#0+(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined init::pli#0 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 Constant inlined fill::val#0 = (byte/word/signed word/dword/signed dword) 160 Constant inlined init::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined collision::return#9 = (const byte) COLLISION_NONE#0 +Constant inlined play_move_down::movedown#1 = ++(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined play_move_rotate::$7 = (const byte) COLLISION_LEFT#0|(const byte) COLLISION_RIGHT#0 +Constant inlined play_move_down::movedown#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_current::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 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 @@ -3844,48 +3943,35 @@ Constant inlined init::i#0 = (byte/signed byte/word/signed word/dword/signed dwo 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 collision::return#1 = (const byte) COLLISION_BOTTOM#0 Constant inlined render_playfield::$0 = (const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined collision::return#4 = (const byte) COLLISION_RIGHT#0 -Constant inlined play_movedown::movedown#1 = ++(byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined collision::return#3 = (const byte) COLLISION_LEFT#0 -Constant inlined play_movedown::movedown#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined collision::return#6 = (const byte) COLLISION_NONE#0 -Constant inlined collision::return#5 = (const byte) COLLISION_PLAYFIELD#0 +Constant inlined collision::return#4 = (const byte) COLLISION_BOTTOM#0 +Constant inlined collision::return#6 = (const byte) COLLISION_LEFT#0 +Constant inlined collision::return#8 = (const byte) COLLISION_PLAYFIELD#0 Constant inlined collision::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined current_piece_gfx#21 = (const byte[4*4*4]) piece_t#0+(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined collision::return#7 = (const byte) COLLISION_RIGHT#0 Constant inlined render_playfield::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined play_moveother::render#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined current_ypos#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined current_xpos#21 = (byte/signed byte/word/signed word/dword/signed dword) 3 +Constant inlined collision::$4 = (byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0 Constant inlined keyboard_event_pressed::keycode#4 = (const byte) KEY_SPACE#0 Constant inlined main::render#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined init::li#0 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 Constant inlined keyboard_event_pressed::keycode#3 = (const byte) KEY_COMMODORE#0 -Constant inlined play_moveother::render#4 = ++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined keyboard_event_pressed::keycode#2 = (const byte) KEY_CTRL#0 -Constant inlined play_moveother::render#3 = ++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined keyboard_event_pressed::keycode#1 = (const byte) KEY_RSHIFT#0 Constant inlined lock_current::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined play_moveother::render#2 = ++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined keyboard_event_pressed::keycode#0 = (const byte) KEY_LSHIFT#0 -Constant inlined play_moveother::render#1 = ++(byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined render_current::$1 = (byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0 +Constant inlined play_move_down::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined play_move_down::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined collision::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined 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 play_movedown::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined keyboard_events_size#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined play_movedown::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 Successful SSA optimization Pass2ConstantInlining Identical Phi Values (word) fill::size#2 (word/signed word/dword/signed dword) 1000 Successful SSA optimization Pass2IdenticalPhiElimination Simplifying constant plus zero piece_t#0+0 Simplifying constant integer increment ++0 Simplifying constant plus zero piece_t#0+0 -Simplifying constant integer increment ++0 -Simplifying constant integer increment ++0 -Simplifying constant integer increment ++0 -Simplifying constant integer increment ++0 Simplifying constant plus zero piece_t#0+0 Successful SSA optimization Pass2ConstantSimplification Added new block during phi lifting render_current::@11(between render_current::@2 and render_current::@1) @@ -3894,21 +3980,23 @@ Added new block during phi lifting render_current::@13(between render_current::@ Added new block during phi lifting render_current::@14(between render_current::@4 and render_current::@2) Added new block during phi lifting render_playfield::@5(between render_playfield::@3 and render_playfield::@1) Added new block during phi lifting render_playfield::@6(between render_playfield::@2 and render_playfield::@2) -Added new block during phi lifting play_moveother::@24(between play_moveother and play_moveother::@1) -Added new block during phi lifting play_moveother::@25(between play_moveother::@22 and play_moveother::@1) -Added new block during phi lifting play_moveother::@26(between play_moveother::@14 and play_moveother::@1) -Added new block during phi lifting play_moveother::@27(between play_moveother::@23 and play_moveother::@1) -Fixing phi predecessor for play_moveother::return#1 to new block ( play_moveother -> play_moveother::@24 ) during phi lifting. -Fixing phi predecessor for play_moveother::return#1 to new block ( play_moveother::@22 -> play_moveother::@25 ) during phi lifting. -Fixing phi predecessor for play_moveother::return#1 to new block ( play_moveother::@14 -> play_moveother::@26 ) during phi lifting. -Fixing phi predecessor for play_moveother::return#1 to new block ( play_moveother::@23 -> play_moveother::@27 ) during phi lifting. +Added new block during phi lifting play_move_rotate::@15(between play_move_rotate::@14 and play_move_rotate::@return) +Added new block during phi lifting play_move_rotate::@16(between play_move_rotate::@6 and play_move_rotate::@return) +Fixing phi predecessor for play_move_rotate::return#2 to new block ( play_move_rotate::@14 -> play_move_rotate::@15 ) during phi lifting. +Fixing phi predecessor for play_move_rotate::return#2 to new block ( play_move_rotate::@6 -> play_move_rotate::@16 ) during phi lifting. Added new block during phi lifting collision::@20(between collision::@17 and collision::@1) Added new block during phi lifting collision::@21(between collision::@3 and collision::@2) -Added new block during phi lifting play_movedown::@21(between play_movedown::@17 and play_movedown::@2) -Added new block during phi lifting play_movedown::@22(between play_movedown::@9 and play_movedown::@2) -Added new block during phi lifting play_movedown::@23(between play_movedown::@2 and play_movedown::@4) -Added new block during phi lifting play_movedown::@24(between play_movedown::@4 and play_movedown::@return) -Fixing phi predecessor for play_movedown::return#3 to new block ( play_movedown::@4 -> play_movedown::@24 ) during phi lifting. +Added new block during phi lifting play_move_leftright::@16(between play_move_leftright::@15 and play_move_leftright::@return) +Added new block during phi lifting play_move_leftright::@17(between play_move_leftright::@14 and play_move_leftright::@return) +Added new block during phi lifting play_move_leftright::@18(between play_move_leftright::@6 and play_move_leftright::@return) +Fixing phi predecessor for play_move_leftright::return#2 to new block ( play_move_leftright::@15 -> play_move_leftright::@16 ) during phi lifting. +Fixing phi predecessor for play_move_leftright::return#2 to new block ( play_move_leftright::@14 -> play_move_leftright::@17 ) during phi lifting. +Fixing phi predecessor for play_move_leftright::return#2 to new block ( play_move_leftright::@6 -> play_move_leftright::@18 ) during phi lifting. +Added new block during phi lifting play_move_down::@21(between play_move_down::@17 and play_move_down::@2) +Added new block during phi lifting play_move_down::@22(between play_move_down::@9 and play_move_down::@2) +Added new block during phi lifting play_move_down::@23(between play_move_down::@2 and play_move_down::@4) +Added new block during phi lifting play_move_down::@24(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::@24 ) during phi lifting. 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) @@ -3925,16 +4013,16 @@ Added new block during phi lifting init::@13(between init::@7 and init::@3) Added new block during phi lifting init::@14(between init::@4 and init::@4) Added new block during phi lifting fill::@3(between fill::@1 and fill::@1) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @20 +Adding NOP phi() at start of @21 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@21 Adding NOP phi() at start of main::@22 Adding NOP phi() at start of main::@23 Adding NOP phi() at start of main::@25 Adding NOP phi() at start of render_playfield -Adding NOP phi() at start of play_movedown::@8 -Adding NOP phi() at start of play_movedown::@13 -Adding NOP phi() at start of play_movedown::@19 +Adding NOP phi() at start of play_move_down::@8 +Adding NOP phi() at start of play_move_down::@13 +Adding NOP phi() at start of play_move_down::@19 Adding NOP phi() at start of spawn_current Adding NOP phi() at start of lock_current Adding NOP phi() at start of keyboard_event_scan::@20 @@ -3949,148 +4037,156 @@ Adding NOP phi() at start of init Adding NOP phi() at start of init::@9 CALL GRAPH Calls in [] to main:2 -Calls in [main] to init:5 spawn_current:7 render_playfield:9 render_current:11 keyboard_event_scan:16 keyboard_event_get:18 play_movedown:22 play_moveother:27 render_playfield:33 render_current:38 -Calls in [play_moveother] to collision:121 collision:137 -Calls in [play_movedown] to keyboard_event_pressed:180 collision:198 lock_current:203 spawn_current:205 -Calls in [keyboard_event_scan] to keyboard_matrix_read:272 keyboard_event_pressed:283 keyboard_event_pressed:289 keyboard_event_pressed:295 keyboard_event_pressed:301 -Calls in [init] to fill:342 fill:344 +Calls in [main] to init:5 spawn_current:7 render_playfield:9 render_current:11 keyboard_event_scan:16 keyboard_event_get:18 play_move_down:22 play_move_leftright:27 play_move_rotate:32 render_playfield:38 render_current:43 +Calls in [play_move_rotate] to collision:122 +Calls in [play_move_leftright] to collision:175 collision:192 +Calls in [play_move_down] to keyboard_event_pressed:203 collision:223 lock_current:228 spawn_current:230 +Calls in [keyboard_event_scan] to keyboard_matrix_read:297 keyboard_event_pressed:308 keyboard_event_pressed:314 keyboard_event_pressed:320 keyboard_event_pressed:326 +Calls in [init] to fill:367 fill:369 -Created 76 initial phi equivalence classes -Not coalescing [34] current_ypos#75 ← current_ypos#16 -Not coalescing [35] current_piece_gfx#99 ← current_piece_gfx#11 -Not coalescing [36] current_xpos#91 ← current_xpos#11 -Not coalescing [37] current_piece_color#69 ← current_piece_color#13 -Coalesced [41] current_piece#60 ← current_piece#13 -Coalesced [42] current_piece_orientation#75 ← current_piece_orientation#11 -Coalesced [43] current_piece_gfx#98 ← current_piece_gfx#11 -Coalesced [44] current_piece_color#68 ← current_piece_color#13 -Coalesced [45] current_xpos#90 ← current_xpos#11 -Coalesced [46] current_ypos#74 ← current_ypos#16 -Coalesced [47] keyboard_events_size#67 ← keyboard_events_size#16 -Coalesced [48] current_movedown_counter#43 ← current_movedown_counter#12 -Coalesced [55] render_current::i#12 ← render_current::i#4 -Coalesced [65] render_current::i#14 ← render_current::i#1 -Coalesced [70] render_current::l#10 ← render_current::l#1 -Coalesced [71] render_current::i#10 ← render_current::i#8 -Coalesced (already) [72] render_current::i#11 ← render_current::i#1 -Coalesced [73] render_current::c#7 ← render_current::c#1 -Coalesced (already) [74] render_current::i#13 ← render_current::i#4 -Coalesced [79] render_playfield::i#6 ← render_playfield::i#3 -Coalesced [89] render_playfield::l#5 ← render_playfield::l#1 -Coalesced [90] render_playfield::i#5 ← render_playfield::i#1 -Coalesced [91] render_playfield::c#3 ← render_playfield::c#1 -Coalesced (already) [92] render_playfield::i#7 ← render_playfield::i#1 -Coalesced [102] current_piece_orientation#78 ← current_piece_orientation#10 -Coalesced [103] current_piece_gfx#102 ← current_piece_gfx#10 -Coalesced [104] current_xpos#94 ← current_xpos#19 -Coalesced [107] current_piece_orientation#82 ← current_piece_orientation#18 -Coalesced [108] current_piece_gfx#106 ← current_piece_gfx#18 -Coalesced (already) [109] current_xpos#98 ← current_xpos#19 -Coalesced [113] current_piece_orientation#81 ← current_piece_orientation#9 -Coalesced [114] current_piece_gfx#105 ← current_piece_gfx#9 -Coalesced (already) [115] current_xpos#97 ← current_xpos#19 -Coalesced [118] collision::ypos#15 ← collision::ypos#2 -Not coalescing [119] current_piece_gfx#110 ← current_piece_gfx#18 -Coalesced [120] collision::xpos#15 ← collision::xpos#2 -Coalesced (already) [126] current_piece_orientation#79 ← current_piece_orientation#18 -Coalesced (already) [127] current_piece_gfx#103 ← current_piece_gfx#18 -Coalesced [128] current_xpos#95 ← current_xpos#9 -Coalesced (already) [129] current_piece_orientation#83 ← current_piece_orientation#18 -Coalesced (already) [130] current_piece_gfx#107 ← current_piece_gfx#18 -Coalesced (already) [131] current_xpos#99 ← current_xpos#19 -Coalesced [134] collision::ypos#14 ← collision::ypos#1 -Not coalescing [135] current_piece_gfx#109 ← current_piece_gfx#18 -Coalesced [136] collision::xpos#14 ← collision::xpos#1 -Coalesced (already) [142] current_piece_orientation#80 ← current_piece_orientation#18 -Coalesced (already) [143] current_piece_gfx#104 ← current_piece_gfx#18 -Coalesced [144] current_xpos#96 ← current_xpos#10 -Coalesced (already) [145] current_piece_orientation#77 ← current_piece_orientation#18 -Coalesced (already) [146] current_piece_gfx#101 ← current_piece_gfx#18 -Coalesced (already) [147] current_xpos#93 ← current_xpos#19 -Coalesced (already) [148] current_piece_orientation#76 ← current_piece_orientation#18 -Coalesced (already) [149] current_piece_gfx#100 ← current_piece_gfx#18 -Coalesced (already) [150] current_xpos#92 ← current_xpos#19 -Coalesced [156] collision::i#12 ← collision::i#3 -Coalesced [172] collision::l#11 ← collision::l#1 -Not coalescing [173] collision::i#11 ← collision::i#1 -Not coalescing [174] collision::i#13 ← collision::i#1 -Coalesced [175] collision::c#9 ← collision::c#1 -Coalesced [186] play_movedown::movedown#13 ← play_movedown::movedown#2 -Coalesced [190] play_movedown::movedown#16 ← play_movedown::movedown#3 -Coalesced [195] collision::ypos#13 ← collision::ypos#0 -Not coalescing [196] current_piece_gfx#108 ← current_piece_gfx#16 -Coalesced [197] collision::xpos#13 ← collision::xpos#0 -Coalesced [207] current_ypos#78 ← current_ypos#30 -Coalesced [208] current_piece#63 ← current_piece#23 -Coalesced [209] current_piece_orientation#86 ← current_piece_orientation#29 -Coalesced [210] current_piece_gfx#113 ← current_piece_gfx#30 -Coalesced [211] current_piece_color#72 ← current_piece_color#23 -Coalesced [212] current_xpos#102 ← current_xpos#35 -Coalesced [216] current_ypos#76 ← current_ypos#4 -Coalesced (already) [217] current_piece#61 ← current_piece#11 -Coalesced (already) [218] current_piece_orientation#84 ← current_piece_orientation#16 -Coalesced (already) [219] current_piece_gfx#111 ← current_piece_gfx#16 -Coalesced (already) [220] current_piece_color#70 ← current_piece_color#11 -Coalesced (already) [221] current_xpos#100 ← current_xpos#16 -Coalesced [222] current_movedown_counter#44 ← current_movedown_counter#10 -Coalesced (already) [223] current_ypos#77 ← current_ypos#12 -Coalesced (already) [224] current_piece#62 ← current_piece#11 -Coalesced (already) [225] current_piece_orientation#85 ← current_piece_orientation#16 -Coalesced (already) [226] current_piece_gfx#112 ← current_piece_gfx#16 -Coalesced (already) [227] current_piece_color#71 ← current_piece_color#11 -Coalesced (already) [228] current_xpos#101 ← current_xpos#16 -Coalesced [229] play_movedown::movedown#17 ← play_movedown::movedown#7 -Coalesced [230] play_movedown::movedown#15 ← play_movedown::movedown#10 -Coalesced (already) [231] play_movedown::movedown#14 ← play_movedown::movedown#10 -Coalesced [239] lock_current::i#8 ← lock_current::i#3 -Coalesced [251] lock_current::l#7 ← lock_current::l#1 -Coalesced [252] lock_current::i#7 ← lock_current::i#1 -Coalesced (already) [253] lock_current::i#9 ← lock_current::i#1 -Coalesced [254] lock_current::c#5 ← lock_current::c#1 -Coalesced [264] keyboard_event_get::return#6 ← keyboard_event_get::return#1 -Coalesced [265] keyboard_events_size#69 ← keyboard_events_size#4 -Coalesced [268] keyboard_events_size#68 ← keyboard_events_size#13 -Coalesced [269] keyboard_events_size#70 ← keyboard_events_size#19 -Coalesced [277] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 -Coalesced (already) [278] keyboard_events_size#72 ← keyboard_events_size#29 -Coalesced [307] keyboard_event_scan::row#15 ← keyboard_event_scan::row#1 -Coalesced [308] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 -Coalesced (already) [309] keyboard_events_size#71 ← keyboard_events_size#13 -Coalesced [310] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 -Coalesced [311] keyboard_events_size#74 ← keyboard_events_size#29 -Coalesced [321] keyboard_events_size#76 ← keyboard_events_size#2 -Coalesced [327] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#15 -Coalesced [328] keyboard_events_size#73 ← keyboard_events_size#30 -Coalesced [329] keyboard_event_scan::col#9 ← keyboard_event_scan::col#1 -Coalesced (already) [330] keyboard_event_scan::keycode#20 ← keyboard_event_scan::keycode#15 -Coalesced (already) [331] keyboard_events_size#75 ← keyboard_events_size#30 -Coalesced [335] keyboard_events_size#79 ← keyboard_events_size#1 -Coalesced (already) [336] keyboard_events_size#78 ← keyboard_events_size#10 -Coalesced (already) [337] keyboard_events_size#77 ← keyboard_events_size#10 -Coalesced [367] init::line#5 ← init::line#1 -Coalesced [368] init::l#5 ← init::l#1 -Coalesced [369] init::c#3 ← init::c#1 -Coalesced [370] init::j#3 ← init::j#1 -Coalesced [371] init::pli#3 ← init::pli#1 -Coalesced [372] init::i#3 ← init::i#1 -Coalesced [373] init::li#3 ← init::li#1 -Coalesced [376] fill::addr#3 ← fill::addr#0 -Coalesced [382] fill::addr#4 ← fill::addr#1 -Coalesced down to 46 phi equivalence classes +Created 84 initial phi equivalence classes +Not coalescing [39] current_ypos#72 ← current_ypos#16 +Not coalescing [40] current_xpos#92 ← current_xpos#23 +Not coalescing [41] current_piece_gfx#82 ← current_piece_gfx#18 +Not coalescing [42] current_piece_color#70 ← current_piece_color#13 +Coalesced [46] current_piece#66 ← current_piece#13 +Coalesced [47] current_piece_orientation#70 ← current_piece_orientation#23 +Coalesced [48] current_piece_gfx#81 ← current_piece_gfx#18 +Coalesced [49] current_piece_color#69 ← current_piece_color#13 +Coalesced [50] current_xpos#91 ← current_xpos#23 +Coalesced [51] current_ypos#71 ← current_ypos#16 +Coalesced [52] keyboard_events_size#68 ← keyboard_events_size#16 +Coalesced [53] current_movedown_counter#44 ← current_movedown_counter#12 +Coalesced [56] render_current::ypos2#10 ← render_current::ypos2#0 +Coalesced [61] render_current::i#12 ← render_current::i#4 +Coalesced [62] render_current::xpos#8 ← render_current::xpos#0 +Coalesced [72] render_current::i#14 ← render_current::i#1 +Coalesced [78] render_current::ypos2#11 ← render_current::ypos2#1 +Coalesced [79] render_current::l#10 ← render_current::l#1 +Coalesced [80] render_current::i#10 ← render_current::i#8 +Coalesced (already) [81] render_current::i#11 ← render_current::i#1 +Coalesced [82] render_current::xpos#7 ← render_current::xpos#1 +Coalesced [83] render_current::c#7 ← render_current::c#1 +Coalesced (already) [84] render_current::i#13 ← render_current::i#4 +Coalesced [89] render_playfield::i#6 ← render_playfield::i#3 +Coalesced [90] render_playfield::line#3 ← render_playfield::line#0 +Coalesced [100] render_playfield::l#5 ← render_playfield::l#1 +Coalesced [101] render_playfield::i#5 ← render_playfield::i#1 +Coalesced (already) [102] render_playfield::i#7 ← render_playfield::i#1 +Coalesced [103] render_playfield::line#4 ← render_playfield::line#1 +Coalesced [104] render_playfield::c#3 ← render_playfield::c#1 +Coalesced [107] current_piece_orientation#73 ← current_piece_orientation#18 +Coalesced [108] current_piece_gfx#85 ← current_piece_gfx#17 +Coalesced [113] play_move_rotate::orientation#7 ← play_move_rotate::orientation#2 +Not coalescing [118] current_piece#70 ← current_piece#13 +Coalesced [119] collision::orientation#8 ← collision::orientation#3 +Coalesced [120] collision::ypos#8 ← collision::ypos#3 +Coalesced [121] collision::xpos#17 ← collision::xpos#3 +Coalesced [129] current_piece_orientation#71 ← current_piece_orientation#8 +Coalesced [130] current_piece_gfx#83 ← current_piece_gfx#8 +Coalesced (already) [131] current_piece_orientation#72 ← current_piece_orientation#18 +Coalesced (already) [132] current_piece_gfx#84 ← current_piece_gfx#17 +Coalesced [135] play_move_rotate::orientation#6 ← play_move_rotate::orientation#1 +Coalesced [139] collision::ypos2#11 ← collision::ypos2#0 +Coalesced [142] collision::i#12 ← collision::i#3 +Not coalescing [143] collision::col#9 ← collision::xpos#5 +Coalesced [160] collision::ypos2#12 ← collision::ypos2#1 +Not coalescing [161] collision::i#11 ← collision::i#1 +Coalesced [162] collision::l#11 ← collision::l#1 +Not coalescing [163] collision::i#13 ← collision::i#1 +Coalesced [164] collision::col#10 ← collision::col#1 +Coalesced [165] collision::c#9 ← collision::c#1 +Not coalescing [171] current_piece#69 ← current_piece#13 +Coalesced [172] collision::orientation#7 ← collision::orientation#2 +Coalesced [173] collision::ypos#7 ← collision::ypos#2 +Coalesced [174] collision::xpos#16 ← collision::xpos#2 +Coalesced [180] current_xpos#95 ← current_xpos#7 +Coalesced [183] current_xpos#94 ← current_xpos#19 +Coalesced (already) [184] current_xpos#97 ← current_xpos#19 +Not coalescing [188] current_piece#68 ← current_piece#13 +Coalesced [189] collision::orientation#6 ← collision::orientation#1 +Coalesced [190] collision::ypos#6 ← collision::ypos#1 +Coalesced [191] collision::xpos#15 ← collision::xpos#1 +Coalesced [197] current_xpos#93 ← current_xpos#9 +Coalesced (already) [198] current_xpos#96 ← current_xpos#19 +Coalesced [209] play_move_down::movedown#13 ← play_move_down::movedown#2 +Coalesced [213] play_move_down::movedown#16 ← play_move_down::movedown#3 +Not coalescing [219] current_piece#67 ← current_piece#11 +Coalesced [220] collision::orientation#5 ← collision::orientation#0 +Coalesced [221] collision::ypos#5 ← collision::ypos#0 +Coalesced [222] collision::xpos#14 ← collision::xpos#0 +Coalesced [232] current_ypos#75 ← current_ypos#31 +Coalesced [233] current_piece#73 ← current_piece#23 +Coalesced [234] current_piece_orientation#76 ← current_piece_orientation#33 +Coalesced [235] current_piece_gfx#88 ← current_piece_gfx#29 +Coalesced [236] current_piece_color#73 ← current_piece_color#23 +Coalesced [237] current_xpos#100 ← current_xpos#36 +Coalesced [241] current_ypos#73 ← current_ypos#4 +Coalesced (already) [242] current_piece#71 ← current_piece#11 +Coalesced (already) [243] current_piece_orientation#74 ← current_piece_orientation#15 +Coalesced (already) [244] current_piece_gfx#86 ← current_piece_gfx#15 +Coalesced (already) [245] current_piece_color#71 ← current_piece_color#11 +Coalesced (already) [246] current_xpos#98 ← current_xpos#16 +Coalesced [247] current_movedown_counter#45 ← current_movedown_counter#10 +Coalesced (already) [248] current_ypos#74 ← current_ypos#12 +Coalesced (already) [249] current_piece#72 ← current_piece#11 +Coalesced (already) [250] current_piece_orientation#75 ← current_piece_orientation#15 +Coalesced (already) [251] current_piece_gfx#87 ← current_piece_gfx#15 +Coalesced (already) [252] current_piece_color#72 ← current_piece_color#11 +Coalesced (already) [253] current_xpos#99 ← current_xpos#16 +Coalesced [254] play_move_down::movedown#17 ← play_move_down::movedown#7 +Coalesced [255] play_move_down::movedown#15 ← play_move_down::movedown#10 +Coalesced (already) [256] play_move_down::movedown#14 ← play_move_down::movedown#10 +Coalesced [264] lock_current::i#8 ← lock_current::i#3 +Coalesced [276] lock_current::l#7 ← lock_current::l#1 +Coalesced [277] lock_current::i#7 ← lock_current::i#1 +Coalesced (already) [278] lock_current::i#9 ← lock_current::i#1 +Coalesced [279] lock_current::c#5 ← lock_current::c#1 +Coalesced [289] keyboard_event_get::return#6 ← keyboard_event_get::return#1 +Coalesced [290] keyboard_events_size#70 ← keyboard_events_size#4 +Coalesced [293] keyboard_events_size#69 ← keyboard_events_size#13 +Coalesced [294] keyboard_events_size#71 ← keyboard_events_size#19 +Coalesced [302] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 +Coalesced (already) [303] keyboard_events_size#73 ← keyboard_events_size#29 +Coalesced [332] keyboard_event_scan::row#15 ← keyboard_event_scan::row#1 +Coalesced [333] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 +Coalesced (already) [334] keyboard_events_size#72 ← keyboard_events_size#13 +Coalesced [335] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 +Coalesced [336] keyboard_events_size#75 ← keyboard_events_size#29 +Coalesced [346] keyboard_events_size#77 ← keyboard_events_size#2 +Coalesced [352] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#15 +Coalesced [353] keyboard_events_size#74 ← keyboard_events_size#30 +Coalesced [354] keyboard_event_scan::col#9 ← keyboard_event_scan::col#1 +Coalesced (already) [355] keyboard_event_scan::keycode#20 ← keyboard_event_scan::keycode#15 +Coalesced (already) [356] keyboard_events_size#76 ← keyboard_events_size#30 +Coalesced [360] keyboard_events_size#80 ← keyboard_events_size#1 +Coalesced (already) [361] keyboard_events_size#79 ← keyboard_events_size#10 +Coalesced (already) [362] keyboard_events_size#78 ← keyboard_events_size#10 +Coalesced [392] init::line#5 ← init::line#1 +Coalesced [393] init::l#5 ← init::l#1 +Coalesced [394] init::c#3 ← init::c#1 +Coalesced [395] init::j#3 ← init::j#1 +Coalesced [396] init::pli#3 ← init::pli#1 +Coalesced [397] init::i#3 ← init::i#1 +Coalesced [398] init::li#3 ← init::li#1 +Coalesced [401] fill::addr#3 ← fill::addr#0 +Coalesced [407] fill::addr#4 ← fill::addr#1 +Coalesced down to 54 phi equivalence classes Culled Empty Block (label) render_current::@14 Culled Empty Block (label) render_current::@11 Culled Empty Block (label) render_current::@12 Culled Empty Block (label) render_current::@13 Culled Empty Block (label) render_playfield::@5 Culled Empty Block (label) render_playfield::@6 -Culled Empty Block (label) play_moveother::@26 -Culled Empty Block (label) play_moveother::@27 -Culled Empty Block (label) play_moveother::@25 -Culled Empty Block (label) play_moveother::@24 -Culled Empty Block (label) play_movedown::@24 -Culled Empty Block (label) play_movedown::@23 -Culled Empty Block (label) play_movedown::@22 -Culled Empty Block (label) play_movedown::@21 +Culled Empty Block (label) play_move_rotate::@16 +Culled Empty Block (label) play_move_rotate::@15 +Culled Empty Block (label) play_move_leftright::@16 +Culled Empty Block (label) play_move_leftright::@18 +Culled Empty Block (label) play_move_leftright::@17 +Culled Empty Block (label) play_move_down::@24 +Culled Empty Block (label) play_move_down::@23 +Culled Empty Block (label) play_move_down::@22 +Culled Empty Block (label) play_move_down::@21 Culled Empty Block (label) lock_current::@7 Culled Empty Block (label) lock_current::@8 Culled Empty Block (label) keyboard_event_get::@7 @@ -4105,16 +4201,16 @@ Culled Empty Block (label) init::@12 Culled Empty Block (label) init::@11 Culled Empty Block (label) fill::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @20 +Adding NOP phi() at start of @21 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@21 Adding NOP phi() at start of main::@22 Adding NOP phi() at start of main::@23 Adding NOP phi() at start of main::@25 Adding NOP phi() at start of render_playfield -Adding NOP phi() at start of play_movedown::@8 -Adding NOP phi() at start of play_movedown::@13 -Adding NOP phi() at start of play_movedown::@19 +Adding NOP phi() at start of play_move_down::@8 +Adding NOP phi() at start of play_move_down::@13 +Adding NOP phi() at start of play_move_down::@19 Adding NOP phi() at start of spawn_current Adding NOP phi() at start of lock_current Adding NOP phi() at start of keyboard_event_scan @@ -4132,14 +4228,14 @@ Adding NOP phi() at start of init::@9 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@20 -@20: scope:[] from @begin + to:@21 +@21: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @20 +@end: scope:[] from @21 [3] phi() -main: scope:[main] from @20 +main: scope:[main] from @21 asm { sei } [5] call init to:main::@21 @@ -4159,10 +4255,10 @@ main::@1: scope:[main] from main::@10 main::@23 [12] (byte) current_movedown_counter#15 ← phi( main::@10/(byte) current_movedown_counter#12 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [12] (byte) keyboard_events_size#19 ← phi( main::@10/(byte) keyboard_events_size#16 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [12] (byte) current_ypos#12 ← phi( main::@10/(byte) current_ypos#16 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [12] (byte) current_xpos#16 ← phi( main::@10/(byte) current_xpos#11 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 3 ) + [12] (byte) current_xpos#16 ← phi( main::@10/(byte) current_xpos#23 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 3 ) [12] (byte) current_piece_color#11 ← phi( main::@10/(byte) current_piece_color#13 main::@23/(const byte) GREEN#0 ) - [12] (byte*) current_piece_gfx#16 ← phi( main::@10/(byte*) current_piece_gfx#11 main::@23/(const byte[4*4*4]) piece_t#0 ) - [12] (byte) current_piece_orientation#16 ← phi( main::@10/(byte) current_piece_orientation#11 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [12] (byte*) current_piece_gfx#15 ← phi( main::@10/(byte*) current_piece_gfx#18 main::@23/(const byte[4*4*4]) piece_t#0 ) + [12] (byte) current_piece_orientation#15 ← phi( main::@10/(byte) current_piece_orientation#23 main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [12] (byte*) current_piece#11 ← phi( main::@10/(byte*) current_piece#13 main::@23/(const byte[4*4*4]) piece_t#0 ) to:main::@4 main::@4: scope:[main] from main::@1 main::@4 @@ -4182,526 +4278,559 @@ main::@25: scope:[main] from main::@9 to:main::@26 main::@26: scope:[main] from main::@25 [20] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 - [21] (byte) play_movedown::key_event#0 ← (byte) main::key_event#0 - [22] call play_movedown - [23] (byte) play_movedown::return#0 ← (byte) play_movedown::return#3 + [21] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 + [22] call play_move_down + [23] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 to:main::@27 main::@27: scope:[main] from main::@26 - [24] (byte~) main::$8 ← (byte) play_movedown::return#0 + [24] (byte~) main::$8 ← (byte) play_move_down::return#0 [25] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$8 - [26] (byte) play_moveother::key_event#0 ← (byte) main::key_event#0 - [27] call play_moveother - [28] (byte) play_moveother::return#0 ← (byte) play_moveother::return#1 + [26] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 + [27] call play_move_leftright + [28] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 to:main::@28 main::@28: scope:[main] from main::@27 - [29] (byte~) main::$9 ← (byte) play_moveother::return#0 + [29] (byte~) main::$9 ← (byte) play_move_leftright::return#0 [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 - [31] if((byte) main::render#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 - to:main::@19 -main::@19: scope:[main] from main::@28 - [32] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) - [33] call render_playfield + [31] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 + [32] call play_move_rotate + [33] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 to:main::@29 -main::@29: scope:[main] from main::@19 - [34] (byte~) current_ypos#75 ← (byte) current_ypos#16 - [35] (byte*~) current_piece_gfx#99 ← (byte*) current_piece_gfx#11 - [36] (byte~) current_xpos#91 ← (byte) current_xpos#11 - [37] (byte~) current_piece_color#69 ← (byte) current_piece_color#13 - [38] call render_current +main::@29: scope:[main] from main::@28 + [34] (byte~) main::$10 ← (byte) play_move_rotate::return#0 + [35] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$10 + [36] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 + to:main::@19 +main::@19: scope:[main] from main::@29 + [37] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + [38] call render_playfield to:main::@30 -main::@30: scope:[main] from main::@29 - [39] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) +main::@30: scope:[main] from main::@19 + [39] (byte~) current_ypos#72 ← (byte) current_ypos#16 + [40] (byte~) current_xpos#92 ← (byte) current_xpos#23 + [41] (byte*~) current_piece_gfx#82 ← (byte*) current_piece_gfx#18 + [42] (byte~) current_piece_color#70 ← (byte) current_piece_color#13 + [43] call render_current + to:main::@31 +main::@31: scope:[main] from main::@30 + [44] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) to:main::@10 -main::@10: scope:[main] from main::@28 main::@30 - [40] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) +main::@10: scope:[main] from main::@29 main::@31 + [45] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) to:main::@1 -render_current: scope:[render_current] from main::@23 main::@29 - [41] (byte) current_piece_color#62 ← phi( main::@23/(const byte) GREEN#0 main::@29/(byte~) current_piece_color#69 ) - [41] (byte) current_xpos#81 ← phi( main::@23/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@29/(byte~) current_xpos#91 ) - [41] (byte*) current_piece_gfx#75 ← phi( main::@23/(const byte[4*4*4]) piece_t#0 main::@29/(byte*~) current_piece_gfx#99 ) - [41] (byte) current_ypos#35 ← phi( main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@29/(byte~) current_ypos#75 ) +render_current: scope:[render_current] from main::@23 main::@30 + [46] (byte) current_piece_color#63 ← phi( main::@23/(const byte) GREEN#0 main::@30/(byte~) current_piece_color#70 ) + [46] (byte*) current_piece_gfx#61 ← phi( main::@23/(const byte[4*4*4]) piece_t#0 main::@30/(byte*~) current_piece_gfx#82 ) + [46] (byte) current_xpos#62 ← phi( main::@23/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@30/(byte~) current_xpos#92 ) + [46] (byte) current_ypos#22 ← phi( main::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@30/(byte~) current_ypos#72 ) + [47] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:render_current::@1 render_current::@1: scope:[render_current] from render_current render_current::@2 - [42] (byte) render_current::i#4 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::i#8 ) - [42] (byte) render_current::l#2 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::l#1 ) - [43] (byte) render_current::line#0 ← (byte) current_ypos#35 + (byte) render_current::l#2 - [44] if((byte) render_current::line#0>=(const byte) PLAYFIELD_LINES#0) goto render_current::@2 + [48] (byte) render_current::i#4 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::i#8 ) + [48] (byte) render_current::l#3 ← phi( render_current/(byte/signed byte/word/signed word/dword/signed dword) 0 render_current::@2/(byte) render_current::l#1 ) + [48] (byte) render_current::ypos2#2 ← phi( render_current/(byte) render_current::ypos2#0 render_current::@2/(byte) render_current::ypos2#1 ) + [49] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 to:render_current::@6 render_current::@6: scope:[render_current] from render_current::@1 - [45] (byte~) render_current::$3 ← (byte) render_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [46] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_current::$3) + [50] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) + [51] (byte) render_current::xpos#0 ← (byte) current_xpos#62 to:render_current::@3 render_current::@3: scope:[render_current] from render_current::@4 render_current::@6 - [47] (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 ) - [47] (byte) render_current::i#2 ← phi( render_current::@4/(byte) render_current::i#1 render_current::@6/(byte) render_current::i#4 ) - [48] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#75 + (byte) render_current::i#2) - [49] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 - [50] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 + [52] (byte) render_current::c#2 ← phi( render_current::@4/(byte) render_current::c#1 render_current::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [52] (byte) render_current::xpos#2 ← phi( render_current::@4/(byte) render_current::xpos#1 render_current::@6/(byte) render_current::xpos#0 ) + [52] (byte) render_current::i#2 ← phi( render_current::@4/(byte) render_current::i#1 render_current::@6/(byte) render_current::i#4 ) + [53] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#61 + (byte) render_current::i#2) + [54] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 + [55] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 to:render_current::@7 render_current::@7: scope:[render_current] from render_current::@3 - [51] (byte) render_current::xpos#0 ← (byte) current_xpos#81 + (byte) render_current::c#2 - [52] if((byte) render_current::xpos#0>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 + [56] 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 - [53] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#0) ← (byte) current_piece_color#62 + [57] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#63 to:render_current::@4 render_current::@4: scope:[render_current] from render_current::@3 render_current::@7 render_current::@8 - [54] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 - [55] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 + [58] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 + [59] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 + [60] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 to:render_current::@2 render_current::@2: scope:[render_current] from render_current::@1 render_current::@4 - [56] (byte) render_current::i#8 ← phi( render_current::@1/(byte) render_current::i#4 render_current::@4/(byte) render_current::i#1 ) - [57] (byte) render_current::l#1 ← ++ (byte) render_current::l#2 - [58] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 + [61] (byte) render_current::i#8 ← phi( render_current::@1/(byte) render_current::i#4 render_current::@4/(byte) render_current::i#1 ) + [62] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [63] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 + [64] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 to:render_current::@return render_current::@return: scope:[render_current] from render_current::@2 - [59] return + [65] return to:@return render_playfield: scope:[render_playfield] from main::@19 main::@22 - [60] phi() + [66] phi() to:render_playfield::@1 render_playfield::@1: scope:[render_playfield] from render_playfield render_playfield::@3 - [61] (byte) render_playfield::i#3 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::i#1 ) - [61] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::l#1 ) - [62] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [63] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) + [67] (byte) render_playfield::i#3 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::i#1 ) + [67] (byte) render_playfield::l#2 ← phi( render_playfield/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@3/(byte) render_playfield::l#1 ) + [68] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [69] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) to:render_playfield::@2 render_playfield::@2: scope:[render_playfield] from render_playfield::@1 render_playfield::@2 - [64] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) - [64] (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@2/(byte) render_playfield::c#1 ) - [65] (byte*~) render_playfield::$3 ← (byte*) render_playfield::line#0 + (byte) render_playfield::c#2 - [66] *((byte*~) render_playfield::$3) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) - [67] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 - [68] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 - [69] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 + [70] (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_playfield::@2/(byte) render_playfield::c#1 ) + [70] (byte*) render_playfield::line#2 ← phi( render_playfield::@1/(byte*) render_playfield::line#0 render_playfield::@2/(byte*) render_playfield::line#1 ) + [70] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 ) + [71] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) + [72] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 + [73] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 + [74] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 + [75] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 to:render_playfield::@3 render_playfield::@3: scope:[render_playfield] from render_playfield::@2 - [70] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 - [71] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 + [76] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 + [77] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 to:render_playfield::@return render_playfield::@return: scope:[render_playfield] from render_playfield::@3 - [72] return + [78] return to:@return -play_moveother: scope:[play_moveother] from main::@27 - [73] (byte~) play_moveother::$0 ← (byte) play_moveother::key_event#0 & (byte/word/signed word/dword/signed dword) 128 - [74] if((byte~) play_moveother::$0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_moveother::@1 - to:play_moveother::@11 -play_moveother::@11: scope:[play_moveother] from play_moveother - [75] if((byte) play_moveother::key_event#0==(const byte) KEY_COMMA#0) goto play_moveother::@2 - to:play_moveother::@12 -play_moveother::@12: scope:[play_moveother] from play_moveother::@11 - [76] if((byte) play_moveother::key_event#0==(const byte) KEY_DOT#0) goto play_moveother::@3 - to:play_moveother::@13 -play_moveother::@13: scope:[play_moveother] from play_moveother::@12 - [77] if((byte) play_moveother::key_event#0==(const byte) KEY_Z#0) goto play_moveother::@4 - to:play_moveother::@14 -play_moveother::@14: scope:[play_moveother] from play_moveother::@13 - [78] if((byte) play_moveother::key_event#0!=(const byte) KEY_X#0) goto play_moveother::@1 - to:play_moveother::@15 -play_moveother::@15: scope:[play_moveother] from play_moveother::@14 - [79] (byte/signed word/word/dword/signed dword~) play_moveother::$8 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 - [80] (byte) current_piece_orientation#10 ← (byte/signed word/word/dword/signed dword~) play_moveother::$8 & (byte/signed byte/word/signed word/dword/signed dword) 63 - [81] (byte*) current_piece_gfx#10 ← (byte*) current_piece#13 + (byte) current_piece_orientation#10 - to:play_moveother::@1 -play_moveother::@1: scope:[play_moveother] from play_moveother play_moveother::@14 play_moveother::@15 play_moveother::@18 play_moveother::@20 play_moveother::@22 play_moveother::@23 play_moveother::@4 - [82] (byte) current_xpos#11 ← phi( play_moveother/(byte) current_xpos#19 play_moveother::@22/(byte) current_xpos#19 play_moveother::@15/(byte) current_xpos#19 play_moveother::@18/(byte) current_xpos#9 play_moveother::@20/(byte) current_xpos#10 play_moveother::@4/(byte) current_xpos#19 play_moveother::@14/(byte) current_xpos#19 play_moveother::@23/(byte) current_xpos#19 ) - [82] (byte*) current_piece_gfx#11 ← phi( play_moveother/(byte*) current_piece_gfx#18 play_moveother::@22/(byte*) current_piece_gfx#18 play_moveother::@15/(byte*) current_piece_gfx#10 play_moveother::@18/(byte*) current_piece_gfx#18 play_moveother::@20/(byte*) current_piece_gfx#18 play_moveother::@4/(byte*) current_piece_gfx#9 play_moveother::@14/(byte*) current_piece_gfx#18 play_moveother::@23/(byte*) current_piece_gfx#18 ) - [82] (byte) current_piece_orientation#11 ← phi( play_moveother/(byte) current_piece_orientation#18 play_moveother::@22/(byte) current_piece_orientation#18 play_moveother::@15/(byte) current_piece_orientation#10 play_moveother::@18/(byte) current_piece_orientation#18 play_moveother::@20/(byte) current_piece_orientation#18 play_moveother::@4/(byte) current_piece_orientation#9 play_moveother::@14/(byte) current_piece_orientation#18 play_moveother::@23/(byte) current_piece_orientation#18 ) - [82] (byte) play_moveother::return#1 ← phi( play_moveother/(byte/signed byte/word/signed word/dword/signed dword) 0 play_moveother::@22/(byte/signed byte/word/signed word/dword/signed dword) 0 play_moveother::@15/(byte/signed byte/word/signed word/dword/signed dword) 1 play_moveother::@18/(byte/signed byte/word/signed word/dword/signed dword) 1 play_moveother::@20/(byte/signed byte/word/signed word/dword/signed dword) 1 play_moveother::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 play_moveother::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_moveother::@23/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - to:play_moveother::@return -play_moveother::@return: scope:[play_moveother] from play_moveother::@1 - [83] return +play_move_rotate: scope:[play_move_rotate] from main::@28 + [79] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 + to:play_move_rotate::@6 +play_move_rotate::@6: scope:[play_move_rotate] from play_move_rotate + [80] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 + to:play_move_rotate::@return +play_move_rotate::@return: scope:[play_move_rotate] from play_move_rotate::@11 play_move_rotate::@14 play_move_rotate::@6 + [81] (byte*) current_piece_gfx#18 ← phi( play_move_rotate::@11/(byte*) current_piece_gfx#8 play_move_rotate::@14/(byte*) current_piece_gfx#17 play_move_rotate::@6/(byte*) current_piece_gfx#17 ) + [81] (byte) current_piece_orientation#23 ← phi( play_move_rotate::@11/(byte) current_piece_orientation#8 play_move_rotate::@14/(byte) current_piece_orientation#18 play_move_rotate::@6/(byte) current_piece_orientation#18 ) + [81] (byte) play_move_rotate::return#2 ← phi( play_move_rotate::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_rotate::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_rotate::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [82] return to:@return -play_moveother::@4: scope:[play_moveother] from play_moveother::@13 - [84] (byte/signed word/word/dword/signed dword~) play_moveother::$11 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 - [85] (byte) current_piece_orientation#9 ← (byte/signed word/word/dword/signed dword~) play_moveother::$11 & (byte/signed byte/word/signed word/dword/signed dword) 63 - [86] (byte*) current_piece_gfx#9 ← (byte*) current_piece#13 + (byte) current_piece_orientation#9 - to:play_moveother::@1 -play_moveother::@3: scope:[play_moveother] from play_moveother::@12 - [87] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [88] (byte) collision::ypos#2 ← (byte) current_ypos#16 - [89] (byte*~) current_piece_gfx#110 ← (byte*) current_piece_gfx#18 +play_move_rotate::@2: scope:[play_move_rotate] from play_move_rotate::@6 + [83] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 + [84] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 + to:play_move_rotate::@4 +play_move_rotate::@4: scope:[play_move_rotate] from play_move_rotate::@1 play_move_rotate::@2 + [85] (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 ) + [86] (byte) collision::xpos#3 ← (byte) current_xpos#23 + [87] (byte) collision::ypos#3 ← (byte) current_ypos#16 + [88] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 + [89] (byte*~) current_piece#70 ← (byte*) current_piece#13 [90] call collision - [91] (byte) collision::return#12 ← (byte) collision::return#10 - to:play_moveother::@23 -play_moveother::@23: scope:[play_moveother] from play_moveother::@3 - [92] (byte~) play_moveother::$15 ← (byte) collision::return#12 - [93] if((byte~) play_moveother::$15!=(const byte) COLLISION_NONE#0) goto play_moveother::@1 - to:play_moveother::@18 -play_moveother::@18: scope:[play_moveother] from play_moveother::@23 - [94] (byte) current_xpos#9 ← ++ (byte) current_xpos#19 - to:play_moveother::@1 -play_moveother::@2: scope:[play_moveother] from play_moveother::@11 - [95] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 - [96] (byte) collision::ypos#1 ← (byte) current_ypos#16 - [97] (byte*~) current_piece_gfx#109 ← (byte*) current_piece_gfx#18 - [98] call collision - [99] (byte) collision::return#11 ← (byte) collision::return#10 - to:play_moveother::@22 -play_moveother::@22: scope:[play_moveother] from play_moveother::@2 - [100] (byte~) play_moveother::$19 ← (byte) collision::return#11 - [101] if((byte~) play_moveother::$19!=(const byte) COLLISION_NONE#0) goto play_moveother::@1 - to:play_moveother::@20 -play_moveother::@20: scope:[play_moveother] from play_moveother::@22 - [102] (byte) current_xpos#10 ← -- (byte) current_xpos#19 - to:play_moveother::@1 -collision: scope:[collision] from play_movedown::@12 play_moveother::@2 play_moveother::@3 - [103] (byte) collision::xpos#8 ← phi( play_movedown::@12/(byte) collision::xpos#0 play_moveother::@2/(byte) collision::xpos#1 play_moveother::@3/(byte) collision::xpos#2 ) - [103] (byte*) current_piece_gfx#46 ← phi( play_movedown::@12/(byte*~) current_piece_gfx#108 play_moveother::@2/(byte*~) current_piece_gfx#109 play_moveother::@3/(byte*~) current_piece_gfx#110 ) - [103] (byte) collision::ypos#4 ← phi( play_movedown::@12/(byte) collision::ypos#0 play_moveother::@2/(byte) collision::ypos#1 play_moveother::@3/(byte) collision::ypos#2 ) + [91] (byte) collision::return#13 ← (byte) collision::return#14 + to:play_move_rotate::@14 +play_move_rotate::@14: scope:[play_move_rotate] from play_move_rotate::@4 + [92] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 + [93] (byte~) play_move_rotate::$8 ← (byte~) play_move_rotate::$6 & (const byte) COLLISION_LEFT#0|(const byte) COLLISION_RIGHT#0 + [94] if((byte~) play_move_rotate::$8!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@return + to:play_move_rotate::@11 +play_move_rotate::@11: scope:[play_move_rotate] from play_move_rotate::@14 + [95] (byte) current_piece_orientation#8 ← (byte) play_move_rotate::orientation#3 + [96] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_piece_orientation#8 + to:play_move_rotate::@return +play_move_rotate::@1: scope:[play_move_rotate] from play_move_rotate + [97] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 + [98] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 + to:play_move_rotate::@4 +collision: scope:[collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 + [99] (byte) collision::xpos#5 ← phi( play_move_down::@12/(byte) collision::xpos#0 play_move_leftright::@1/(byte) collision::xpos#1 play_move_leftright::@7/(byte) collision::xpos#2 play_move_rotate::@4/(byte) collision::xpos#3 ) + [99] (byte) collision::ypos#4 ← phi( play_move_down::@12/(byte) collision::ypos#0 play_move_leftright::@1/(byte) collision::ypos#1 play_move_leftright::@7/(byte) collision::ypos#2 play_move_rotate::@4/(byte) collision::ypos#3 ) + [99] (byte) collision::orientation#4 ← phi( play_move_down::@12/(byte) collision::orientation#0 play_move_leftright::@1/(byte) collision::orientation#1 play_move_leftright::@7/(byte) collision::orientation#2 play_move_rotate::@4/(byte) collision::orientation#3 ) + [99] (byte*) current_piece#15 ← phi( play_move_down::@12/(byte*~) current_piece#67 play_move_leftright::@1/(byte*~) current_piece#68 play_move_leftright::@7/(byte*~) current_piece#69 play_move_rotate::@4/(byte*~) current_piece#70 ) + [100] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 + [101] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:collision::@1 collision::@1: scope:[collision] from collision collision::@20 - [104] (byte) collision::i#3 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte~) collision::i#11 ) - [104] (byte) collision::l#2 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte) collision::l#1 ) - [105] (byte) collision::line#0 ← (byte) collision::ypos#4 + (byte) collision::l#2 - [106] (byte~) collision::$1 ← (byte) collision::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [107] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) collision::$1) + [102] (byte) collision::l#6 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte) collision::l#1 ) + [102] (byte) collision::i#3 ← phi( collision/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@20/(byte~) collision::i#11 ) + [102] (byte) collision::ypos2#2 ← phi( collision/(byte) collision::ypos2#0 collision::@20/(byte) collision::ypos2#1 ) + [103] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) + [104] (byte~) collision::col#9 ← (byte) collision::xpos#5 to:collision::@2 collision::@2: scope:[collision] from collision::@1 collision::@21 - [108] (byte) collision::c#2 ← phi( collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@21/(byte) collision::c#1 ) - [108] (byte) collision::i#2 ← phi( collision::@1/(byte) collision::i#3 collision::@21/(byte~) collision::i#13 ) - [109] (byte) collision::i#1 ← ++ (byte) collision::i#2 - [110] if(*((byte*) current_piece_gfx#46 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 + [105] (byte) collision::c#2 ← phi( collision::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 collision::@21/(byte) collision::c#1 ) + [105] (byte) collision::col#2 ← phi( collision::@1/(byte~) collision::col#9 collision::@21/(byte) collision::col#1 ) + [105] (byte) collision::i#2 ← phi( collision::@1/(byte) collision::i#3 collision::@21/(byte~) collision::i#13 ) + [106] (byte) collision::i#1 ← ++ (byte) collision::i#2 + [107] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 to:collision::@8 collision::@8: scope:[collision] from collision::@2 - [111] if((byte) collision::line#0<(const byte) PLAYFIELD_LINES#0) goto collision::@4 + [108] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 to:collision::@return collision::@return: scope:[collision] from collision::@17 collision::@4 collision::@5 collision::@6 collision::@8 - [112] (byte) collision::return#10 ← phi( collision::@4/(const byte) COLLISION_LEFT#0 collision::@5/(const byte) COLLISION_RIGHT#0 collision::@6/(const byte) COLLISION_PLAYFIELD#0 collision::@17/(const byte) COLLISION_NONE#0 collision::@8/(const byte) COLLISION_BOTTOM#0 ) - [113] return + [109] (byte) collision::return#14 ← phi( collision::@4/(const byte) COLLISION_LEFT#0 collision::@5/(const byte) COLLISION_RIGHT#0 collision::@6/(const byte) COLLISION_PLAYFIELD#0 collision::@17/(const byte) COLLISION_NONE#0 collision::@8/(const byte) COLLISION_BOTTOM#0 ) + [110] return to:@return collision::@4: scope:[collision] from collision::@8 - [114] (byte) collision::col#0 ← (byte) collision::xpos#8 + (byte) collision::c#2 - [115] (byte~) collision::$7 ← (byte) collision::col#0 & (byte/word/signed word/dword/signed dword) 128 - [116] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 + [111] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 + [112] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 to:collision::@return collision::@5: scope:[collision] from collision::@4 - [117] if((byte) collision::col#0<(const byte) PLAYFIELD_COLS#0) goto collision::@6 + [113] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 to:collision::@return collision::@6: scope:[collision] from collision::@5 - [118] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 + [114] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 to:collision::@return collision::@3: scope:[collision] from collision::@2 collision::@6 - [119] (byte) collision::c#1 ← ++ (byte) collision::c#2 - [120] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 + [115] (byte) collision::col#1 ← ++ (byte) collision::col#2 + [116] (byte) collision::c#1 ← ++ (byte) collision::c#2 + [117] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 to:collision::@17 collision::@17: scope:[collision] from collision::@3 - [121] (byte) collision::l#1 ← ++ (byte) collision::l#2 - [122] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 + [118] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [119] (byte) collision::l#1 ← ++ (byte) collision::l#6 + [120] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 to:collision::@return collision::@20: scope:[collision] from collision::@17 - [123] (byte~) collision::i#11 ← (byte) collision::i#1 + [121] (byte~) collision::i#11 ← (byte) collision::i#1 to:collision::@1 collision::@21: scope:[collision] from collision::@3 - [124] (byte~) collision::i#13 ← (byte) collision::i#1 + [122] (byte~) collision::i#13 ← (byte) collision::i#1 to:collision::@2 -play_movedown: scope:[play_movedown] from main::@26 - [125] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 - [126] if((byte) play_movedown::key_event#0!=(const byte) KEY_SPACE#0) goto play_movedown::@1 - to:play_movedown::@8 -play_movedown::@8: scope:[play_movedown] from play_movedown - [127] phi() - to:play_movedown::@1 -play_movedown::@1: scope:[play_movedown] from play_movedown play_movedown::@8 - [128] (byte) play_movedown::movedown#10 ← phi( play_movedown/(byte/signed byte/word/signed word/dword/signed dword) 0 play_movedown::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [129] call keyboard_event_pressed - [130] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 - to:play_movedown::@17 -play_movedown::@17: scope:[play_movedown] from play_movedown::@1 - [131] (byte~) play_movedown::$2 ← (byte) keyboard_event_pressed::return#12 - [132] if((byte~) play_movedown::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movedown::@2 - to:play_movedown::@9 -play_movedown::@9: scope:[play_movedown] from play_movedown::@17 - [133] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate_fast#0) goto play_movedown::@2 - to:play_movedown::@10 -play_movedown::@10: scope:[play_movedown] from play_movedown::@9 - [134] (byte) play_movedown::movedown#2 ← ++ (byte) play_movedown::movedown#10 - to:play_movedown::@2 -play_movedown::@2: scope:[play_movedown] from play_movedown::@10 play_movedown::@17 play_movedown::@9 - [135] (byte) play_movedown::movedown#7 ← phi( play_movedown::@10/(byte) play_movedown::movedown#2 play_movedown::@17/(byte) play_movedown::movedown#10 play_movedown::@9/(byte) play_movedown::movedown#10 ) - [136] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate#0) goto play_movedown::@4 - to:play_movedown::@11 -play_movedown::@11: scope:[play_movedown] from play_movedown::@2 - [137] (byte) play_movedown::movedown#3 ← ++ (byte) play_movedown::movedown#7 - to:play_movedown::@4 -play_movedown::@4: scope:[play_movedown] from play_movedown::@11 play_movedown::@2 - [138] (byte) play_movedown::movedown#6 ← phi( play_movedown::@11/(byte) play_movedown::movedown#3 play_movedown::@2/(byte) play_movedown::movedown#7 ) - [139] if((byte) play_movedown::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movedown::@return - to:play_movedown::@12 -play_movedown::@12: scope:[play_movedown] from play_movedown::@4 - [140] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [141] (byte) collision::xpos#0 ← (byte) current_xpos#16 - [142] (byte*~) current_piece_gfx#108 ← (byte*) current_piece_gfx#16 - [143] call collision - [144] (byte) collision::return#0 ← (byte) collision::return#10 - to:play_movedown::@18 -play_movedown::@18: scope:[play_movedown] from play_movedown::@12 - [145] (byte~) play_movedown::$12 ← (byte) collision::return#0 - [146] if((byte~) play_movedown::$12==(const byte) COLLISION_NONE#0) goto play_movedown::@6 - to:play_movedown::@13 -play_movedown::@13: scope:[play_movedown] from play_movedown::@18 - [147] phi() - [148] call lock_current - to:play_movedown::@19 -play_movedown::@19: scope:[play_movedown] from play_movedown::@13 - [149] phi() - [150] call spawn_current - to:play_movedown::@7 -play_movedown::@7: scope:[play_movedown] from play_movedown::@19 play_movedown::@6 - [151] (byte) current_xpos#35 ← phi( play_movedown::@19/(byte/signed byte/word/signed word/dword/signed dword) 3 play_movedown::@6/(byte) current_xpos#16 ) - [151] (byte) current_piece_color#23 ← phi( play_movedown::@19/(const byte) GREEN#0 play_movedown::@6/(byte) current_piece_color#11 ) - [151] (byte*) current_piece_gfx#30 ← phi( play_movedown::@19/(const byte[4*4*4]) piece_t#0 play_movedown::@6/(byte*) current_piece_gfx#16 ) - [151] (byte) current_piece_orientation#29 ← phi( play_movedown::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 play_movedown::@6/(byte) current_piece_orientation#16 ) - [151] (byte*) current_piece#23 ← phi( play_movedown::@19/(const byte[4*4*4]) piece_t#0 play_movedown::@6/(byte*) current_piece#11 ) - [151] (byte) current_ypos#30 ← phi( play_movedown::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 play_movedown::@6/(byte) current_ypos#4 ) - to:play_movedown::@return -play_movedown::@return: scope:[play_movedown] from play_movedown::@4 play_movedown::@7 - [152] (byte) current_xpos#19 ← phi( play_movedown::@4/(byte) current_xpos#16 play_movedown::@7/(byte) current_xpos#35 ) - [152] (byte) current_piece_color#13 ← phi( play_movedown::@4/(byte) current_piece_color#11 play_movedown::@7/(byte) current_piece_color#23 ) - [152] (byte*) current_piece_gfx#18 ← phi( play_movedown::@4/(byte*) current_piece_gfx#16 play_movedown::@7/(byte*) current_piece_gfx#30 ) - [152] (byte) current_piece_orientation#18 ← phi( play_movedown::@4/(byte) current_piece_orientation#16 play_movedown::@7/(byte) current_piece_orientation#29 ) - [152] (byte*) current_piece#13 ← phi( play_movedown::@4/(byte*) current_piece#11 play_movedown::@7/(byte*) current_piece#23 ) - [152] (byte) current_ypos#16 ← phi( play_movedown::@4/(byte) current_ypos#12 play_movedown::@7/(byte) current_ypos#30 ) - [152] (byte) current_movedown_counter#12 ← phi( play_movedown::@4/(byte) current_movedown_counter#10 play_movedown::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [152] (byte) play_movedown::return#3 ← phi( play_movedown::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 play_movedown::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [153] return +play_move_leftright: scope:[play_move_leftright] from main::@27 + [123] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 + to:play_move_leftright::@6 +play_move_leftright::@6: scope:[play_move_leftright] from play_move_leftright + [124] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return + to:play_move_leftright::@7 +play_move_leftright::@7: scope:[play_move_leftright] from play_move_leftright::@6 + [125] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [126] (byte) collision::ypos#2 ← (byte) current_ypos#16 + [127] (byte) collision::orientation#2 ← (byte) current_piece_orientation#18 + [128] (byte*~) current_piece#69 ← (byte*) current_piece#13 + [129] call collision + [130] (byte) collision::return#12 ← (byte) collision::return#14 + to:play_move_leftright::@15 +play_move_leftright::@15: scope:[play_move_leftright] from play_move_leftright::@7 + [131] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 + [132] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + to:play_move_leftright::@8 +play_move_leftright::@8: scope:[play_move_leftright] from play_move_leftright::@15 + [133] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 + to:play_move_leftright::@return +play_move_leftright::@return: scope:[play_move_leftright] from play_move_leftright::@11 play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 play_move_leftright::@8 + [134] (byte) current_xpos#23 ← phi( play_move_leftright::@11/(byte) current_xpos#9 play_move_leftright::@15/(byte) current_xpos#19 play_move_leftright::@8/(byte) current_xpos#7 play_move_leftright::@14/(byte) current_xpos#19 play_move_leftright::@6/(byte) current_xpos#19 ) + [134] (byte) play_move_leftright::return#2 ← phi( play_move_leftright::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@15/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 play_move_leftright::@14/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_leftright::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [135] return to:@return -play_movedown::@6: scope:[play_movedown] from play_movedown::@18 - [154] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 - to:play_movedown::@7 -spawn_current: scope:[spawn_current] from main::@21 play_movedown::@19 - [155] phi() +play_move_leftright::@1: scope:[play_move_leftright] from play_move_leftright + [136] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 + [137] (byte) collision::ypos#1 ← (byte) current_ypos#16 + [138] (byte) collision::orientation#1 ← (byte) current_piece_orientation#18 + [139] (byte*~) current_piece#68 ← (byte*) current_piece#13 + [140] call collision + [141] (byte) collision::return#1 ← (byte) collision::return#14 + to:play_move_leftright::@14 +play_move_leftright::@14: scope:[play_move_leftright] from play_move_leftright::@1 + [142] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 + [143] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return + to:play_move_leftright::@11 +play_move_leftright::@11: scope:[play_move_leftright] from play_move_leftright::@14 + [144] (byte) current_xpos#9 ← -- (byte) current_xpos#19 + to:play_move_leftright::@return +play_move_down: scope:[play_move_down] from main::@26 + [145] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 + [146] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 + to:play_move_down::@8 +play_move_down::@8: scope:[play_move_down] from play_move_down + [147] phi() + to:play_move_down::@1 +play_move_down::@1: scope:[play_move_down] from play_move_down play_move_down::@8 + [148] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [149] call keyboard_event_pressed + [150] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + to:play_move_down::@17 +play_move_down::@17: scope:[play_move_down] from play_move_down::@1 + [151] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + [152] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 + to:play_move_down::@9 +play_move_down::@9: scope:[play_move_down] from play_move_down::@17 + [153] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate_fast#0) goto play_move_down::@2 + to:play_move_down::@10 +play_move_down::@10: scope:[play_move_down] from play_move_down::@9 + [154] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 + to:play_move_down::@2 +play_move_down::@2: scope:[play_move_down] from play_move_down::@10 play_move_down::@17 play_move_down::@9 + [155] (byte) play_move_down::movedown#7 ← phi( play_move_down::@10/(byte) play_move_down::movedown#2 play_move_down::@17/(byte) play_move_down::movedown#10 play_move_down::@9/(byte) play_move_down::movedown#10 ) + [156] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate#0) goto play_move_down::@4 + to:play_move_down::@11 +play_move_down::@11: scope:[play_move_down] from play_move_down::@2 + [157] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 + to:play_move_down::@4 +play_move_down::@4: scope:[play_move_down] from play_move_down::@11 play_move_down::@2 + [158] (byte) play_move_down::movedown#6 ← phi( play_move_down::@11/(byte) play_move_down::movedown#3 play_move_down::@2/(byte) play_move_down::movedown#7 ) + [159] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return + to:play_move_down::@12 +play_move_down::@12: scope:[play_move_down] from play_move_down::@4 + [160] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [161] (byte) collision::xpos#0 ← (byte) current_xpos#16 + [162] (byte) collision::orientation#0 ← (byte) current_piece_orientation#15 + [163] (byte*~) current_piece#67 ← (byte*) current_piece#11 + [164] call collision + [165] (byte) collision::return#0 ← (byte) collision::return#14 + to:play_move_down::@18 +play_move_down::@18: scope:[play_move_down] from play_move_down::@12 + [166] (byte~) play_move_down::$12 ← (byte) collision::return#0 + [167] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 + to:play_move_down::@13 +play_move_down::@13: scope:[play_move_down] from play_move_down::@18 + [168] phi() + [169] call lock_current + to:play_move_down::@19 +play_move_down::@19: scope:[play_move_down] from play_move_down::@13 + [170] phi() + [171] call spawn_current + to:play_move_down::@7 +play_move_down::@7: scope:[play_move_down] from play_move_down::@19 play_move_down::@6 + [172] (byte) current_xpos#36 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 3 play_move_down::@6/(byte) current_xpos#16 ) + [172] (byte) current_piece_color#23 ← phi( play_move_down::@19/(const byte) GREEN#0 play_move_down::@6/(byte) current_piece_color#11 ) + [172] (byte*) current_piece_gfx#29 ← phi( play_move_down::@19/(const byte[4*4*4]) piece_t#0 play_move_down::@6/(byte*) current_piece_gfx#15 ) + [172] (byte) current_piece_orientation#33 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_piece_orientation#15 ) + [172] (byte*) current_piece#23 ← phi( play_move_down::@19/(const byte[4*4*4]) piece_t#0 play_move_down::@6/(byte*) current_piece#11 ) + [172] (byte) current_ypos#31 ← phi( play_move_down::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@6/(byte) current_ypos#4 ) + to:play_move_down::@return +play_move_down::@return: scope:[play_move_down] from play_move_down::@4 play_move_down::@7 + [173] (byte) current_xpos#19 ← phi( play_move_down::@4/(byte) current_xpos#16 play_move_down::@7/(byte) current_xpos#36 ) + [173] (byte) current_piece_color#13 ← phi( play_move_down::@4/(byte) current_piece_color#11 play_move_down::@7/(byte) current_piece_color#23 ) + [173] (byte*) current_piece_gfx#17 ← phi( play_move_down::@4/(byte*) current_piece_gfx#15 play_move_down::@7/(byte*) current_piece_gfx#29 ) + [173] (byte) current_piece_orientation#18 ← phi( play_move_down::@4/(byte) current_piece_orientation#15 play_move_down::@7/(byte) current_piece_orientation#33 ) + [173] (byte*) current_piece#13 ← phi( play_move_down::@4/(byte*) current_piece#11 play_move_down::@7/(byte*) current_piece#23 ) + [173] (byte) current_ypos#16 ← phi( play_move_down::@4/(byte) current_ypos#12 play_move_down::@7/(byte) current_ypos#31 ) + [173] (byte) current_movedown_counter#12 ← phi( play_move_down::@4/(byte) current_movedown_counter#10 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [173] (byte) play_move_down::return#3 ← phi( play_move_down::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 play_move_down::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [174] return + to:@return +play_move_down::@6: scope:[play_move_down] from play_move_down::@18 + [175] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 + to:play_move_down::@7 +spawn_current: scope:[spawn_current] from main::@21 play_move_down::@19 + [176] phi() to:spawn_current::@return spawn_current::@return: scope:[spawn_current] from spawn_current - [156] return + [177] return to:@return -lock_current: scope:[lock_current] from play_movedown::@13 - [157] phi() +lock_current: scope:[lock_current] from play_move_down::@13 + [178] phi() to:lock_current::@1 lock_current::@1: scope:[lock_current] from lock_current lock_current::@5 - [158] (byte) lock_current::i#3 ← phi( lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@5/(byte) lock_current::i#1 ) - [158] (byte) lock_current::l#2 ← phi( lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@5/(byte) lock_current::l#1 ) - [159] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 - [160] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [161] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) + [179] (byte) lock_current::i#3 ← phi( lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@5/(byte) lock_current::i#1 ) + [179] (byte) lock_current::l#2 ← phi( lock_current/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@5/(byte) lock_current::l#1 ) + [180] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 + [181] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [182] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) to:lock_current::@2 lock_current::@2: scope:[lock_current] from lock_current::@1 lock_current::@3 - [162] (byte) lock_current::c#2 ← phi( lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@3/(byte) lock_current::c#1 ) - [162] (byte) lock_current::i#2 ← phi( lock_current::@1/(byte) lock_current::i#3 lock_current::@3/(byte) lock_current::i#1 ) - [163] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#16 + (byte) lock_current::i#2) - [164] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 - [165] if((byte) lock_current::cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 + [183] (byte) lock_current::c#2 ← phi( lock_current::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 lock_current::@3/(byte) lock_current::c#1 ) + [183] (byte) lock_current::i#2 ← phi( lock_current::@1/(byte) lock_current::i#3 lock_current::@3/(byte) lock_current::i#1 ) + [184] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#15 + (byte) lock_current::i#2) + [185] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 + [186] if((byte) lock_current::cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 to:lock_current::@4 lock_current::@4: scope:[lock_current] from lock_current::@2 - [166] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 - [167] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 + [187] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 + [188] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 to:lock_current::@3 lock_current::@3: scope:[lock_current] from lock_current::@2 lock_current::@4 - [168] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 - [169] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@2 + [189] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 + [190] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@2 to:lock_current::@5 lock_current::@5: scope:[lock_current] from lock_current::@3 - [170] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#2 - [171] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@1 + [191] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#2 + [192] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@1 to:lock_current::@return lock_current::@return: scope:[lock_current] from lock_current::@5 - [172] return + [193] return to:@return -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_movedown::@1 - [173] (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_movedown::@1/(const byte) KEY_SPACE#0 ) - [174] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 - [175] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) - [176] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [177] (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: scope:[keyboard_event_pressed] from keyboard_event_scan::@10 keyboard_event_scan::@11 keyboard_event_scan::@20 keyboard_event_scan::@9 play_move_down::@1 + [194] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@10/(const byte) KEY_CTRL#0 keyboard_event_scan::@11/(const byte) KEY_COMMODORE#0 keyboard_event_scan::@20/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@9/(const byte) KEY_RSHIFT#0 play_move_down::@1/(const byte) KEY_SPACE#0 ) + [195] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 + [196] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) + [197] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [198] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) to:keyboard_event_pressed::@return keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed - [178] return + [199] return to:@return keyboard_event_get: scope:[keyboard_event_get] from main::@25 - [179] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return + [200] 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 - [180] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 - [181] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) + [201] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 + [202] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) to:keyboard_event_get::@return keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@3 - [182] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) - [182] (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 ) - [183] return + [203] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@3/(byte) keyboard_events_size#4 ) + [203] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 ) + [204] return to:@return keyboard_event_scan: scope:[keyboard_event_scan] from main::@9 - [184] phi() + [205] phi() to:keyboard_event_scan::@1 keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@3 - [185] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) - [185] (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 ) - [185] (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 ) - [186] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 - [187] call keyboard_matrix_read - [188] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + [206] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@3/(byte) keyboard_events_size#13 ) + [206] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#14 ) + [206] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#1 ) + [207] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 + [208] call keyboard_matrix_read + [209] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 to:keyboard_event_scan::@25 keyboard_event_scan::@25: scope:[keyboard_event_scan] from keyboard_event_scan::@1 - [189] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 - [190] 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 + [210] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 + [211] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 to:keyboard_event_scan::@13 keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@25 - [191] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 + [212] (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 - [192] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) - [192] (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 ) - [193] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 - [194] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 + [213] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 ) + [213] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#1 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#15 ) + [214] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 + [215] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 to:keyboard_event_scan::@20 keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@3 - [195] phi() - [196] call keyboard_event_pressed - [197] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + [216] phi() + [217] call keyboard_event_pressed + [218] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@26 keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20 - [198] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 - [199] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 + [219] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + [220] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 to:keyboard_event_scan::@21 keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26 - [200] phi() + [221] phi() to:keyboard_event_scan::@9 keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - [201] phi() - [202] call keyboard_event_pressed - [203] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + [222] phi() + [223] call keyboard_event_pressed + [224] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@27 keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9 - [204] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 - [205] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 + [225] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + [226] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 to:keyboard_event_scan::@22 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 - [206] phi() + [227] phi() to:keyboard_event_scan::@10 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 - [207] phi() - [208] call keyboard_event_pressed - [209] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + [228] phi() + [229] call keyboard_event_pressed + [230] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@28 keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10 - [210] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 - [211] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 + [231] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + [232] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 to:keyboard_event_scan::@23 keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28 - [212] phi() + [233] phi() to:keyboard_event_scan::@11 keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28 - [213] phi() - [214] call keyboard_event_pressed - [215] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + [234] phi() + [235] call keyboard_event_pressed + [236] (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 - [216] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 - [217] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return + [237] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + [238] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return to:keyboard_event_scan::@24 keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@29 - [218] phi() + [239] phi() to:keyboard_event_scan::@return keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@24 keyboard_event_scan::@29 - [219] return + [240] return to:@return keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@25 keyboard_event_scan::@5 - [220] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) - [220] (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 ) - [220] (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 ) - [221] (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) - [222] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) - [223] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 + [241] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#30 ) + [241] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#15 ) + [241] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#1 ) + [242] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) + [243] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [244] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 to:keyboard_event_scan::@15 keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@4 - [224] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 + [245] 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 - [225] (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) - [226] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 + [246] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) + [247] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 to:keyboard_event_scan::@17 keyboard_event_scan::@17: scope:[keyboard_event_scan] from keyboard_event_scan::@16 - [227] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 - [228] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 + [248] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 + [249] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 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 - [229] (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 ) - [230] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 - [231] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 - [232] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 + [250] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@17/(byte) keyboard_events_size#2 keyboard_event_scan::@4/(byte) keyboard_events_size#10 keyboard_event_scan::@15/(byte) keyboard_events_size#10 keyboard_event_scan::@7/(byte) keyboard_events_size#1 ) + [251] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 + [252] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 + [253] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 to:keyboard_event_scan::@19 keyboard_event_scan::@19: scope:[keyboard_event_scan] from keyboard_event_scan::@5 - [233] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 + [254] *((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 - [234] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 - [235] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 - [236] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 + [255] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 + [256] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 + [257] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 to:keyboard_event_scan::@5 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@1 - [237] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) - [238] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) + [258] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) + [259] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) to:keyboard_matrix_read::@return keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read - [239] return + [260] return to:@return init: scope:[init] from main - [240] phi() - [241] call fill + [261] phi() + [262] call fill to:init::@9 init::@9: scope:[init] from init - [242] phi() - [243] call fill + [263] phi() + [264] call fill to:init::@1 init::@1: scope:[init] from init::@1 init::@9 - [244] (byte*) init::li#2 ← phi( init::@1/(byte*) init::li#1 init::@9/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 ) - [244] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [245] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [246] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 - [247] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [248] (byte) init::i#1 ← ++ (byte) init::i#2 - [249] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 + [265] (byte*) init::li#2 ← phi( init::@1/(byte*) init::li#1 init::@9/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 ) + [265] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [266] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [267] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 + [268] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [269] (byte) init::i#1 ← ++ (byte) init::i#2 + [270] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 to:init::@2 init::@2: scope:[init] from init::@1 init::@2 - [250] (byte*) init::pli#2 ← phi( init::@2/(byte*) init::pli#1 init::@1/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 ) - [250] (byte) init::j#2 ← phi( init::@2/(byte) init::j#1 init::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [251] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [252] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 - [253] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 - [254] (byte) init::j#1 ← ++ (byte) init::j#2 - [255] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 + [271] (byte*) init::pli#2 ← phi( init::@2/(byte*) init::pli#1 init::@1/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 ) + [271] (byte) init::j#2 ← phi( init::@2/(byte) init::j#1 init::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [272] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [273] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 + [274] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 + [275] (byte) init::j#1 ← ++ (byte) init::j#2 + [276] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 to:init::@3 init::@3: scope:[init] from init::@2 init::@7 - [256] (byte) init::l#4 ← phi( init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@7/(byte) init::l#1 ) - [256] (byte*) init::line#4 ← phi( init::@2/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 init::@7/(byte*) init::line#1 ) + [277] (byte) init::l#4 ← phi( init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@7/(byte) init::l#1 ) + [277] (byte*) init::line#4 ← phi( init::@2/(const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 init::@7/(byte*) init::line#1 ) to:init::@4 init::@4: scope:[init] from init::@3 init::@4 - [257] (byte) init::c#2 ← phi( init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@4/(byte) init::c#1 ) - [258] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 - [259] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 - [260] (byte) init::c#1 ← ++ (byte) init::c#2 - [261] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 + [278] (byte) init::c#2 ← phi( init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 init::@4/(byte) init::c#1 ) + [279] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 + [280] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 + [281] (byte) init::c#1 ← ++ (byte) init::c#2 + [282] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 to:init::@7 init::@7: scope:[init] from init::@4 - [262] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [263] (byte) init::l#1 ← ++ (byte) init::l#4 - [264] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 + [283] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [284] (byte) init::l#1 ← ++ (byte) init::l#4 + [285] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 to:init::@return init::@return: scope:[init] from init::@7 - [265] return + [286] return to:@return fill: scope:[fill] from init init::@9 - [266] (byte) fill::val#3 ← phi( init/(byte/word/signed word/dword/signed dword) 160 init::@9/(const byte) BLACK#0 ) - [266] (byte*) fill::addr#0 ← phi( init/(const byte*) SCREEN#0 init::@9/(const byte*) COLS#0 ) - [267] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 + [287] (byte) fill::val#3 ← phi( init/(byte/word/signed word/dword/signed dword) 160 init::@9/(const byte) BLACK#0 ) + [287] (byte*) fill::addr#0 ← phi( init/(const byte*) SCREEN#0 init::@9/(const byte*) COLS#0 ) + [288] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 to:fill::@1 fill::@1: scope:[fill] from fill fill::@1 - [268] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) - [269] *((byte*) fill::addr#2) ← (byte) fill::val#3 - [270] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [271] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 + [289] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) + [290] *((byte*) fill::addr#2) ← (byte) fill::val#3 + [291] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [292] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [272] return + [293] return to:@return @@ -4735,94 +4864,107 @@ VARIABLE REGISTER WEIGHTS (byte) PLAYFIELD_LINES (byte*) RASTER (byte*) SCREEN -(byte()) collision((byte) collision::ypos , (byte) collision::xpos) -(byte~) collision::$1 202.0 +(byte()) collision((byte) collision::xpos , (byte) collision::ypos , (byte) collision::orientation) (byte~) collision::$7 2002.0 (byte) collision::c (byte) collision::c#1 1001.0 -(byte) collision::c#2 333.6666666666667 +(byte) collision::c#2 222.44444444444446 (byte) collision::col -(byte) collision::col#0 1001.0 +(byte) collision::col#1 500.5 +(byte) collision::col#2 638.25 +(byte~) collision::col#9 202.0 (byte) collision::i -(byte) collision::i#1 175.25 +(byte) collision::i#1 161.76923076923077 (byte~) collision::i#11 202.0 (byte~) collision::i#13 2002.0 (byte) collision::i#2 1552.0 -(byte) collision::i#3 50.5 +(byte) collision::i#3 67.33333333333333 (byte) collision::l (byte) collision::l#1 101.0 -(byte) collision::l#2 18.9375 -(byte) collision::line -(byte) collision::line#0 80.2 +(byte) collision::l#6 12.625 +(byte) collision::orientation +(byte) collision::orientation#0 2.0 +(byte) collision::orientation#1 2.0 +(byte) collision::orientation#2 2.0 +(byte) collision::orientation#3 2.0 +(byte) collision::orientation#4 10.0 +(byte*) collision::piece_gfx +(byte*) collision::piece_gfx#0 47.76190476190476 (byte*) collision::playfield_line -(byte*) collision::playfield_line#0 84.76923076923077 +(byte*) collision::playfield_line#0 78.71428571428571 (byte) collision::return (byte) collision::return#0 4.0 -(byte) collision::return#10 1.2000000000000002 -(byte) collision::return#11 4.0 +(byte) collision::return#1 4.0 (byte) collision::return#12 4.0 +(byte) collision::return#13 4.0 +(byte) collision::return#14 1.3333333333333333 (byte) collision::xpos -(byte) collision::xpos#0 2.0 -(byte) collision::xpos#1 1.3333333333333333 -(byte) collision::xpos#2 1.3333333333333333 -(byte) collision::xpos#8 50.349999999999994 +(byte) collision::xpos#0 1.3333333333333333 +(byte) collision::xpos#1 1.0 +(byte) collision::xpos#2 1.0 +(byte) collision::xpos#3 1.0 +(byte) collision::xpos#5 4.954545454545454 (byte) collision::ypos -(byte) collision::ypos#0 1.3333333333333333 -(byte) collision::ypos#1 2.0 -(byte) collision::ypos#2 2.0 -(byte) collision::ypos#4 5.35 +(byte) collision::ypos#0 1.0 +(byte) collision::ypos#1 1.3333333333333333 +(byte) collision::ypos#2 1.3333333333333333 +(byte) collision::ypos#3 1.3333333333333333 +(byte) collision::ypos#4 5.0 +(byte) collision::ypos2 +(byte) collision::ypos2#0 4.0 +(byte) collision::ypos2#1 50.5 +(byte) collision::ypos2#2 87.06666666666668 (byte) current_movedown_counter (byte) current_movedown_counter#10 0.5333333333333333 -(byte) current_movedown_counter#12 0.6190476190476191 +(byte) current_movedown_counter#12 0.5 (byte) current_movedown_counter#15 1.3 (byte) current_movedown_rate (byte) current_movedown_rate_fast (byte*) current_piece -(byte*) current_piece#11 0.45454545454545453 -(byte*) current_piece#13 0.37254901960784303 +(byte*) current_piece#11 0.5 +(byte*) current_piece#13 0.3382352941176471 +(byte*) current_piece#15 10.0 (byte*) current_piece#23 4.0 +(byte*~) current_piece#67 4.0 +(byte*~) current_piece#68 4.0 +(byte*~) current_piece#69 4.0 +(byte*~) current_piece#70 4.0 (byte) current_piece_color -(byte) current_piece_color#11 20.73469387755102 -(byte) current_piece_color#13 1.2380952380952381 +(byte) current_piece_color#11 20.32 +(byte) current_piece_color#13 1.0 (byte) current_piece_color#23 4.0 -(byte) current_piece_color#62 56.22222222222223 -(byte~) current_piece_color#69 22.0 +(byte) current_piece_color#63 53.26315789473684 +(byte~) current_piece_color#70 22.0 (byte*) current_piece_gfx -(byte*) current_piece_gfx#10 4.0 -(byte*~) current_piece_gfx#108 4.0 -(byte*~) current_piece_gfx#109 4.0 -(byte*) current_piece_gfx#11 2.375 -(byte*~) current_piece_gfx#110 4.0 -(byte*) current_piece_gfx#16 20.77551020408163 -(byte*) current_piece_gfx#18 0.6896551724137933 -(byte*) current_piece_gfx#30 4.0 -(byte*) current_piece_gfx#46 50.349999999999994 -(byte*) current_piece_gfx#75 56.22222222222223 -(byte*) current_piece_gfx#9 4.0 -(byte*~) current_piece_gfx#99 7.333333333333333 +(byte*) current_piece_gfx#15 20.32 +(byte*) current_piece_gfx#17 0.2857142857142857 +(byte*) current_piece_gfx#18 1.75 +(byte*) current_piece_gfx#29 4.0 +(byte*) current_piece_gfx#61 53.26315789473684 +(byte*) current_piece_gfx#8 4.0 +(byte*~) current_piece_gfx#82 11.0 (byte) current_piece_orientation -(byte) current_piece_orientation#10 3.0 -(byte) current_piece_orientation#11 1.6875 -(byte) current_piece_orientation#16 0.45454545454545453 -(byte) current_piece_orientation#18 0.6896551724137933 -(byte) current_piece_orientation#29 4.0 -(byte) current_piece_orientation#9 3.0 +(byte) current_piece_orientation#15 0.5 +(byte) current_piece_orientation#18 0.32 +(byte) current_piece_orientation#23 1.0625 +(byte) current_piece_orientation#33 4.0 +(byte) current_piece_orientation#8 3.0 (byte) current_xpos -(byte) current_xpos#10 4.0 -(byte) current_xpos#11 2.375 -(byte) current_xpos#16 20.77551020408163 -(byte) current_xpos#19 0.7272727272727271 -(byte) current_xpos#35 4.0 -(byte) current_xpos#81 56.22222222222223 +(byte) current_xpos#16 20.36 +(byte) current_xpos#19 0.72 +(byte) current_xpos#23 0.8292682926829271 +(byte) current_xpos#36 4.0 +(byte) current_xpos#62 5.894736842105264 +(byte) current_xpos#7 4.0 (byte) current_xpos#9 4.0 -(byte~) current_xpos#91 11.0 +(byte~) current_xpos#92 7.333333333333333 (byte) current_ypos -(byte) current_ypos#12 2.458333333333333 -(byte) current_ypos#16 0.588235294117647 -(byte) current_ypos#30 4.0 -(byte) current_ypos#35 6.222222222222221 +(byte) current_ypos#12 2.4081632653061225 +(byte) current_ypos#16 0.4705882352941177 +(byte) current_ypos#22 13.0 +(byte) current_ypos#31 4.0 (byte) current_ypos#4 4.0 -(byte~) current_ypos#75 5.5 +(byte~) current_ypos#72 5.5 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (byte*) fill::addr (byte*) fill::addr#0 2.0 @@ -4907,7 +5049,7 @@ VARIABLE REGISTER WEIGHTS (byte) keyboard_events_size#1 2002.0 (byte) keyboard_events_size#10 810.9000000000001 (byte) keyboard_events_size#13 9.967741935483872 -(byte) keyboard_events_size#16 0.6 +(byte) keyboard_events_size#16 0.49999999999999994 (byte) keyboard_events_size#19 2.6 (byte) keyboard_events_size#2 2002.0 (byte) keyboard_events_size#29 43.57142857142858 @@ -4945,69 +5087,83 @@ VARIABLE REGISTER WEIGHTS (byte*) lock_current::playfield_line (byte*) lock_current::playfield_line#0 122.44444444444446 (void()) main() +(byte~) main::$10 22.0 (byte~) main::$8 22.0 (byte~) main::$9 22.0 (byte) main::key_event -(byte) main::key_event#0 5.5 +(byte) main::key_event#0 4.0 (byte) main::render (byte) main::render#1 4.4 -(byte) main::render#2 22.0 +(byte) main::render#2 4.4 +(byte) main::render#3 22.0 (byte[4*4*4]) piece_t -(byte()) play_movedown((byte) play_movedown::key_event) -(byte~) play_movedown::$12 4.0 -(byte~) play_movedown::$2 4.0 -(byte) play_movedown::key_event -(byte) play_movedown::key_event#0 6.5 -(byte) play_movedown::movedown -(byte) play_movedown::movedown#10 1.0 -(byte) play_movedown::movedown#2 4.0 -(byte) play_movedown::movedown#3 4.0 -(byte) play_movedown::movedown#6 6.0 -(byte) play_movedown::movedown#7 5.0 -(byte) play_movedown::return -(byte) play_movedown::return#0 22.0 -(byte) play_movedown::return#3 3.6666666666666665 -(byte()) play_moveother((byte) play_moveother::key_event) -(byte~) play_moveother::$0 4.0 -(byte/signed word/word/dword/signed dword~) play_moveother::$11 4.0 -(byte~) play_moveother::$15 4.0 -(byte~) play_moveother::$19 4.0 -(byte/signed word/word/dword/signed dword~) play_moveother::$8 4.0 -(byte) play_moveother::key_event -(byte) play_moveother::key_event#0 3.5000000000000004 -(byte) play_moveother::render -(byte) play_moveother::return -(byte) play_moveother::return#0 22.0 -(byte) play_moveother::return#1 3.6666666666666665 +(byte()) play_move_down((byte) play_move_down::key_event) +(byte~) play_move_down::$12 4.0 +(byte~) play_move_down::$2 4.0 +(byte) play_move_down::key_event +(byte) play_move_down::key_event#0 6.5 +(byte) play_move_down::movedown +(byte) play_move_down::movedown#10 1.0 +(byte) play_move_down::movedown#2 4.0 +(byte) play_move_down::movedown#3 4.0 +(byte) play_move_down::movedown#6 6.0 +(byte) play_move_down::movedown#7 5.0 +(byte) play_move_down::return +(byte) play_move_down::return#0 22.0 +(byte) play_move_down::return#3 3.6666666666666665 +(byte()) play_move_leftright((byte) play_move_leftright::key_event) +(byte~) play_move_leftright::$4 4.0 +(byte~) play_move_leftright::$8 4.0 +(byte) play_move_leftright::key_event +(byte) play_move_leftright::key_event#0 7.5 +(byte) play_move_leftright::return +(byte) play_move_leftright::return#0 22.0 +(byte) play_move_leftright::return#2 3.6666666666666665 +(byte()) play_move_rotate((byte) play_move_rotate::key_event) +(byte/signed word/word/dword/signed dword~) play_move_rotate::$2 4.0 +(byte/signed word/word/dword/signed dword~) play_move_rotate::$4 4.0 +(byte~) play_move_rotate::$6 4.0 +(byte~) play_move_rotate::$8 4.0 +(byte) play_move_rotate::key_event +(byte) play_move_rotate::key_event#0 7.5 +(byte) play_move_rotate::orientation +(byte) play_move_rotate::orientation#1 4.0 +(byte) play_move_rotate::orientation#2 4.0 +(byte) play_move_rotate::orientation#3 0.8 +(byte) play_move_rotate::return +(byte) play_move_rotate::return#0 22.0 +(byte) play_move_rotate::return#2 3.6666666666666665 (byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield (byte*[PLAYFIELD_LINES#0]) playfield_lines (void()) render_current() -(byte~) render_current::$3 202.0 (byte) render_current::c (byte) render_current::c#1 1501.5 -(byte) render_current::c#2 429.0 +(byte) render_current::c#2 286.0 (byte) render_current::current_cell (byte) render_current::current_cell#0 1001.0 (byte) render_current::i (byte) render_current::i#1 429.0 (byte) render_current::i#2 1552.0 -(byte) render_current::i#4 60.599999999999994 -(byte) render_current::i#8 401.0 +(byte) render_current::i#4 75.75 +(byte) render_current::i#8 300.75 (byte) render_current::l (byte) render_current::l#1 151.5 -(byte) render_current::l#2 20.2 -(byte) render_current::line -(byte) render_current::line#0 151.5 +(byte) render_current::l#3 13.466666666666667 (byte*) render_current::screen_line -(byte*) render_current::screen_line#0 110.19999999999999 +(byte*) render_current::screen_line#0 100.18181818181819 (byte) render_current::xpos -(byte) render_current::xpos#0 1501.5 +(byte) render_current::xpos#0 202.0 +(byte) render_current::xpos#1 667.3333333333334 +(byte) render_current::xpos#2 684.1666666666667 +(byte) render_current::ypos2 +(byte) render_current::ypos2#0 4.0 +(byte) render_current::ypos2#1 67.33333333333333 +(byte) render_current::ypos2#2 29.000000000000004 (void()) render_playfield() (byte~) render_playfield::$1 202.0 -(byte*~) render_playfield::$3 2002.0 (byte) render_playfield::c (byte) render_playfield::c#1 1501.5 -(byte) render_playfield::c#2 750.75 +(byte) render_playfield::c#2 500.5 (byte) render_playfield::i (byte) render_playfield::i#1 420.59999999999997 (byte) render_playfield::i#2 1034.6666666666667 @@ -5016,38 +5172,48 @@ VARIABLE REGISTER WEIGHTS (byte) render_playfield::l#1 151.5 (byte) render_playfield::l#2 33.666666666666664 (byte*) render_playfield::line -(byte*) render_playfield::line#0 157.42857142857142 +(byte*) render_playfield::line#0 202.0 +(byte*) render_playfield::line#1 500.5 +(byte*) render_playfield::line#2 1552.0 (byte*[PLAYFIELD_LINES#0+3]) screen_lines (void()) spawn_current() Initial phi equivalence classes -[ current_ypos#12 current_ypos#16 current_ypos#30 current_ypos#4 ] +[ 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#35 current_ypos#75 ] -[ current_piece_gfx#75 current_piece_gfx#99 ] -[ current_xpos#81 current_xpos#91 ] -[ current_piece_color#62 current_piece_color#69 ] -[ render_current::l#2 render_current::l#1 ] +[ current_ypos#22 current_ypos#72 ] +[ current_xpos#62 current_xpos#92 ] +[ current_piece_gfx#61 current_piece_gfx#82 ] +[ current_piece_color#63 current_piece_color#70 ] +[ 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 ] +[ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] [ render_current::c#2 render_current::c#1 ] [ render_playfield::l#2 render_playfield::l#1 ] -[ render_playfield::c#2 render_playfield::c#1 ] [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -[ play_moveother::return#1 ] -[ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 ] -[ current_piece_gfx#46 current_piece_gfx#108 current_piece_gfx#109 current_piece_gfx#110 ] -[ collision::xpos#8 collision::xpos#0 collision::xpos#1 collision::xpos#2 ] -[ collision::l#2 collision::l#1 ] +[ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] +[ render_playfield::c#2 render_playfield::c#1 ] +[ play_move_rotate::return#2 ] +[ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +[ current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 ] +[ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] +[ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] +[ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] +[ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] +[ collision::l#6 collision::l#1 ] [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] +[ collision::col#2 collision::col#9 collision::col#1 ] [ collision::c#2 collision::c#1 ] -[ collision::return#10 ] -[ play_movedown::movedown#6 play_movedown::movedown#3 play_movedown::movedown#7 play_movedown::movedown#2 play_movedown::movedown#10 ] +[ collision::return#14 ] +[ play_move_leftright::return#2 ] +[ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] [ current_piece#23 current_piece#11 current_piece#13 ] -[ current_piece_orientation#29 current_piece_orientation#16 current_piece_orientation#11 current_piece_orientation#18 current_piece_orientation#10 current_piece_orientation#9 ] -[ current_piece_gfx#30 current_piece_gfx#16 current_piece_gfx#11 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#9 ] +[ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] +[ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#8 current_piece_gfx#17 ] [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] -[ current_xpos#35 current_xpos#16 current_xpos#11 current_xpos#19 current_xpos#9 current_xpos#10 ] -[ play_movedown::return#3 ] +[ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +[ play_move_down::return#3 ] [ lock_current::l#2 lock_current::l#1 ] [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] [ lock_current::c#2 lock_current::c#1 ] @@ -5068,39 +5234,38 @@ Initial phi equivalence classes [ fill::addr#2 fill::addr#0 fill::addr#1 ] Added variable keyboard_event_get::return#3 to zero page equivalence class [ keyboard_event_get::return#3 ] Added variable main::key_event#0 to zero page equivalence class [ main::key_event#0 ] -Added variable play_movedown::key_event#0 to zero page equivalence class [ play_movedown::key_event#0 ] -Added variable play_movedown::return#0 to zero page equivalence class [ play_movedown::return#0 ] +Added variable play_move_down::key_event#0 to zero page equivalence class [ play_move_down::key_event#0 ] +Added variable play_move_down::return#0 to zero page equivalence class [ play_move_down::return#0 ] Added variable main::$8 to zero page equivalence class [ main::$8 ] Added variable main::render#1 to zero page equivalence class [ main::render#1 ] -Added variable play_moveother::key_event#0 to zero page equivalence class [ play_moveother::key_event#0 ] -Added variable play_moveother::return#0 to zero page equivalence class [ play_moveother::return#0 ] +Added variable play_move_leftright::key_event#0 to zero page equivalence class [ play_move_leftright::key_event#0 ] +Added variable play_move_leftright::return#0 to zero page equivalence class [ play_move_leftright::return#0 ] Added variable main::$9 to zero page equivalence class [ main::$9 ] Added variable main::render#2 to zero page equivalence class [ main::render#2 ] -Added variable render_current::line#0 to zero page equivalence class [ render_current::line#0 ] -Added variable render_current::$3 to zero page equivalence class [ render_current::$3 ] +Added variable play_move_rotate::key_event#0 to zero page equivalence class [ play_move_rotate::key_event#0 ] +Added variable play_move_rotate::return#0 to zero page equivalence class [ play_move_rotate::return#0 ] +Added variable main::$10 to zero page equivalence class [ main::$10 ] +Added variable main::render#3 to zero page equivalence class [ main::render#3 ] Added variable render_current::screen_line#0 to zero page equivalence class [ render_current::screen_line#0 ] Added variable render_current::current_cell#0 to zero page equivalence class [ render_current::current_cell#0 ] -Added variable render_current::xpos#0 to zero page equivalence class [ render_current::xpos#0 ] Added variable render_playfield::$1 to zero page equivalence class [ render_playfield::$1 ] -Added variable render_playfield::line#0 to zero page equivalence class [ render_playfield::line#0 ] -Added variable render_playfield::$3 to zero page equivalence class [ render_playfield::$3 ] -Added variable play_moveother::$0 to zero page equivalence class [ play_moveother::$0 ] -Added variable play_moveother::$8 to zero page equivalence class [ play_moveother::$8 ] -Added variable play_moveother::$11 to zero page equivalence class [ play_moveother::$11 ] -Added variable collision::return#12 to zero page equivalence class [ collision::return#12 ] -Added variable play_moveother::$15 to zero page equivalence class [ play_moveother::$15 ] -Added variable collision::return#11 to zero page equivalence class [ collision::return#11 ] -Added variable play_moveother::$19 to zero page equivalence class [ play_moveother::$19 ] -Added variable collision::line#0 to zero page equivalence class [ collision::line#0 ] -Added variable collision::$1 to zero page equivalence class [ collision::$1 ] +Added variable play_move_rotate::$2 to zero page equivalence class [ play_move_rotate::$2 ] +Added variable collision::return#13 to zero page equivalence class [ collision::return#13 ] +Added variable play_move_rotate::$6 to zero page equivalence class [ play_move_rotate::$6 ] +Added variable play_move_rotate::$8 to zero page equivalence class [ play_move_rotate::$8 ] +Added variable play_move_rotate::$4 to zero page equivalence class [ play_move_rotate::$4 ] +Added variable collision::piece_gfx#0 to zero page equivalence class [ collision::piece_gfx#0 ] Added variable collision::playfield_line#0 to zero page equivalence class [ collision::playfield_line#0 ] Added variable collision::i#1 to zero page equivalence class [ collision::i#1 ] -Added variable collision::col#0 to zero page equivalence class [ collision::col#0 ] Added variable collision::$7 to zero page equivalence class [ collision::$7 ] +Added variable collision::return#12 to zero page equivalence class [ collision::return#12 ] +Added variable play_move_leftright::$4 to zero page equivalence class [ play_move_leftright::$4 ] +Added variable collision::return#1 to zero page equivalence class [ collision::return#1 ] +Added variable play_move_leftright::$8 to zero page equivalence class [ play_move_leftright::$8 ] Added variable keyboard_event_pressed::return#12 to zero page equivalence class [ keyboard_event_pressed::return#12 ] -Added variable play_movedown::$2 to zero page equivalence class [ play_movedown::$2 ] +Added variable play_move_down::$2 to zero page equivalence class [ play_move_down::$2 ] Added variable collision::return#0 to zero page equivalence class [ collision::return#0 ] -Added variable play_movedown::$12 to zero page equivalence class [ play_movedown::$12 ] +Added variable play_move_down::$12 to zero page equivalence class [ play_move_down::$12 ] Added variable lock_current::line#0 to zero page equivalence class [ lock_current::line#0 ] Added variable lock_current::$1 to zero page equivalence class [ lock_current::$1 ] Added variable lock_current::playfield_line#0 to zero page equivalence class [ lock_current::playfield_line#0 ] @@ -5131,33 +5296,41 @@ Added variable init::$8 to zero page equivalence class [ init::$8 ] Added variable init::$13 to zero page equivalence class [ init::$13 ] Added variable fill::end#0 to zero page equivalence class [ fill::end#0 ] Complete equivalence classes -[ current_ypos#12 current_ypos#16 current_ypos#30 current_ypos#4 ] +[ 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#35 current_ypos#75 ] -[ current_piece_gfx#75 current_piece_gfx#99 ] -[ current_xpos#81 current_xpos#91 ] -[ current_piece_color#62 current_piece_color#69 ] -[ render_current::l#2 render_current::l#1 ] +[ current_ypos#22 current_ypos#72 ] +[ current_xpos#62 current_xpos#92 ] +[ current_piece_gfx#61 current_piece_gfx#82 ] +[ current_piece_color#63 current_piece_color#70 ] +[ 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 ] +[ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] [ render_current::c#2 render_current::c#1 ] [ render_playfield::l#2 render_playfield::l#1 ] -[ render_playfield::c#2 render_playfield::c#1 ] [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -[ play_moveother::return#1 ] -[ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 ] -[ current_piece_gfx#46 current_piece_gfx#108 current_piece_gfx#109 current_piece_gfx#110 ] -[ collision::xpos#8 collision::xpos#0 collision::xpos#1 collision::xpos#2 ] -[ collision::l#2 collision::l#1 ] +[ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] +[ render_playfield::c#2 render_playfield::c#1 ] +[ play_move_rotate::return#2 ] +[ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +[ current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 ] +[ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] +[ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] +[ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] +[ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] +[ collision::l#6 collision::l#1 ] [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] +[ collision::col#2 collision::col#9 collision::col#1 ] [ collision::c#2 collision::c#1 ] -[ collision::return#10 ] -[ play_movedown::movedown#6 play_movedown::movedown#3 play_movedown::movedown#7 play_movedown::movedown#2 play_movedown::movedown#10 ] +[ collision::return#14 ] +[ play_move_leftright::return#2 ] +[ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] [ current_piece#23 current_piece#11 current_piece#13 ] -[ current_piece_orientation#29 current_piece_orientation#16 current_piece_orientation#11 current_piece_orientation#18 current_piece_orientation#10 current_piece_orientation#9 ] -[ current_piece_gfx#30 current_piece_gfx#16 current_piece_gfx#11 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#9 ] +[ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] +[ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#8 current_piece_gfx#17 ] [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] -[ current_xpos#35 current_xpos#16 current_xpos#11 current_xpos#19 current_xpos#9 current_xpos#10 ] -[ play_movedown::return#3 ] +[ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +[ play_move_down::return#3 ] [ lock_current::l#2 lock_current::l#1 ] [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] [ lock_current::c#2 lock_current::c#1 ] @@ -5178,39 +5351,38 @@ Complete equivalence classes [ fill::addr#2 fill::addr#0 fill::addr#1 ] [ keyboard_event_get::return#3 ] [ main::key_event#0 ] -[ play_movedown::key_event#0 ] -[ play_movedown::return#0 ] +[ play_move_down::key_event#0 ] +[ play_move_down::return#0 ] [ main::$8 ] [ main::render#1 ] -[ play_moveother::key_event#0 ] -[ play_moveother::return#0 ] +[ play_move_leftright::key_event#0 ] +[ play_move_leftright::return#0 ] [ main::$9 ] [ main::render#2 ] -[ render_current::line#0 ] -[ render_current::$3 ] +[ play_move_rotate::key_event#0 ] +[ play_move_rotate::return#0 ] +[ main::$10 ] +[ main::render#3 ] [ render_current::screen_line#0 ] [ render_current::current_cell#0 ] -[ render_current::xpos#0 ] [ render_playfield::$1 ] -[ render_playfield::line#0 ] -[ render_playfield::$3 ] -[ play_moveother::$0 ] -[ play_moveother::$8 ] -[ play_moveother::$11 ] -[ collision::return#12 ] -[ play_moveother::$15 ] -[ collision::return#11 ] -[ play_moveother::$19 ] -[ collision::line#0 ] -[ collision::$1 ] +[ play_move_rotate::$2 ] +[ collision::return#13 ] +[ play_move_rotate::$6 ] +[ play_move_rotate::$8 ] +[ play_move_rotate::$4 ] +[ collision::piece_gfx#0 ] [ collision::playfield_line#0 ] [ collision::i#1 ] -[ collision::col#0 ] [ collision::$7 ] +[ collision::return#12 ] +[ play_move_leftright::$4 ] +[ collision::return#1 ] +[ play_move_leftright::$8 ] [ keyboard_event_pressed::return#12 ] -[ play_movedown::$2 ] +[ play_move_down::$2 ] [ collision::return#0 ] -[ play_movedown::$12 ] +[ play_move_down::$12 ] [ lock_current::line#0 ] [ lock_current::$1 ] [ lock_current::playfield_line#0 ] @@ -5240,115 +5412,122 @@ Complete equivalence classes [ init::$8 ] [ init::$13 ] [ fill::end#0 ] -Allocated zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#30 current_ypos#4 ] +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#35 current_ypos#75 ] -Allocated zp ZP_WORD:5 [ current_piece_gfx#75 current_piece_gfx#99 ] -Allocated zp ZP_BYTE:7 [ current_xpos#81 current_xpos#91 ] -Allocated zp ZP_BYTE:8 [ current_piece_color#62 current_piece_color#69 ] -Allocated zp ZP_BYTE:9 [ render_current::l#2 render_current::l#1 ] -Allocated zp ZP_BYTE:10 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] -Allocated zp ZP_BYTE:11 [ render_current::c#2 render_current::c#1 ] -Allocated zp ZP_BYTE:12 [ render_playfield::l#2 render_playfield::l#1 ] -Allocated zp ZP_BYTE:13 [ render_playfield::c#2 render_playfield::c#1 ] -Allocated zp ZP_BYTE:14 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Allocated zp ZP_BYTE:15 [ play_moveother::return#1 ] -Allocated zp ZP_BYTE:16 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 ] -Allocated zp ZP_WORD:17 [ current_piece_gfx#46 current_piece_gfx#108 current_piece_gfx#109 current_piece_gfx#110 ] -Allocated zp ZP_BYTE:19 [ collision::xpos#8 collision::xpos#0 collision::xpos#1 collision::xpos#2 ] -Allocated zp ZP_BYTE:20 [ collision::l#2 collision::l#1 ] -Allocated zp ZP_BYTE:21 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] -Allocated zp ZP_BYTE:22 [ collision::c#2 collision::c#1 ] -Allocated zp ZP_BYTE:23 [ collision::return#10 ] -Allocated zp ZP_BYTE:24 [ play_movedown::movedown#6 play_movedown::movedown#3 play_movedown::movedown#7 play_movedown::movedown#2 play_movedown::movedown#10 ] -Allocated zp ZP_WORD:25 [ current_piece#23 current_piece#11 current_piece#13 ] -Allocated zp ZP_BYTE:27 [ current_piece_orientation#29 current_piece_orientation#16 current_piece_orientation#11 current_piece_orientation#18 current_piece_orientation#10 current_piece_orientation#9 ] -Allocated zp ZP_WORD:28 [ current_piece_gfx#30 current_piece_gfx#16 current_piece_gfx#11 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#9 ] -Allocated zp ZP_BYTE:30 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] -Allocated zp ZP_BYTE:31 [ current_xpos#35 current_xpos#16 current_xpos#11 current_xpos#19 current_xpos#9 current_xpos#10 ] -Allocated zp ZP_BYTE:32 [ play_movedown::return#3 ] -Allocated zp ZP_BYTE:33 [ lock_current::l#2 lock_current::l#1 ] -Allocated zp ZP_BYTE:34 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] -Allocated zp ZP_BYTE:35 [ lock_current::c#2 lock_current::c#1 ] -Allocated zp ZP_BYTE:36 [ keyboard_event_pressed::keycode#5 ] -Allocated zp ZP_BYTE:37 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Allocated zp ZP_BYTE:38 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Allocated zp ZP_BYTE:39 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Allocated zp ZP_BYTE:40 [ 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:41 [ 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:42 [ init::i#2 init::i#1 ] -Allocated zp ZP_WORD:43 [ init::li#2 init::li#1 ] -Allocated zp ZP_BYTE:45 [ init::j#2 init::j#1 ] -Allocated zp ZP_WORD:46 [ init::pli#2 init::pli#1 ] -Allocated zp ZP_WORD:48 [ init::line#4 init::line#1 ] -Allocated zp ZP_BYTE:50 [ init::l#4 init::l#1 ] -Allocated zp ZP_BYTE:51 [ init::c#2 init::c#1 ] -Allocated zp ZP_BYTE:52 [ fill::val#3 ] -Allocated zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] -Allocated zp ZP_BYTE:55 [ keyboard_event_get::return#3 ] -Allocated zp ZP_BYTE:56 [ main::key_event#0 ] -Allocated zp ZP_BYTE:57 [ play_movedown::key_event#0 ] -Allocated zp ZP_BYTE:58 [ play_movedown::return#0 ] -Allocated zp ZP_BYTE:59 [ main::$8 ] -Allocated zp ZP_BYTE:60 [ main::render#1 ] -Allocated zp ZP_BYTE:61 [ play_moveother::key_event#0 ] -Allocated zp ZP_BYTE:62 [ play_moveother::return#0 ] -Allocated zp ZP_BYTE:63 [ main::$9 ] -Allocated zp ZP_BYTE:64 [ main::render#2 ] -Allocated zp ZP_BYTE:65 [ render_current::line#0 ] -Allocated zp ZP_BYTE:66 [ render_current::$3 ] -Allocated zp ZP_WORD:67 [ render_current::screen_line#0 ] -Allocated zp ZP_BYTE:69 [ render_current::current_cell#0 ] -Allocated zp ZP_BYTE:70 [ render_current::xpos#0 ] -Allocated zp ZP_BYTE:71 [ render_playfield::$1 ] -Allocated zp ZP_WORD:72 [ render_playfield::line#0 ] -Allocated zp ZP_WORD:74 [ render_playfield::$3 ] -Allocated zp ZP_BYTE:76 [ play_moveother::$0 ] -Allocated zp ZP_BYTE:77 [ play_moveother::$8 ] -Allocated zp ZP_BYTE:78 [ play_moveother::$11 ] -Allocated zp ZP_BYTE:79 [ collision::return#12 ] -Allocated zp ZP_BYTE:80 [ play_moveother::$15 ] -Allocated zp ZP_BYTE:81 [ collision::return#11 ] -Allocated zp ZP_BYTE:82 [ play_moveother::$19 ] -Allocated zp ZP_BYTE:83 [ collision::line#0 ] -Allocated zp ZP_BYTE:84 [ collision::$1 ] -Allocated zp ZP_WORD:85 [ collision::playfield_line#0 ] -Allocated zp ZP_BYTE:87 [ collision::i#1 ] -Allocated zp ZP_BYTE:88 [ collision::col#0 ] -Allocated zp ZP_BYTE:89 [ collision::$7 ] -Allocated zp ZP_BYTE:90 [ keyboard_event_pressed::return#12 ] -Allocated zp ZP_BYTE:91 [ play_movedown::$2 ] -Allocated zp ZP_BYTE:92 [ collision::return#0 ] -Allocated zp ZP_BYTE:93 [ play_movedown::$12 ] -Allocated zp ZP_BYTE:94 [ lock_current::line#0 ] -Allocated zp ZP_BYTE:95 [ lock_current::$1 ] -Allocated zp ZP_WORD:96 [ lock_current::playfield_line#0 ] -Allocated zp ZP_BYTE:98 [ lock_current::cell#0 ] -Allocated zp ZP_BYTE:99 [ lock_current::col#0 ] -Allocated zp ZP_BYTE:100 [ keyboard_event_pressed::$0 ] -Allocated zp ZP_BYTE:101 [ keyboard_event_pressed::row_bits#0 ] -Allocated zp ZP_BYTE:102 [ keyboard_event_pressed::$1 ] -Allocated zp ZP_BYTE:103 [ keyboard_event_pressed::return#11 ] -Allocated zp ZP_BYTE:104 [ keyboard_matrix_read::rowid#0 ] -Allocated zp ZP_BYTE:105 [ keyboard_matrix_read::return#2 ] -Allocated zp ZP_BYTE:106 [ keyboard_event_scan::row_scan#0 ] -Allocated zp ZP_BYTE:107 [ keyboard_event_pressed::return#0 ] -Allocated zp ZP_BYTE:108 [ keyboard_event_scan::$14 ] -Allocated zp ZP_BYTE:109 [ keyboard_event_pressed::return#1 ] -Allocated zp ZP_BYTE:110 [ keyboard_event_scan::$18 ] -Allocated zp ZP_BYTE:111 [ keyboard_event_pressed::return#2 ] -Allocated zp ZP_BYTE:112 [ keyboard_event_scan::$22 ] -Allocated zp ZP_BYTE:113 [ keyboard_event_pressed::return#10 ] -Allocated zp ZP_BYTE:114 [ keyboard_event_scan::$26 ] -Allocated zp ZP_BYTE:115 [ keyboard_event_scan::$3 ] -Allocated zp ZP_BYTE:116 [ keyboard_event_scan::$4 ] -Allocated zp ZP_BYTE:117 [ keyboard_event_scan::event_type#0 ] -Allocated zp ZP_BYTE:118 [ keyboard_event_scan::$11 ] -Allocated zp ZP_BYTE:119 [ keyboard_matrix_read::return#0 ] -Allocated zp ZP_BYTE:120 [ init::$5 ] -Allocated zp ZP_BYTE:121 [ init::$8 ] -Allocated zp ZP_WORD:122 [ init::$13 ] -Allocated zp ZP_WORD:124 [ fill::end#0 ] +Allocated zp ZP_BYTE:4 [ current_ypos#22 current_ypos#72 ] +Allocated zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 ] +Allocated zp ZP_WORD:6 [ current_piece_gfx#61 current_piece_gfx#82 ] +Allocated zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 ] +Allocated zp ZP_BYTE: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 ] +Allocated zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] +Allocated zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 ] +Allocated zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] +Allocated zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] +Allocated zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] +Allocated zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] +Allocated zp ZP_BYTE:19 [ play_move_rotate::return#2 ] +Allocated zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +Allocated zp ZP_WORD:21 [ current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 ] +Allocated zp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] +Allocated zp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] +Allocated zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] +Allocated zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] +Allocated zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] +Allocated zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] +Allocated zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] +Allocated zp ZP_BYTE:30 [ collision::c#2 collision::c#1 ] +Allocated zp ZP_BYTE:31 [ collision::return#14 ] +Allocated zp ZP_BYTE:32 [ play_move_leftright::return#2 ] +Allocated zp ZP_BYTE:33 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] +Allocated zp ZP_WORD:34 [ current_piece#23 current_piece#11 current_piece#13 ] +Allocated zp ZP_BYTE:36 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] +Allocated zp ZP_WORD:37 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#8 current_piece_gfx#17 ] +Allocated zp ZP_BYTE:39 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] +Allocated zp ZP_BYTE:40 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +Allocated zp ZP_BYTE:41 [ play_move_down::return#3 ] +Allocated zp ZP_BYTE:42 [ lock_current::l#2 lock_current::l#1 ] +Allocated zp ZP_BYTE:43 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] +Allocated zp ZP_BYTE:44 [ lock_current::c#2 lock_current::c#1 ] +Allocated zp ZP_BYTE:45 [ keyboard_event_pressed::keycode#5 ] +Allocated zp ZP_BYTE:46 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Allocated zp ZP_BYTE:47 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Allocated zp ZP_BYTE:48 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Allocated zp ZP_BYTE:49 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] +Allocated zp ZP_BYTE:50 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Allocated zp ZP_BYTE:51 [ init::i#2 init::i#1 ] +Allocated zp ZP_WORD:52 [ init::li#2 init::li#1 ] +Allocated zp ZP_BYTE:54 [ init::j#2 init::j#1 ] +Allocated zp ZP_WORD:55 [ init::pli#2 init::pli#1 ] +Allocated zp ZP_WORD:57 [ init::line#4 init::line#1 ] +Allocated zp ZP_BYTE:59 [ init::l#4 init::l#1 ] +Allocated zp ZP_BYTE:60 [ init::c#2 init::c#1 ] +Allocated zp ZP_BYTE:61 [ fill::val#3 ] +Allocated zp ZP_WORD:62 [ fill::addr#2 fill::addr#0 fill::addr#1 ] +Allocated zp ZP_BYTE:64 [ keyboard_event_get::return#3 ] +Allocated zp ZP_BYTE:65 [ main::key_event#0 ] +Allocated zp ZP_BYTE:66 [ play_move_down::key_event#0 ] +Allocated zp ZP_BYTE:67 [ play_move_down::return#0 ] +Allocated zp ZP_BYTE:68 [ main::$8 ] +Allocated zp ZP_BYTE:69 [ main::render#1 ] +Allocated zp ZP_BYTE:70 [ play_move_leftright::key_event#0 ] +Allocated zp ZP_BYTE:71 [ play_move_leftright::return#0 ] +Allocated zp ZP_BYTE:72 [ main::$9 ] +Allocated zp ZP_BYTE:73 [ main::render#2 ] +Allocated zp ZP_BYTE:74 [ play_move_rotate::key_event#0 ] +Allocated zp ZP_BYTE:75 [ play_move_rotate::return#0 ] +Allocated zp ZP_BYTE:76 [ main::$10 ] +Allocated zp ZP_BYTE:77 [ main::render#3 ] +Allocated zp ZP_WORD:78 [ render_current::screen_line#0 ] +Allocated zp ZP_BYTE:80 [ render_current::current_cell#0 ] +Allocated zp ZP_BYTE:81 [ render_playfield::$1 ] +Allocated zp ZP_BYTE:82 [ play_move_rotate::$2 ] +Allocated zp ZP_BYTE:83 [ collision::return#13 ] +Allocated zp ZP_BYTE:84 [ play_move_rotate::$6 ] +Allocated zp ZP_BYTE:85 [ play_move_rotate::$8 ] +Allocated zp ZP_BYTE:86 [ play_move_rotate::$4 ] +Allocated zp ZP_WORD:87 [ collision::piece_gfx#0 ] +Allocated zp ZP_WORD:89 [ collision::playfield_line#0 ] +Allocated zp ZP_BYTE:91 [ collision::i#1 ] +Allocated zp ZP_BYTE:92 [ collision::$7 ] +Allocated zp ZP_BYTE:93 [ collision::return#12 ] +Allocated zp ZP_BYTE:94 [ play_move_leftright::$4 ] +Allocated zp ZP_BYTE:95 [ collision::return#1 ] +Allocated zp ZP_BYTE:96 [ play_move_leftright::$8 ] +Allocated zp ZP_BYTE:97 [ keyboard_event_pressed::return#12 ] +Allocated zp ZP_BYTE:98 [ play_move_down::$2 ] +Allocated zp ZP_BYTE:99 [ collision::return#0 ] +Allocated zp ZP_BYTE:100 [ play_move_down::$12 ] +Allocated zp ZP_BYTE:101 [ lock_current::line#0 ] +Allocated zp ZP_BYTE:102 [ lock_current::$1 ] +Allocated zp ZP_WORD:103 [ lock_current::playfield_line#0 ] +Allocated zp ZP_BYTE:105 [ lock_current::cell#0 ] +Allocated zp ZP_BYTE:106 [ lock_current::col#0 ] +Allocated zp ZP_BYTE:107 [ keyboard_event_pressed::$0 ] +Allocated zp ZP_BYTE:108 [ keyboard_event_pressed::row_bits#0 ] +Allocated zp ZP_BYTE:109 [ keyboard_event_pressed::$1 ] +Allocated zp ZP_BYTE:110 [ keyboard_event_pressed::return#11 ] +Allocated zp ZP_BYTE:111 [ keyboard_matrix_read::rowid#0 ] +Allocated zp ZP_BYTE:112 [ keyboard_matrix_read::return#2 ] +Allocated zp ZP_BYTE:113 [ keyboard_event_scan::row_scan#0 ] +Allocated zp ZP_BYTE:114 [ keyboard_event_pressed::return#0 ] +Allocated zp ZP_BYTE:115 [ keyboard_event_scan::$14 ] +Allocated zp ZP_BYTE:116 [ keyboard_event_pressed::return#1 ] +Allocated zp ZP_BYTE:117 [ keyboard_event_scan::$18 ] +Allocated zp ZP_BYTE:118 [ keyboard_event_pressed::return#2 ] +Allocated zp ZP_BYTE:119 [ keyboard_event_scan::$22 ] +Allocated zp ZP_BYTE:120 [ keyboard_event_pressed::return#10 ] +Allocated zp ZP_BYTE:121 [ keyboard_event_scan::$26 ] +Allocated zp ZP_BYTE:122 [ keyboard_event_scan::$3 ] +Allocated zp ZP_BYTE:123 [ keyboard_event_scan::$4 ] +Allocated zp ZP_BYTE:124 [ keyboard_event_scan::event_type#0 ] +Allocated zp ZP_BYTE:125 [ keyboard_event_scan::$11 ] +Allocated zp ZP_BYTE:126 [ keyboard_matrix_read::return#0 ] +Allocated zp ZP_BYTE:127 [ init::$5 ] +Allocated zp ZP_BYTE:128 [ init::$8 ] +Allocated zp ZP_WORD:129 [ init::$13 ] +Allocated zp ZP_WORD:131 [ fill::end#0 ] INITIAL ASM //SEG0 Basic Upstart @@ -5383,51 +5562,54 @@ INITIAL ASM .const COLLISION_BOTTOM = 2 .const COLLISION_LEFT = 4 .const COLLISION_RIGHT = 8 - .label keyboard_events_size = $29 + .label keyboard_events_size = $32 .label current_ypos = 2 - .label current_piece_orientation = $1b - .label current_piece_gfx = $1c - .label current_xpos = $1f - .label current_piece = $19 - .label current_piece_color = $1e + .label current_xpos = $28 + .label current_piece_orientation = $24 + .label current_piece_gfx = $25 + .label current_piece = $22 + .label current_piece_color = $27 .label current_movedown_counter = 3 - .label current_ypos_35 = 4 - .label current_piece_gfx_46 = $11 - .label current_piece_gfx_75 = 5 - .label current_xpos_81 = 7 - .label current_piece_color_62 = 8 - .label current_ypos_75 = 4 - .label current_piece_gfx_99 = 5 - .label current_xpos_91 = 7 - .label current_piece_color_69 = 8 - .label current_piece_gfx_108 = $11 - .label current_piece_gfx_109 = $11 - .label current_piece_gfx_110 = $11 + .label current_piece_15 = $15 + .label current_ypos_22 = 4 + .label current_xpos_62 = 5 + .label current_piece_gfx_61 = 6 + .label current_piece_color_63 = 8 + .label current_ypos_72 = 4 + .label current_xpos_92 = 5 + .label current_piece_gfx_82 = 6 + .label current_piece_color_70 = 8 + .label current_piece_67 = $15 + .label current_piece_68 = $15 + .label current_piece_69 = $15 + .label current_piece_70 = $15 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @20 [phi:@begin->@20] -b20_from_bbegin: - jmp b20 -//SEG4 @20 -b20: +//SEG3 [1] phi from @begin to @21 [phi:@begin->@21] +b21_from_bbegin: + jmp b21 +//SEG4 @21 +b21: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @20 to @end [phi:@20->@end] -bend_from_b20: +//SEG6 [3] phi from @21 to @end [phi:@21->@end] +bend_from_b21: jmp bend //SEG7 @end bend: //SEG8 main main: { - .label _8 = $3b - .label _9 = $3f - .label key_event = $38 - .label render = $3c - .label render_2 = $40 + .label _8 = $44 + .label _9 = $48 + .label _10 = $4c + .label key_event = $41 + .label render = $45 + .label render_2 = $49 + .label render_3 = $4d //SEG9 asm { sei } sei //SEG10 [5] call init - //SEG11 [240] phi from main to init [phi:main->init] + //SEG11 [261] phi from main to init [phi:main->init] init_from_main: jsr init //SEG12 [6] phi from main to main::@21 [phi:main->main::@21] @@ -5436,7 +5618,7 @@ main: { //SEG13 main::@21 b21: //SEG14 [7] call spawn_current - //SEG15 [155] phi from main::@21 to spawn_current [phi:main::@21->spawn_current] + //SEG15 [176] phi from main::@21 to spawn_current [phi:main::@21->spawn_current] spawn_current_from_b21: jsr spawn_current //SEG16 [8] phi from main::@21 to main::@22 [phi:main::@21->main::@22] @@ -5445,7 +5627,7 @@ main: { //SEG17 main::@22 b22: //SEG18 [9] call render_playfield - //SEG19 [60] phi from main::@22 to render_playfield [phi:main::@22->render_playfield] + //SEG19 [66] phi from main::@22 to render_playfield [phi:main::@22->render_playfield] render_playfield_from_b22: jsr render_playfield //SEG20 [10] phi from main::@22 to main::@23 [phi:main::@22->main::@23] @@ -5454,22 +5636,22 @@ main: { //SEG21 main::@23 b23: //SEG22 [11] call render_current - //SEG23 [41] phi from main::@23 to render_current [phi:main::@23->render_current] + //SEG23 [46] phi from main::@23 to render_current [phi:main::@23->render_current] render_current_from_b23: - //SEG24 [41] phi (byte) current_piece_color#62 = (const byte) GREEN#0 [phi:main::@23->render_current#0] -- vbuz1=vbuc1 + //SEG24 [46] phi (byte) current_piece_color#63 = (const byte) GREEN#0 [phi:main::@23->render_current#0] -- vbuz1=vbuc1 lda #GREEN - sta current_piece_color_62 - //SEG25 [41] phi (byte) current_xpos#81 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@23->render_current#1] -- vbuz1=vbuc1 - lda #3 - sta current_xpos_81 - //SEG26 [41] phi (byte*) current_piece_gfx#75 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->render_current#2] -- pbuz1=pbuc1 + sta current_piece_color_63 + //SEG25 [46] phi (byte*) current_piece_gfx#61 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->render_current#1] -- pbuz1=pbuc1 lda #piece_t - sta current_piece_gfx_75+1 - //SEG27 [41] phi (byte) current_ypos#35 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->render_current#3] -- vbuz1=vbuc1 + sta current_piece_gfx_61+1 + //SEG26 [46] phi (byte) current_xpos#62 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@23->render_current#2] -- vbuz1=vbuc1 + lda #3 + sta current_xpos_62 + //SEG27 [46] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->render_current#3] -- vbuz1=vbuc1 lda #0 - sta current_ypos_35 + sta current_ypos_22 jsr render_current //SEG28 [12] phi from main::@23 to main::@1 [phi:main::@23->main::@1] b1_from_b23: @@ -5488,12 +5670,12 @@ main: { //SEG33 [12] phi (byte) current_piece_color#11 = (const byte) GREEN#0 [phi:main::@23->main::@1#4] -- vbuz1=vbuc1 lda #GREEN sta current_piece_color - //SEG34 [12] phi (byte*) current_piece_gfx#16 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->main::@1#5] -- pbuz1=pbuc1 + //SEG34 [12] phi (byte*) current_piece_gfx#15 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->main::@1#5] -- pbuz1=pbuc1 lda #piece_t sta current_piece_gfx+1 - //SEG35 [12] phi (byte) current_piece_orientation#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#6] -- vbuz1=vbuc1 + //SEG35 [12] phi (byte) current_piece_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#6] -- vbuz1=vbuc1 lda #0 sta current_piece_orientation //SEG36 [12] phi (byte*) current_piece#11 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->main::@1#7] -- pbuz1=pbuc1 @@ -5524,7 +5706,7 @@ main: { //SEG43 [15] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL //SEG44 [16] call keyboard_event_scan - //SEG45 [184] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] + //SEG45 [205] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] keyboard_event_scan_from_b9: jsr keyboard_event_scan //SEG46 [17] phi from main::@9 to main::@25 [phi:main::@9->main::@25] @@ -5543,365 +5725,424 @@ main: { //SEG51 [20] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuz2 lda keyboard_event_get.return_3 sta key_event - //SEG52 [21] (byte) play_movedown::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + //SEG52 [21] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 lda key_event - sta play_movedown.key_event - //SEG53 [22] call play_movedown - jsr play_movedown - //SEG54 [23] (byte) play_movedown::return#0 ← (byte) play_movedown::return#3 -- vbuz1=vbuz2 - lda play_movedown.return_3 - sta play_movedown.return + sta play_move_down.key_event + //SEG53 [22] call play_move_down + jsr play_move_down + //SEG54 [23] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuz1=vbuz2 + lda play_move_down.return_3 + sta play_move_down.return jmp b27 //SEG55 main::@27 b27: - //SEG56 [24] (byte~) main::$8 ← (byte) play_movedown::return#0 -- vbuz1=vbuz2 - lda play_movedown.return + //SEG56 [24] (byte~) main::$8 ← (byte) play_move_down::return#0 -- vbuz1=vbuz2 + lda play_move_down.return sta _8 //SEG57 [25] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$8 -- vbuz1=vbuc1_plus_vbuz2 lda #0 clc adc _8 sta render - //SEG58 [26] (byte) play_moveother::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + //SEG58 [26] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 lda key_event - sta play_moveother.key_event - //SEG59 [27] call play_moveother - jsr play_moveother - //SEG60 [28] (byte) play_moveother::return#0 ← (byte) play_moveother::return#1 -- vbuz1=vbuz2 - lda play_moveother.return_1 - sta play_moveother.return + sta play_move_leftright.key_event + //SEG59 [27] call play_move_leftright + jsr play_move_leftright + //SEG60 [28] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 -- vbuz1=vbuz2 + lda play_move_leftright.return_2 + sta play_move_leftright.return jmp b28 //SEG61 main::@28 b28: - //SEG62 [29] (byte~) main::$9 ← (byte) play_moveother::return#0 -- vbuz1=vbuz2 - lda play_moveother.return + //SEG62 [29] (byte~) main::$9 ← (byte) play_move_leftright::return#0 -- vbuz1=vbuz2 + lda play_move_leftright.return sta _9 //SEG63 [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 -- vbuz1=vbuz2_plus_vbuz3 lda render clc adc _9 sta render_2 - //SEG64 [31] if((byte) main::render#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuz1_eq_0_then_la1 + //SEG64 [31] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + lda key_event + sta play_move_rotate.key_event + //SEG65 [32] call play_move_rotate + jsr play_move_rotate + //SEG66 [33] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 -- vbuz1=vbuz2 + lda play_move_rotate.return_2 + sta play_move_rotate.return + jmp b29 + //SEG67 main::@29 + b29: + //SEG68 [34] (byte~) main::$10 ← (byte) play_move_rotate::return#0 -- vbuz1=vbuz2 + lda play_move_rotate.return + sta _10 + //SEG69 [35] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$10 -- vbuz1=vbuz2_plus_vbuz3 lda render_2 + clc + adc _10 + sta render_3 + //SEG70 [36] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuz1_eq_0_then_la1 + lda render_3 cmp #0 beq b10 jmp b19 - //SEG65 main::@19 + //SEG71 main::@19 b19: - //SEG66 [32] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG72 [37] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG67 [33] call render_playfield - //SEG68 [60] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] + //SEG73 [38] call render_playfield + //SEG74 [66] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] render_playfield_from_b19: jsr render_playfield - jmp b29 - //SEG69 main::@29 - b29: - //SEG70 [34] (byte~) current_ypos#75 ← (byte) current_ypos#16 -- vbuz1=vbuz2 - lda current_ypos - sta current_ypos_75 - //SEG71 [35] (byte*~) current_piece_gfx#99 ← (byte*) current_piece_gfx#11 -- pbuz1=pbuz2 - lda current_piece_gfx - sta current_piece_gfx_99 - lda current_piece_gfx+1 - sta current_piece_gfx_99+1 - //SEG72 [36] (byte~) current_xpos#91 ← (byte) current_xpos#11 -- vbuz1=vbuz2 - lda current_xpos - sta current_xpos_91 - //SEG73 [37] (byte~) current_piece_color#69 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 - lda current_piece_color - sta current_piece_color_69 - //SEG74 [38] call render_current - //SEG75 [41] phi from main::@29 to render_current [phi:main::@29->render_current] - render_current_from_b29: - //SEG76 [41] phi (byte) current_piece_color#62 = (byte~) current_piece_color#69 [phi:main::@29->render_current#0] -- register_copy - //SEG77 [41] phi (byte) current_xpos#81 = (byte~) current_xpos#91 [phi:main::@29->render_current#1] -- register_copy - //SEG78 [41] phi (byte*) current_piece_gfx#75 = (byte*~) current_piece_gfx#99 [phi:main::@29->render_current#2] -- register_copy - //SEG79 [41] phi (byte) current_ypos#35 = (byte~) current_ypos#75 [phi:main::@29->render_current#3] -- register_copy - jsr render_current jmp b30 - //SEG80 main::@30 + //SEG75 main::@30 b30: - //SEG81 [39] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG76 [39] (byte~) current_ypos#72 ← (byte) current_ypos#16 -- vbuz1=vbuz2 + lda current_ypos + sta current_ypos_72 + //SEG77 [40] (byte~) current_xpos#92 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + lda current_xpos + sta current_xpos_92 + //SEG78 [41] (byte*~) current_piece_gfx#82 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + lda current_piece_gfx + sta current_piece_gfx_82 + lda current_piece_gfx+1 + sta current_piece_gfx_82+1 + //SEG79 [42] (byte~) current_piece_color#70 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 + lda current_piece_color + sta current_piece_color_70 + //SEG80 [43] call render_current + //SEG81 [46] phi from main::@30 to render_current [phi:main::@30->render_current] + render_current_from_b30: + //SEG82 [46] phi (byte) current_piece_color#63 = (byte~) current_piece_color#70 [phi:main::@30->render_current#0] -- register_copy + //SEG83 [46] phi (byte*) current_piece_gfx#61 = (byte*~) current_piece_gfx#82 [phi:main::@30->render_current#1] -- register_copy + //SEG84 [46] phi (byte) current_xpos#62 = (byte~) current_xpos#92 [phi:main::@30->render_current#2] -- register_copy + //SEG85 [46] phi (byte) current_ypos#22 = (byte~) current_ypos#72 [phi:main::@30->render_current#3] -- register_copy + jsr render_current + jmp b31 + //SEG86 main::@31 + b31: + //SEG87 [44] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL jmp b10 - //SEG82 main::@10 + //SEG88 main::@10 b10: - //SEG83 [40] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG89 [45] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG84 [12] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + //SEG90 [12] phi from main::@10 to main::@1 [phi:main::@10->main::@1] b1_from_b10: - //SEG85 [12] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy - //SEG86 [12] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy - //SEG87 [12] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#2] -- register_copy - //SEG88 [12] phi (byte) current_xpos#16 = (byte) current_xpos#11 [phi:main::@10->main::@1#3] -- register_copy - //SEG89 [12] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#4] -- register_copy - //SEG90 [12] phi (byte*) current_piece_gfx#16 = (byte*) current_piece_gfx#11 [phi:main::@10->main::@1#5] -- register_copy - //SEG91 [12] phi (byte) current_piece_orientation#16 = (byte) current_piece_orientation#11 [phi:main::@10->main::@1#6] -- register_copy - //SEG92 [12] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy + //SEG91 [12] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy + //SEG92 [12] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy + //SEG93 [12] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#2] -- register_copy + //SEG94 [12] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#3] -- register_copy + //SEG95 [12] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#4] -- register_copy + //SEG96 [12] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy + //SEG97 [12] phi (byte) current_piece_orientation#15 = (byte) current_piece_orientation#23 [phi:main::@10->main::@1#6] -- register_copy + //SEG98 [12] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy jmp b1 } -//SEG93 render_current +//SEG99 render_current render_current: { - .label _3 = $42 - .label line = $41 - .label l = 9 - .label screen_line = $43 - .label current_cell = $45 - .label i = $a - .label c = $b - .label xpos = $46 - //SEG94 [42] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] + .label ypos2 = 9 + .label l = $a + .label screen_line = $4e + .label xpos = $c + .label current_cell = $50 + .label i = $b + .label c = $d + //SEG100 [47] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda current_ypos_22 + asl + sta ypos2 + //SEG101 [48] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] b1_from_render_current: - //SEG95 [42] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 + //SEG102 [48] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG96 [42] phi (byte) render_current::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 + //SEG103 [48] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 lda #0 sta l + //SEG104 [48] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy jmp b1 - //SEG97 [42] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] + //SEG105 [48] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] b1_from_b2: - //SEG98 [42] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy - //SEG99 [42] phi (byte) render_current::l#2 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy + //SEG106 [48] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy + //SEG107 [48] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy + //SEG108 [48] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy jmp b1 - //SEG100 render_current::@1 + //SEG109 render_current::@1 b1: - //SEG101 [43] (byte) render_current::line#0 ← (byte) current_ypos#35 + (byte) render_current::l#2 -- vbuz1=vbuz2_plus_vbuz3 - lda current_ypos_35 - clc - adc l - sta line - //SEG102 [44] if((byte) render_current::line#0>=(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 - lda line - cmp #PLAYFIELD_LINES + //SEG110 [49] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 + lda ypos2 + cmp #2*PLAYFIELD_LINES bcs b2_from_b1 jmp b6 - //SEG103 render_current::@6 + //SEG111 render_current::@6 b6: - //SEG104 [45] (byte~) render_current::$3 ← (byte) render_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 - lda line - asl - sta _3 - //SEG105 [46] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 - ldy _3 + //SEG112 [50] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + ldy ypos2 lda screen_lines,y sta screen_line lda screen_lines+1,y sta screen_line+1 - //SEG106 [47] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] + //SEG113 [51] (byte) render_current::xpos#0 ← (byte) current_xpos#62 -- vbuz1=vbuz2 + lda current_xpos_62 + sta xpos + //SEG114 [52] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] b3_from_b6: - //SEG107 [47] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuz1=vbuc1 + //SEG115 [52] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG108 [47] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#1] -- register_copy + //SEG116 [52] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy + //SEG117 [52] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy jmp b3 - //SEG109 [47] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] + //SEG118 [52] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] b3_from_b4: - //SEG110 [47] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy - //SEG111 [47] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#1] -- register_copy + //SEG119 [52] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy + //SEG120 [52] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy + //SEG121 [52] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy jmp b3 - //SEG112 render_current::@3 + //SEG122 render_current::@3 b3: - //SEG113 [48] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#75 + (byte) render_current::i#2) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG123 [53] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#61 + (byte) render_current::i#2) -- vbuz1=pbuz2_derefidx_vbuz3 ldy i - lda (current_piece_gfx_75),y + lda (current_piece_gfx_61),y sta current_cell - //SEG114 [49] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 + //SEG124 [54] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG115 [50] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuz1_eq_0_then_la1 + //SEG125 [55] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuz1_eq_0_then_la1 lda current_cell cmp #0 beq b4 jmp b7 - //SEG116 render_current::@7 + //SEG126 render_current::@7 b7: - //SEG117 [51] (byte) render_current::xpos#0 ← (byte) current_xpos#81 + (byte) render_current::c#2 -- vbuz1=vbuz2_plus_vbuz3 - lda current_xpos_81 - clc - adc c - sta xpos - //SEG118 [52] if((byte) render_current::xpos#0>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 + //SEG127 [56] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 lda xpos cmp #PLAYFIELD_COLS bcs b4 jmp b8 - //SEG119 render_current::@8 + //SEG128 render_current::@8 b8: - //SEG120 [53] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#0) ← (byte) current_piece_color#62 -- pbuz1_derefidx_vbuz2=vbuz3 - lda current_piece_color_62 + //SEG129 [57] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#63 -- pbuz1_derefidx_vbuz2=vbuz3 + lda current_piece_color_63 ldy xpos sta (screen_line),y jmp b4 - //SEG121 render_current::@4 + //SEG130 render_current::@4 b4: - //SEG122 [54] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuz1=_inc_vbuz1 + //SEG131 [58] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 + inc xpos + //SEG132 [59] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG123 [55] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG133 [60] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b3_from_b4 - //SEG124 [56] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] + //SEG134 [61] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] b2_from_b1: b2_from_b4: - //SEG125 [56] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy + //SEG135 [61] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy jmp b2 - //SEG126 render_current::@2 + //SEG136 render_current::@2 b2: - //SEG127 [57] (byte) render_current::l#1 ← ++ (byte) render_current::l#2 -- vbuz1=_inc_vbuz1 + //SEG137 [62] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + lda ypos2 + clc + adc #2 + sta ypos2 + //SEG138 [63] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 inc l - //SEG128 [58] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG139 [64] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1_from_b2 jmp breturn - //SEG129 render_current::@return + //SEG140 render_current::@return breturn: - //SEG130 [59] return + //SEG141 [65] return rts } -//SEG131 render_playfield +//SEG142 render_playfield render_playfield: { - .label _1 = $47 - .label _3 = $4a - .label line = $48 - .label i = $e - .label c = $d - .label l = $c - //SEG132 [61] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + .label _1 = $51 + .label line = $10 + .label i = $f + .label c = $12 + .label l = $e + //SEG143 [67] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG133 [61] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG144 [67] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG134 [61] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG145 [67] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #0 sta l jmp b1 - //SEG135 [61] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG146 [67] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG136 [61] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG137 [61] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG147 [67] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG148 [67] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG138 render_playfield::@1 + //SEG149 render_playfield::@1 b1: - //SEG139 [62] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG150 [68] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda l asl sta _1 - //SEG140 [63] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG151 [69] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuz2 ldy _1 lda screen_lines,y sta line lda screen_lines+1,y sta line+1 - //SEG141 [64] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG152 [70] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG142 [64] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#0] -- register_copy - //SEG143 [64] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#1] -- vbuz1=vbuc1 + //SEG153 [70] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1 lda #0 sta c + //SEG154 [70] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG155 [70] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG144 [64] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG156 [70] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG145 [64] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG146 [64] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG157 [70] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG158 [70] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG159 [70] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG147 render_playfield::@2 + //SEG160 render_playfield::@2 b2: - //SEG148 [65] (byte*~) render_playfield::$3 ← (byte*) render_playfield::line#0 + (byte) render_playfield::c#2 -- pbuz1=pbuz2_plus_vbuz3 - lda c - clc - adc line - sta _3 - lda #0 - adc line+1 - sta _3+1 - //SEG149 [66] *((byte*~) render_playfield::$3) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG161 [71] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 - sta (_3),y - //SEG150 [67] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + sta (line),y + //SEG162 [72] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 + inc line + bne !+ + inc line+1 + !: + //SEG163 [73] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG151 [68] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG164 [74] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG152 [69] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG165 [75] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #PLAYFIELD_COLS-1+1 bne b2_from_b2 jmp b3 - //SEG153 render_playfield::@3 + //SEG166 render_playfield::@3 b3: - //SEG154 [70] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG167 [76] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG155 [71] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG168 [77] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1_from_b3 jmp breturn - //SEG156 render_playfield::@return + //SEG169 render_playfield::@return breturn: - //SEG157 [72] return + //SEG170 [78] return rts } -//SEG158 play_moveother -play_moveother: { - .label _0 = $4c - .label _8 = $4d - .label _11 = $4e - .label _15 = $50 - .label _19 = $52 - .label key_event = $3d - .label return = $3e - .label return_1 = $f - //SEG159 [73] (byte~) play_moveother::$0 ← (byte) play_moveother::key_event#0 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 - lda #$80 - and key_event - sta _0 - //SEG160 [74] if((byte~) play_moveother::$0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_moveother::@1 -- vbuz1_neq_0_then_la1 - lda _0 - bne b1_from_play_moveother - jmp b11 - //SEG161 play_moveother::@11 - b11: - //SEG162 [75] if((byte) play_moveother::key_event#0==(const byte) KEY_COMMA#0) goto play_moveother::@2 -- vbuz1_eq_vbuc1_then_la1 - lda key_event - cmp #KEY_COMMA - beq b2 - jmp b12 - //SEG163 play_moveother::@12 - b12: - //SEG164 [76] if((byte) play_moveother::key_event#0==(const byte) KEY_DOT#0) goto play_moveother::@3 -- vbuz1_eq_vbuc1_then_la1 - lda key_event - cmp #KEY_DOT - beq b3 - jmp b13 - //SEG165 play_moveother::@13 - b13: - //SEG166 [77] if((byte) play_moveother::key_event#0==(const byte) KEY_Z#0) goto play_moveother::@4 -- vbuz1_eq_vbuc1_then_la1 +//SEG171 play_move_rotate +play_move_rotate: { + .label _2 = $52 + .label _4 = $56 + .label _6 = $54 + .label _8 = $55 + .label key_event = $4a + .label return = $4b + .label orientation = $14 + .label return_2 = $13 + //SEG172 [79] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuz1_eq_vbuc1_then_la1 lda key_event cmp #KEY_Z - beq b4 - jmp b14 - //SEG167 play_moveother::@14 - b14: - //SEG168 [78] if((byte) play_moveother::key_event#0!=(const byte) KEY_X#0) goto play_moveother::@1 -- vbuz1_neq_vbuc1_then_la1 + beq b1 + jmp b6 + //SEG173 play_move_rotate::@6 + b6: + //SEG174 [80] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuz1_eq_vbuc1_then_la1 lda key_event cmp #KEY_X - bne b1_from_b14 - jmp b15 - //SEG169 play_moveother::@15 - b15: - //SEG170 [79] (byte/signed word/word/dword/signed dword~) play_moveother::$8 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_plus_vbuc1 + beq b2 + //SEG175 [81] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] + breturn_from_b14: + breturn_from_b6: + //SEG176 [81] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#17 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG177 [81] phi (byte) current_piece_orientation#23 = (byte) current_piece_orientation#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG178 [81] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuz1=vbuc1 + lda #0 + sta return_2 + jmp breturn + //SEG179 play_move_rotate::@return + breturn: + //SEG180 [82] return + rts + //SEG181 play_move_rotate::@2 + b2: + //SEG182 [83] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_plus_vbuc1 lda #$10 clc adc current_piece_orientation - sta _8 - //SEG171 [80] (byte) current_piece_orientation#10 ← (byte/signed word/word/dword/signed dword~) play_moveother::$8 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 + sta _2 + //SEG183 [84] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 lda #$3f - and _8 + and _2 + sta orientation + //SEG184 [85] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] + b4_from_b1: + b4_from_b2: + //SEG185 [85] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy + jmp b4 + //SEG186 play_move_rotate::@4 + b4: + //SEG187 [86] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + lda current_xpos + sta collision.xpos + //SEG188 [87] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuz1=vbuz2 + lda current_ypos + sta collision.ypos + //SEG189 [88] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + lda orientation + sta collision.orientation + //SEG190 [89] (byte*~) current_piece#70 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_70 + lda current_piece+1 + sta current_piece_70+1 + //SEG191 [90] call collision + //SEG192 [99] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] + collision_from_b4: + //SEG193 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy + //SEG194 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy + //SEG195 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy + //SEG196 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#70 [phi:play_move_rotate::@4->collision#3] -- register_copy + jsr collision + //SEG197 [91] (byte) collision::return#13 ← (byte) collision::return#14 -- vbuz1=vbuz2 + lda collision.return_14 + sta collision.return_13 + jmp b14 + //SEG198 play_move_rotate::@14 + b14: + //SEG199 [92] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 -- vbuz1=vbuz2 + lda collision.return_13 + sta _6 + //SEG200 [93] (byte~) play_move_rotate::$8 ← (byte~) play_move_rotate::$6 & (const byte) COLLISION_LEFT#0|(const byte) COLLISION_RIGHT#0 -- vbuz1=vbuz2_band_vbuc1 + lda #COLLISION_LEFT|COLLISION_RIGHT + and _6 + sta _8 + //SEG201 [94] if((byte~) play_move_rotate::$8!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@return -- vbuz1_neq_0_then_la1 + lda _8 + bne breturn_from_b14 + jmp b11 + //SEG202 play_move_rotate::@11 + b11: + //SEG203 [95] (byte) current_piece_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + lda orientation sta current_piece_orientation - //SEG172 [81] (byte*) current_piece_gfx#10 ← (byte*) current_piece#13 + (byte) current_piece_orientation#10 -- pbuz1=pbuz2_plus_vbuz3 + //SEG204 [96] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_piece_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 lda current_piece_orientation clc adc current_piece @@ -5909,1095 +6150,1130 @@ play_moveother: { lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG173 [82] phi from play_moveother::@15 play_moveother::@18 play_moveother::@20 play_moveother::@4 to play_moveother::@1 [phi:play_moveother::@15/play_moveother::@18/play_moveother::@20/play_moveother::@4->play_moveother::@1] - b1_from_b15: - b1_from_b18: - b1_from_b20: - b1_from_b4: - //SEG174 [82] phi (byte) current_xpos#11 = (byte) current_xpos#19 [phi:play_moveother::@15/play_moveother::@18/play_moveother::@20/play_moveother::@4->play_moveother::@1#0] -- register_copy - //SEG175 [82] phi (byte*) current_piece_gfx#11 = (byte*) current_piece_gfx#10 [phi:play_moveother::@15/play_moveother::@18/play_moveother::@20/play_moveother::@4->play_moveother::@1#1] -- register_copy - //SEG176 [82] phi (byte) current_piece_orientation#11 = (byte) current_piece_orientation#10 [phi:play_moveother::@15/play_moveother::@18/play_moveother::@20/play_moveother::@4->play_moveother::@1#2] -- register_copy - //SEG177 [82] phi (byte) play_moveother::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_moveother::@15/play_moveother::@18/play_moveother::@20/play_moveother::@4->play_moveother::@1#3] -- vbuz1=vbuc1 + //SEG205 [81] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + breturn_from_b11: + //SEG206 [81] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG207 [81] phi (byte) current_piece_orientation#23 = (byte) current_piece_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG208 [81] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuz1=vbuc1 lda #1 - sta return_1 - jmp b1 - //SEG178 [82] phi from play_moveother play_moveother::@14 play_moveother::@22 play_moveother::@23 to play_moveother::@1 [phi:play_moveother/play_moveother::@14/play_moveother::@22/play_moveother::@23->play_moveother::@1] - b1_from_play_moveother: - b1_from_b14: - b1_from_b22: - b1_from_b23: - //SEG179 [82] phi (byte) current_xpos#11 = (byte) current_xpos#19 [phi:play_moveother/play_moveother::@14/play_moveother::@22/play_moveother::@23->play_moveother::@1#0] -- register_copy - //SEG180 [82] phi (byte*) current_piece_gfx#11 = (byte*) current_piece_gfx#18 [phi:play_moveother/play_moveother::@14/play_moveother::@22/play_moveother::@23->play_moveother::@1#1] -- register_copy - //SEG181 [82] phi (byte) current_piece_orientation#11 = (byte) current_piece_orientation#18 [phi:play_moveother/play_moveother::@14/play_moveother::@22/play_moveother::@23->play_moveother::@1#2] -- register_copy - //SEG182 [82] phi (byte) play_moveother::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_moveother/play_moveother::@14/play_moveother::@22/play_moveother::@23->play_moveother::@1#3] -- vbuz1=vbuc1 - lda #0 - sta return_1 - jmp b1 - //SEG183 play_moveother::@1 - b1: + sta return_2 jmp breturn - //SEG184 play_moveother::@return - breturn: - //SEG185 [83] return - rts - //SEG186 play_moveother::@4 - b4: - //SEG187 [84] (byte/signed word/word/dword/signed dword~) play_moveother::$11 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_minus_vbuc1 + //SEG209 play_move_rotate::@1 + b1: + //SEG210 [97] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_minus_vbuc1 lda current_piece_orientation sec sbc #$10 - sta _11 - //SEG188 [85] (byte) current_piece_orientation#9 ← (byte/signed word/word/dword/signed dword~) play_moveother::$11 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 + sta _4 + //SEG211 [98] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 lda #$3f - and _11 - sta current_piece_orientation - //SEG189 [86] (byte*) current_piece_gfx#9 ← (byte*) current_piece#13 + (byte) current_piece_orientation#9 -- pbuz1=pbuz2_plus_vbuz3 - lda current_piece_orientation - clc - adc current_piece - sta current_piece_gfx - lda #0 - adc current_piece+1 - sta current_piece_gfx+1 - jmp b1_from_b4 - //SEG190 play_moveother::@3 - b3: - //SEG191 [87] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 - ldy current_xpos - iny - sty collision.xpos - //SEG192 [88] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuz1=vbuz2 - lda current_ypos - sta collision.ypos - //SEG193 [89] (byte*~) current_piece_gfx#110 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 - lda current_piece_gfx - sta current_piece_gfx_110 - lda current_piece_gfx+1 - sta current_piece_gfx_110+1 - //SEG194 [90] call collision - //SEG195 [103] phi from play_moveother::@3 to collision [phi:play_moveother::@3->collision] - collision_from_b3: - //SEG196 [103] phi (byte) collision::xpos#8 = (byte) collision::xpos#2 [phi:play_moveother::@3->collision#0] -- register_copy - //SEG197 [103] phi (byte*) current_piece_gfx#46 = (byte*~) current_piece_gfx#110 [phi:play_moveother::@3->collision#1] -- register_copy - //SEG198 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_moveother::@3->collision#2] -- register_copy - jsr collision - //SEG199 [91] (byte) collision::return#12 ← (byte) collision::return#10 -- vbuz1=vbuz2 - lda collision.return_10 - sta collision.return_12 - jmp b23 - //SEG200 play_moveother::@23 - b23: - //SEG201 [92] (byte~) play_moveother::$15 ← (byte) collision::return#12 -- vbuz1=vbuz2 - lda collision.return_12 - sta _15 - //SEG202 [93] if((byte~) play_moveother::$15!=(const byte) COLLISION_NONE#0) goto play_moveother::@1 -- vbuz1_neq_vbuc1_then_la1 - lda _15 - cmp #COLLISION_NONE - bne b1_from_b23 - jmp b18 - //SEG203 play_moveother::@18 - b18: - //SEG204 [94] (byte) current_xpos#9 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 - inc current_xpos - jmp b1_from_b18 - //SEG205 play_moveother::@2 - b2: - //SEG206 [95] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 - ldx current_xpos - dex - stx collision.xpos - //SEG207 [96] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuz1=vbuz2 - lda current_ypos - sta collision.ypos - //SEG208 [97] (byte*~) current_piece_gfx#109 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 - lda current_piece_gfx - sta current_piece_gfx_109 - lda current_piece_gfx+1 - sta current_piece_gfx_109+1 - //SEG209 [98] call collision - //SEG210 [103] phi from play_moveother::@2 to collision [phi:play_moveother::@2->collision] - collision_from_b2: - //SEG211 [103] phi (byte) collision::xpos#8 = (byte) collision::xpos#1 [phi:play_moveother::@2->collision#0] -- register_copy - //SEG212 [103] phi (byte*) current_piece_gfx#46 = (byte*~) current_piece_gfx#109 [phi:play_moveother::@2->collision#1] -- register_copy - //SEG213 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_moveother::@2->collision#2] -- register_copy - jsr collision - //SEG214 [99] (byte) collision::return#11 ← (byte) collision::return#10 -- vbuz1=vbuz2 - lda collision.return_10 - sta collision.return_11 - jmp b22 - //SEG215 play_moveother::@22 - b22: - //SEG216 [100] (byte~) play_moveother::$19 ← (byte) collision::return#11 -- vbuz1=vbuz2 - lda collision.return_11 - sta _19 - //SEG217 [101] if((byte~) play_moveother::$19!=(const byte) COLLISION_NONE#0) goto play_moveother::@1 -- vbuz1_neq_vbuc1_then_la1 - lda _19 - cmp #COLLISION_NONE - bne b1_from_b22 - jmp b20 - //SEG218 play_moveother::@20 - b20: - //SEG219 [102] (byte) current_xpos#10 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 - dec current_xpos - jmp b1_from_b20 + and _4 + sta orientation + jmp b4_from_b1 } -//SEG220 collision +//SEG212 collision collision: { - .label _1 = $54 - .label _7 = $59 - .label ypos = $10 - .label xpos = $13 - .label return = $5c - .label line = $53 - .label playfield_line = $55 - .label i = $57 - .label c = $16 - .label col = $58 - .label l = $14 - .label i_2 = $15 - .label return_10 = $17 - .label return_11 = $51 - .label return_12 = $4f - .label i_3 = $15 - .label i_11 = $15 - .label i_13 = $15 - //SEG221 [104] phi from collision to collision::@1 [phi:collision->collision::@1] - b1_from_collision: - //SEG222 [104] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 + .label _7 = $5c + .label xpos = $19 + .label ypos = $18 + .label orientation = $17 + .label return = $63 + .label return_1 = $5f + .label piece_gfx = $57 + .label ypos2 = $1a + .label playfield_line = $59 + .label i = $5b + .label col = $1d + .label c = $1e + .label l = $1b + .label return_12 = $5d + .label return_13 = $53 + .label i_2 = $1c + .label return_14 = $1f + .label i_3 = $1c + .label i_11 = $1c + .label i_13 = $1c + //SEG213 [100] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz2_plus_vbuz3 + lda orientation + clc + adc current_piece_15 + sta piece_gfx lda #0 - sta i_3 - //SEG223 [104] phi (byte) collision::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 + adc current_piece_15+1 + sta piece_gfx+1 + //SEG214 [101] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda ypos + asl + sta ypos2 + //SEG215 [102] phi from collision to collision::@1 [phi:collision->collision::@1] + b1_from_collision: + //SEG216 [102] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l + //SEG217 [102] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 + lda #0 + sta i_3 + //SEG218 [102] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy jmp b1 - //SEG224 collision::@1 + //SEG219 collision::@1 b1: - //SEG225 [105] (byte) collision::line#0 ← (byte) collision::ypos#4 + (byte) collision::l#2 -- vbuz1=vbuz2_plus_vbuz3 - lda ypos - clc - adc l - sta line - //SEG226 [106] (byte~) collision::$1 ← (byte) collision::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 - lda line - asl - sta _1 - //SEG227 [107] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) collision::$1) -- pbuz1=pptc1_derefidx_vbuz2 - ldy _1 + //SEG220 [103] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG228 [108] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] + //SEG221 [104] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 + lda xpos + sta col + //SEG222 [105] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] b2_from_b1: - //SEG229 [108] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuz1=vbuc1 + //SEG223 [105] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG230 [108] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#1] -- register_copy + //SEG224 [105] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy + //SEG225 [105] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy jmp b2 - //SEG231 collision::@2 + //SEG226 collision::@2 b2: - //SEG232 [109] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG227 [106] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG233 [110] if(*((byte*) current_piece_gfx#46 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG228 [107] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 - lda (current_piece_gfx_46),y + lda (piece_gfx),y cmp #0 beq b3 jmp b8 - //SEG234 collision::@8 + //SEG229 collision::@8 b8: - //SEG235 [111] if((byte) collision::line#0<(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 - lda line - cmp #PLAYFIELD_LINES + //SEG230 [108] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 + lda ypos2 + cmp #2*PLAYFIELD_LINES bcc b4 - //SEG236 [112] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] + //SEG231 [109] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] breturn_from_b8: - //SEG237 [112] phi (byte) collision::return#10 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuz1=vbuc1 + //SEG232 [109] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_BOTTOM - sta return_10 + sta return_14 jmp breturn - //SEG238 collision::@return + //SEG233 collision::@return breturn: - //SEG239 [113] return + //SEG234 [110] return rts - //SEG240 collision::@4 + //SEG235 collision::@4 b4: - //SEG241 [114] (byte) collision::col#0 ← (byte) collision::xpos#8 + (byte) collision::c#2 -- vbuz1=vbuz2_plus_vbuz3 - lda xpos - clc - adc c - sta col - //SEG242 [115] (byte~) collision::$7 ← (byte) collision::col#0 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG236 [111] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and col sta _7 - //SEG243 [116] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuz1_eq_0_then_la1 + //SEG237 [112] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuz1_eq_0_then_la1 lda _7 cmp #0 beq b5 - //SEG244 [112] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] + //SEG238 [109] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] breturn_from_b4: - //SEG245 [112] phi (byte) collision::return#10 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuz1=vbuc1 + //SEG239 [109] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_LEFT - sta return_10 + sta return_14 jmp breturn - //SEG246 collision::@5 + //SEG240 collision::@5 b5: - //SEG247 [117] if((byte) collision::col#0<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG241 [113] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG248 [112] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] + //SEG242 [109] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] breturn_from_b5: - //SEG249 [112] phi (byte) collision::return#10 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuz1=vbuc1 + //SEG243 [109] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_RIGHT - sta return_10 + sta return_14 jmp breturn - //SEG250 collision::@6 + //SEG244 collision::@6 b6: - //SEG251 [118] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG245 [114] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG252 [112] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] + //SEG246 [109] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] breturn_from_b6: - //SEG253 [112] phi (byte) collision::return#10 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuz1=vbuc1 + //SEG247 [109] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_PLAYFIELD - sta return_10 + sta return_14 jmp breturn - //SEG254 collision::@3 + //SEG248 collision::@3 b3: - //SEG255 [119] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuz1=_inc_vbuz1 + //SEG249 [115] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 + inc col + //SEG250 [116] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG256 [120] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuz1_neq_vbuc1_then_la1 + //SEG251 [117] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b21 jmp b17 - //SEG257 collision::@17 + //SEG252 collision::@17 b17: - //SEG258 [121] (byte) collision::l#1 ← ++ (byte) collision::l#2 -- vbuz1=_inc_vbuz1 + //SEG253 [118] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + lda ypos2 + clc + adc #2 + sta ypos2 + //SEG254 [119] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG259 [122] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG255 [120] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG260 [112] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] + //SEG256 [109] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] breturn_from_b17: - //SEG261 [112] phi (byte) collision::return#10 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuz1=vbuc1 + //SEG257 [109] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_NONE - sta return_10 + sta return_14 jmp breturn - //SEG262 collision::@20 + //SEG258 collision::@20 b20: - //SEG263 [123] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG259 [121] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG264 [104] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] + //SEG260 [102] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] b1_from_b20: - //SEG265 [104] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#0] -- register_copy - //SEG266 [104] phi (byte) collision::l#2 = (byte) collision::l#1 [phi:collision::@20->collision::@1#1] -- register_copy + //SEG261 [102] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy + //SEG262 [102] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy + //SEG263 [102] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy jmp b1 - //SEG267 collision::@21 + //SEG264 collision::@21 b21: - //SEG268 [124] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG265 [122] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG269 [108] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] + //SEG266 [105] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] b2_from_b21: - //SEG270 [108] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy - //SEG271 [108] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#1] -- register_copy + //SEG267 [105] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy + //SEG268 [105] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy + //SEG269 [105] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy jmp b2 } -//SEG272 play_movedown -play_movedown: { - .label _2 = $5b - .label _12 = $5d - .label key_event = $39 - .label return = $3a - .label movedown = $18 - .label return_3 = $20 - //SEG273 [125] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 +//SEG270 play_move_leftright +play_move_leftright: { + .label _4 = $5e + .label _8 = $60 + .label key_event = $46 + .label return = $47 + .label return_2 = $20 + //SEG271 [123] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuz1_eq_vbuc1_then_la1 + lda key_event + cmp #KEY_COMMA + beq b1 + jmp b6 + //SEG272 play_move_leftright::@6 + b6: + //SEG273 [124] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + lda key_event + cmp #KEY_DOT + bne breturn_from_b6 + jmp b7 + //SEG274 play_move_leftright::@7 + b7: + //SEG275 [125] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + ldy current_xpos + iny + sty collision.xpos + //SEG276 [126] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuz1=vbuz2 + lda current_ypos + sta collision.ypos + //SEG277 [127] (byte) collision::orientation#2 ← (byte) current_piece_orientation#18 -- vbuz1=vbuz2 + lda current_piece_orientation + sta collision.orientation + //SEG278 [128] (byte*~) current_piece#69 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_69 + lda current_piece+1 + sta current_piece_69+1 + //SEG279 [129] call collision + //SEG280 [99] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] + collision_from_b7: + //SEG281 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy + //SEG282 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy + //SEG283 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy + //SEG284 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#69 [phi:play_move_leftright::@7->collision#3] -- register_copy + jsr collision + //SEG285 [130] (byte) collision::return#12 ← (byte) collision::return#14 -- vbuz1=vbuz2 + lda collision.return_14 + sta collision.return_12 + jmp b15 + //SEG286 play_move_leftright::@15 + b15: + //SEG287 [131] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 -- vbuz1=vbuz2 + lda collision.return_12 + sta _4 + //SEG288 [132] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + lda _4 + cmp #COLLISION_NONE + bne breturn_from_b15 + jmp b8 + //SEG289 play_move_leftright::@8 + b8: + //SEG290 [133] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 + inc current_xpos + //SEG291 [134] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] + breturn_from_b11: + breturn_from_b8: + //SEG292 [134] phi (byte) current_xpos#23 = (byte) current_xpos#9 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG293 [134] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuz1=vbuc1 + lda #1 + sta return_2 + jmp breturn + //SEG294 [134] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] + breturn_from_b14: + breturn_from_b15: + breturn_from_b6: + //SEG295 [134] phi (byte) current_xpos#23 = (byte) current_xpos#19 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG296 [134] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuz1=vbuc1 + lda #0 + sta return_2 + jmp breturn + //SEG297 play_move_leftright::@return + breturn: + //SEG298 [135] return + rts + //SEG299 play_move_leftright::@1 + b1: + //SEG300 [136] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + ldx current_xpos + dex + stx collision.xpos + //SEG301 [137] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuz1=vbuz2 + lda current_ypos + sta collision.ypos + //SEG302 [138] (byte) collision::orientation#1 ← (byte) current_piece_orientation#18 -- vbuz1=vbuz2 + lda current_piece_orientation + sta collision.orientation + //SEG303 [139] (byte*~) current_piece#68 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_68 + lda current_piece+1 + sta current_piece_68+1 + //SEG304 [140] call collision + //SEG305 [99] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] + collision_from_b1: + //SEG306 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy + //SEG307 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy + //SEG308 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy + //SEG309 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#68 [phi:play_move_leftright::@1->collision#3] -- register_copy + jsr collision + //SEG310 [141] (byte) collision::return#1 ← (byte) collision::return#14 -- vbuz1=vbuz2 + lda collision.return_14 + sta collision.return_1 + jmp b14 + //SEG311 play_move_leftright::@14 + b14: + //SEG312 [142] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 -- vbuz1=vbuz2 + lda collision.return_1 + sta _8 + //SEG313 [143] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + lda _8 + cmp #COLLISION_NONE + bne breturn_from_b14 + jmp b11 + //SEG314 play_move_leftright::@11 + b11: + //SEG315 [144] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 + dec current_xpos + jmp breturn_from_b11 +} +//SEG316 play_move_down +play_move_down: { + .label _2 = $62 + .label _12 = $64 + .label key_event = $42 + .label return = $43 + .label movedown = $21 + .label return_3 = $29 + //SEG317 [145] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG274 [126] if((byte) play_movedown::key_event#0!=(const byte) KEY_SPACE#0) goto play_movedown::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG318 [146] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuz1_neq_vbuc1_then_la1 lda key_event cmp #KEY_SPACE - bne b1_from_play_movedown - //SEG275 [127] phi from play_movedown to play_movedown::@8 [phi:play_movedown->play_movedown::@8] - b8_from_play_movedown: + bne b1_from_play_move_down + //SEG319 [147] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + b8_from_play_move_down: jmp b8 - //SEG276 play_movedown::@8 + //SEG320 play_move_down::@8 b8: - //SEG277 [128] phi from play_movedown::@8 to play_movedown::@1 [phi:play_movedown::@8->play_movedown::@1] + //SEG321 [148] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] b1_from_b8: - //SEG278 [128] phi (byte) play_movedown::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_movedown::@8->play_movedown::@1#0] -- vbuz1=vbuc1 + //SEG322 [148] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuz1=vbuc1 lda #1 sta movedown jmp b1 - //SEG279 [128] phi from play_movedown to play_movedown::@1 [phi:play_movedown->play_movedown::@1] - b1_from_play_movedown: - //SEG280 [128] phi (byte) play_movedown::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_movedown->play_movedown::@1#0] -- vbuz1=vbuc1 + //SEG323 [148] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + b1_from_play_move_down: + //SEG324 [148] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuz1=vbuc1 lda #0 sta movedown jmp b1 - //SEG281 play_movedown::@1 + //SEG325 play_move_down::@1 b1: - //SEG282 [129] call keyboard_event_pressed - //SEG283 [173] phi from play_movedown::@1 to keyboard_event_pressed [phi:play_movedown::@1->keyboard_event_pressed] + //SEG326 [149] call keyboard_event_pressed + //SEG327 [194] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG284 [173] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_movedown::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG328 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG285 [130] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG329 [150] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_12 jmp b17 - //SEG286 play_movedown::@17 + //SEG330 play_move_down::@17 b17: - //SEG287 [131] (byte~) play_movedown::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 + //SEG331 [151] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_12 sta _2 - //SEG288 [132] if((byte~) play_movedown::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movedown::@2 -- vbuz1_eq_0_then_la1 + //SEG332 [152] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b17 jmp b9 - //SEG289 play_movedown::@9 + //SEG333 play_move_down::@9 b9: - //SEG290 [133] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate_fast#0) goto play_movedown::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG334 [153] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_rate_fast bcc b2_from_b9 jmp b10 - //SEG291 play_movedown::@10 + //SEG335 play_move_down::@10 b10: - //SEG292 [134] (byte) play_movedown::movedown#2 ← ++ (byte) play_movedown::movedown#10 -- vbuz1=_inc_vbuz1 + //SEG336 [154] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 inc movedown - //SEG293 [135] phi from play_movedown::@10 play_movedown::@17 play_movedown::@9 to play_movedown::@2 [phi:play_movedown::@10/play_movedown::@17/play_movedown::@9->play_movedown::@2] + //SEG337 [155] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] b2_from_b10: b2_from_b17: b2_from_b9: - //SEG294 [135] phi (byte) play_movedown::movedown#7 = (byte) play_movedown::movedown#2 [phi:play_movedown::@10/play_movedown::@17/play_movedown::@9->play_movedown::@2#0] -- register_copy + //SEG338 [155] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy jmp b2 - //SEG295 play_movedown::@2 + //SEG339 play_move_down::@2 b2: - //SEG296 [136] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate#0) goto play_movedown::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG340 [156] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_rate bcc b4_from_b2 jmp b11 - //SEG297 play_movedown::@11 + //SEG341 play_move_down::@11 b11: - //SEG298 [137] (byte) play_movedown::movedown#3 ← ++ (byte) play_movedown::movedown#7 -- vbuz1=_inc_vbuz1 + //SEG342 [157] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 inc movedown - //SEG299 [138] phi from play_movedown::@11 play_movedown::@2 to play_movedown::@4 [phi:play_movedown::@11/play_movedown::@2->play_movedown::@4] + //SEG343 [158] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] b4_from_b11: b4_from_b2: - //SEG300 [138] phi (byte) play_movedown::movedown#6 = (byte) play_movedown::movedown#3 [phi:play_movedown::@11/play_movedown::@2->play_movedown::@4#0] -- register_copy + //SEG344 [158] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy jmp b4 - //SEG301 play_movedown::@4 + //SEG345 play_move_down::@4 b4: - //SEG302 [139] if((byte) play_movedown::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movedown::@return -- vbuz1_eq_0_then_la1 + //SEG346 [159] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuz1_eq_0_then_la1 lda movedown cmp #0 beq breturn_from_b4 jmp b12 - //SEG303 play_movedown::@12 + //SEG347 play_move_down::@12 b12: - //SEG304 [140] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG348 [160] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny sty collision.ypos - //SEG305 [141] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG349 [161] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 lda current_xpos sta collision.xpos - //SEG306 [142] (byte*~) current_piece_gfx#108 ← (byte*) current_piece_gfx#16 -- pbuz1=pbuz2 - lda current_piece_gfx - sta current_piece_gfx_108 - lda current_piece_gfx+1 - sta current_piece_gfx_108+1 - //SEG307 [143] call collision - //SEG308 [103] phi from play_movedown::@12 to collision [phi:play_movedown::@12->collision] + //SEG350 [162] (byte) collision::orientation#0 ← (byte) current_piece_orientation#15 -- vbuz1=vbuz2 + lda current_piece_orientation + sta collision.orientation + //SEG351 [163] (byte*~) current_piece#67 ← (byte*) current_piece#11 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_67 + lda current_piece+1 + sta current_piece_67+1 + //SEG352 [164] call collision + //SEG353 [99] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] collision_from_b12: - //SEG309 [103] phi (byte) collision::xpos#8 = (byte) collision::xpos#0 [phi:play_movedown::@12->collision#0] -- register_copy - //SEG310 [103] phi (byte*) current_piece_gfx#46 = (byte*~) current_piece_gfx#108 [phi:play_movedown::@12->collision#1] -- register_copy - //SEG311 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_movedown::@12->collision#2] -- register_copy + //SEG354 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy + //SEG355 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy + //SEG356 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy + //SEG357 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#67 [phi:play_move_down::@12->collision#3] -- register_copy jsr collision - //SEG312 [144] (byte) collision::return#0 ← (byte) collision::return#10 -- vbuz1=vbuz2 - lda collision.return_10 + //SEG358 [165] (byte) collision::return#0 ← (byte) collision::return#14 -- vbuz1=vbuz2 + lda collision.return_14 sta collision.return jmp b18 - //SEG313 play_movedown::@18 + //SEG359 play_move_down::@18 b18: - //SEG314 [145] (byte~) play_movedown::$12 ← (byte) collision::return#0 -- vbuz1=vbuz2 + //SEG360 [166] (byte~) play_move_down::$12 ← (byte) collision::return#0 -- vbuz1=vbuz2 lda collision.return sta _12 - //SEG315 [146] if((byte~) play_movedown::$12==(const byte) COLLISION_NONE#0) goto play_movedown::@6 -- vbuz1_eq_vbuc1_then_la1 + //SEG361 [167] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuz1_eq_vbuc1_then_la1 lda _12 cmp #COLLISION_NONE beq b6 - //SEG316 [147] phi from play_movedown::@18 to play_movedown::@13 [phi:play_movedown::@18->play_movedown::@13] + //SEG362 [168] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] b13_from_b18: jmp b13 - //SEG317 play_movedown::@13 + //SEG363 play_move_down::@13 b13: - //SEG318 [148] call lock_current - //SEG319 [157] phi from play_movedown::@13 to lock_current [phi:play_movedown::@13->lock_current] + //SEG364 [169] call lock_current + //SEG365 [178] phi from play_move_down::@13 to lock_current [phi:play_move_down::@13->lock_current] lock_current_from_b13: jsr lock_current - //SEG320 [149] phi from play_movedown::@13 to play_movedown::@19 [phi:play_movedown::@13->play_movedown::@19] + //SEG366 [170] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] b19_from_b13: jmp b19 - //SEG321 play_movedown::@19 + //SEG367 play_move_down::@19 b19: - //SEG322 [150] call spawn_current - //SEG323 [155] phi from play_movedown::@19 to spawn_current [phi:play_movedown::@19->spawn_current] + //SEG368 [171] call spawn_current + //SEG369 [176] phi from play_move_down::@19 to spawn_current [phi:play_move_down::@19->spawn_current] spawn_current_from_b19: jsr spawn_current - //SEG324 [151] phi from play_movedown::@19 to play_movedown::@7 [phi:play_movedown::@19->play_movedown::@7] + //SEG370 [172] phi from play_move_down::@19 to play_move_down::@7 [phi:play_move_down::@19->play_move_down::@7] b7_from_b19: - //SEG325 [151] phi (byte) current_xpos#35 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_movedown::@19->play_movedown::@7#0] -- vbuz1=vbuc1 + //SEG371 [172] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@19->play_move_down::@7#0] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG326 [151] phi (byte) current_piece_color#23 = (const byte) GREEN#0 [phi:play_movedown::@19->play_movedown::@7#1] -- vbuz1=vbuc1 + //SEG372 [172] phi (byte) current_piece_color#23 = (const byte) GREEN#0 [phi:play_move_down::@19->play_move_down::@7#1] -- vbuz1=vbuc1 lda #GREEN sta current_piece_color - //SEG327 [151] phi (byte*) current_piece_gfx#30 = (const byte[4*4*4]) piece_t#0 [phi:play_movedown::@19->play_movedown::@7#2] -- pbuz1=pbuc1 + //SEG373 [172] phi (byte*) current_piece_gfx#29 = (const byte[4*4*4]) piece_t#0 [phi:play_move_down::@19->play_move_down::@7#2] -- pbuz1=pbuc1 lda #piece_t sta current_piece_gfx+1 - //SEG328 [151] phi (byte) current_piece_orientation#29 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_movedown::@19->play_movedown::@7#3] -- vbuz1=vbuc1 + //SEG374 [172] phi (byte) current_piece_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 sta current_piece_orientation - //SEG329 [151] phi (byte*) current_piece#23 = (const byte[4*4*4]) piece_t#0 [phi:play_movedown::@19->play_movedown::@7#4] -- pbuz1=pbuc1 + //SEG375 [172] phi (byte*) current_piece#23 = (const byte[4*4*4]) piece_t#0 [phi:play_move_down::@19->play_move_down::@7#4] -- pbuz1=pbuc1 lda #piece_t sta current_piece+1 - //SEG330 [151] phi (byte) current_ypos#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_movedown::@19->play_movedown::@7#5] -- vbuz1=vbuc1 + //SEG376 [172] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#5] -- vbuz1=vbuc1 lda #0 sta current_ypos jmp b7 - //SEG331 play_movedown::@7 + //SEG377 play_move_down::@7 b7: - //SEG332 [152] phi from play_movedown::@7 to play_movedown::@return [phi:play_movedown::@7->play_movedown::@return] + //SEG378 [173] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] breturn_from_b7: - //SEG333 [152] phi (byte) current_xpos#19 = (byte) current_xpos#35 [phi:play_movedown::@7->play_movedown::@return#0] -- register_copy - //SEG334 [152] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_movedown::@7->play_movedown::@return#1] -- register_copy - //SEG335 [152] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#30 [phi:play_movedown::@7->play_movedown::@return#2] -- register_copy - //SEG336 [152] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#29 [phi:play_movedown::@7->play_movedown::@return#3] -- register_copy - //SEG337 [152] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_movedown::@7->play_movedown::@return#4] -- register_copy - //SEG338 [152] phi (byte) current_ypos#16 = (byte) current_ypos#30 [phi:play_movedown::@7->play_movedown::@return#5] -- register_copy - //SEG339 [152] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_movedown::@7->play_movedown::@return#6] -- vbuz1=vbuc1 + //SEG379 [173] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG380 [173] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG381 [173] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG382 [173] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG383 [173] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG384 [173] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG385 [173] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG340 [152] phi (byte) play_movedown::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_movedown::@7->play_movedown::@return#7] -- vbuz1=vbuc1 + //SEG386 [173] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuz1=vbuc1 lda #1 sta return_3 jmp breturn - //SEG341 [152] phi from play_movedown::@4 to play_movedown::@return [phi:play_movedown::@4->play_movedown::@return] + //SEG387 [173] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] breturn_from_b4: - //SEG342 [152] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_movedown::@4->play_movedown::@return#0] -- register_copy - //SEG343 [152] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_movedown::@4->play_movedown::@return#1] -- register_copy - //SEG344 [152] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#16 [phi:play_movedown::@4->play_movedown::@return#2] -- register_copy - //SEG345 [152] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#16 [phi:play_movedown::@4->play_movedown::@return#3] -- register_copy - //SEG346 [152] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_movedown::@4->play_movedown::@return#4] -- register_copy - //SEG347 [152] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_movedown::@4->play_movedown::@return#5] -- register_copy - //SEG348 [152] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_movedown::@4->play_movedown::@return#6] -- register_copy - //SEG349 [152] phi (byte) play_movedown::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_movedown::@4->play_movedown::@return#7] -- vbuz1=vbuc1 + //SEG388 [173] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG389 [173] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG390 [173] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG391 [173] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG392 [173] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG393 [173] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG394 [173] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG395 [173] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuz1=vbuc1 lda #0 sta return_3 jmp breturn - //SEG350 play_movedown::@return + //SEG396 play_move_down::@return breturn: - //SEG351 [153] return + //SEG397 [174] return rts - //SEG352 play_movedown::@6 + //SEG398 play_move_down::@6 b6: - //SEG353 [154] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 + //SEG399 [175] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG354 [151] phi from play_movedown::@6 to play_movedown::@7 [phi:play_movedown::@6->play_movedown::@7] + //SEG400 [172] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] b7_from_b6: - //SEG355 [151] phi (byte) current_xpos#35 = (byte) current_xpos#16 [phi:play_movedown::@6->play_movedown::@7#0] -- register_copy - //SEG356 [151] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_movedown::@6->play_movedown::@7#1] -- register_copy - //SEG357 [151] phi (byte*) current_piece_gfx#30 = (byte*) current_piece_gfx#16 [phi:play_movedown::@6->play_movedown::@7#2] -- register_copy - //SEG358 [151] phi (byte) current_piece_orientation#29 = (byte) current_piece_orientation#16 [phi:play_movedown::@6->play_movedown::@7#3] -- register_copy - //SEG359 [151] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_movedown::@6->play_movedown::@7#4] -- register_copy - //SEG360 [151] phi (byte) current_ypos#30 = (byte) current_ypos#4 [phi:play_movedown::@6->play_movedown::@7#5] -- register_copy + //SEG401 [172] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG402 [172] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG403 [172] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG404 [172] phi (byte) current_piece_orientation#33 = (byte) current_piece_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG405 [172] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG406 [172] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG361 spawn_current +//SEG407 spawn_current spawn_current: { jmp breturn - //SEG362 spawn_current::@return + //SEG408 spawn_current::@return breturn: - //SEG363 [156] return + //SEG409 [177] return rts } -//SEG364 lock_current +//SEG410 lock_current lock_current: { - .label _1 = $5f - .label line = $5e - .label playfield_line = $60 - .label cell = $62 - .label i = $22 - .label c = $23 - .label col = $63 - .label l = $21 - //SEG365 [158] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] + .label _1 = $66 + .label line = $65 + .label playfield_line = $67 + .label cell = $69 + .label i = $2b + .label c = $2c + .label col = $6a + .label l = $2a + //SEG411 [179] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] b1_from_lock_current: - //SEG366 [158] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 + //SEG412 [179] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG367 [158] phi (byte) lock_current::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 + //SEG413 [179] phi (byte) lock_current::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 lda #0 sta l jmp b1 - //SEG368 [158] phi from lock_current::@5 to lock_current::@1 [phi:lock_current::@5->lock_current::@1] + //SEG414 [179] phi from lock_current::@5 to lock_current::@1 [phi:lock_current::@5->lock_current::@1] b1_from_b5: - //SEG369 [158] phi (byte) lock_current::i#3 = (byte) lock_current::i#1 [phi:lock_current::@5->lock_current::@1#0] -- register_copy - //SEG370 [158] phi (byte) lock_current::l#2 = (byte) lock_current::l#1 [phi:lock_current::@5->lock_current::@1#1] -- register_copy + //SEG415 [179] phi (byte) lock_current::i#3 = (byte) lock_current::i#1 [phi:lock_current::@5->lock_current::@1#0] -- register_copy + //SEG416 [179] phi (byte) lock_current::l#2 = (byte) lock_current::l#1 [phi:lock_current::@5->lock_current::@1#1] -- register_copy jmp b1 - //SEG371 lock_current::@1 + //SEG417 lock_current::@1 b1: - //SEG372 [159] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 -- vbuz1=vbuz2_plus_vbuz3 + //SEG418 [180] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 -- vbuz1=vbuz2_plus_vbuz3 lda current_ypos clc adc l sta line - //SEG373 [160] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG419 [181] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda line asl sta _1 - //SEG374 [161] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG420 [182] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) -- pbuz1=pptc1_derefidx_vbuz2 ldy _1 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG375 [162] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] + //SEG421 [183] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] b2_from_b1: - //SEG376 [162] 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 + //SEG422 [183] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG377 [162] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#1] -- register_copy + //SEG423 [183] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#1] -- register_copy jmp b2 - //SEG378 [162] phi from lock_current::@3 to lock_current::@2 [phi:lock_current::@3->lock_current::@2] + //SEG424 [183] phi from lock_current::@3 to lock_current::@2 [phi:lock_current::@3->lock_current::@2] b2_from_b3: - //SEG379 [162] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@3->lock_current::@2#0] -- register_copy - //SEG380 [162] phi (byte) lock_current::i#2 = (byte) lock_current::i#1 [phi:lock_current::@3->lock_current::@2#1] -- register_copy + //SEG425 [183] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@3->lock_current::@2#0] -- register_copy + //SEG426 [183] phi (byte) lock_current::i#2 = (byte) lock_current::i#1 [phi:lock_current::@3->lock_current::@2#1] -- register_copy jmp b2 - //SEG381 lock_current::@2 + //SEG427 lock_current::@2 b2: - //SEG382 [163] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#16 + (byte) lock_current::i#2) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG428 [184] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#15 + (byte) lock_current::i#2) -- vbuz1=pbuz2_derefidx_vbuz3 ldy i lda (current_piece_gfx),y sta cell - //SEG383 [164] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz1 + //SEG429 [185] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG384 [165] if((byte) lock_current::cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- vbuz1_eq_0_then_la1 + //SEG430 [186] if((byte) lock_current::cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- vbuz1_eq_0_then_la1 lda cell cmp #0 beq b3 jmp b4 - //SEG385 lock_current::@4 + //SEG431 lock_current::@4 b4: - //SEG386 [166] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 -- vbuz1=vbuz2_plus_vbuz3 + //SEG432 [187] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 -- vbuz1=vbuz2_plus_vbuz3 lda current_xpos clc adc c sta col - //SEG387 [167] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG433 [188] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_color ldy col sta (playfield_line),y jmp b3 - //SEG388 lock_current::@3 + //SEG434 lock_current::@3 b3: - //SEG389 [168] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuz1=_inc_vbuz1 + //SEG435 [189] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG390 [169] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG436 [190] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@2 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b2_from_b3 jmp b5 - //SEG391 lock_current::@5 + //SEG437 lock_current::@5 b5: - //SEG392 [170] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#2 -- vbuz1=_inc_vbuz1 + //SEG438 [191] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG393 [171] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG439 [192] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1_from_b5 jmp breturn - //SEG394 lock_current::@return + //SEG440 lock_current::@return breturn: - //SEG395 [172] return + //SEG441 [193] return rts } -//SEG396 keyboard_event_pressed +//SEG442 keyboard_event_pressed keyboard_event_pressed: { - .label _0 = $64 - .label _1 = $66 - .label return = $6b - .label return_1 = $6d - .label return_2 = $6f - .label row_bits = $65 - .label return_10 = $71 - .label keycode = $24 - .label return_11 = $67 - .label return_12 = $5a - //SEG397 [174] (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 = $6b + .label _1 = $6d + .label return = $72 + .label return_1 = $74 + .label return_2 = $76 + .label row_bits = $6c + .label return_10 = $78 + .label keycode = $2d + .label return_11 = $6e + .label return_12 = $61 + //SEG443 [195] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 lda keycode lsr lsr lsr sta _0 - //SEG398 [175] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG444 [196] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda keyboard_scan_values,y sta row_bits - //SEG399 [176] (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 + //SEG445 [197] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and keycode sta _1 - //SEG400 [177] (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 + //SEG446 [198] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda row_bits ldy _1 and keyboard_matrix_col_bitmask,y sta return_11 jmp breturn - //SEG401 keyboard_event_pressed::@return + //SEG447 keyboard_event_pressed::@return breturn: - //SEG402 [178] return + //SEG448 [199] return rts } -//SEG403 keyboard_event_get +//SEG449 keyboard_event_get keyboard_event_get: { - .label return = $25 - .label return_3 = $37 - //SEG404 [179] 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 = $2e + .label return_3 = $40 + //SEG450 [200] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq breturn_from_keyboard_event_get jmp b3 - //SEG405 keyboard_event_get::@3 + //SEG451 keyboard_event_get::@3 b3: - //SEG406 [180] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG452 [201] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG407 [181] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG453 [202] (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 - //SEG408 [182] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG454 [203] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG409 [182] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG410 [182] 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 + //SEG455 [203] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG456 [203] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG411 [182] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG457 [203] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG412 [182] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG413 [182] 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 + //SEG458 [203] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG459 [203] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuz1=vbuc1 lda #$ff sta return jmp breturn - //SEG414 keyboard_event_get::@return + //SEG460 keyboard_event_get::@return breturn: - //SEG415 [183] return + //SEG461 [204] return rts } -//SEG416 keyboard_event_scan +//SEG462 keyboard_event_scan keyboard_event_scan: { - .label _3 = $73 - .label _4 = $74 - .label _11 = $76 - .label _14 = $6c - .label _18 = $6e - .label _22 = $70 - .label _26 = $72 - .label row_scan = $6a - .label keycode = $28 - .label row = $26 - .label col = $27 - .label event_type = $75 - //SEG417 [185] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + .label _3 = $7a + .label _4 = $7b + .label _11 = $7d + .label _14 = $73 + .label _18 = $75 + .label _22 = $77 + .label _26 = $79 + .label row_scan = $71 + .label keycode = $31 + .label row = $2f + .label col = $30 + .label event_type = $7c + //SEG463 [206] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG418 [185] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG419 [185] 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 + //SEG464 [206] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG465 [206] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG420 [185] 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 + //SEG466 [206] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 lda #0 sta row jmp b1 - //SEG421 [185] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG467 [206] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG422 [185] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG423 [185] 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 - //SEG424 [185] 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 + //SEG468 [206] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG469 [206] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG470 [206] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy jmp b1 - //SEG425 keyboard_event_scan::@1 + //SEG471 keyboard_event_scan::@1 b1: - //SEG426 [186] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 + //SEG472 [207] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 lda row sta keyboard_matrix_read.rowid - //SEG427 [187] call keyboard_matrix_read + //SEG473 [208] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG428 [188] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + //SEG474 [209] (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 - //SEG429 keyboard_event_scan::@25 + //SEG475 keyboard_event_scan::@25 b25: - //SEG430 [189] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 + //SEG476 [210] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 lda keyboard_matrix_read.return_2 sta row_scan - //SEG431 [190] 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 + //SEG477 [211] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda row_scan ldy row cmp keyboard_scan_values,y bne b4_from_b25 jmp b13 - //SEG432 keyboard_event_scan::@13 + //SEG478 keyboard_event_scan::@13 b13: - //SEG433 [191] (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 + //SEG479 [212] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG434 [192] 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] + //SEG480 [213] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] b3_from_b13: b3_from_b19: - //SEG435 [192] 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 - //SEG436 [192] 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 + //SEG481 [213] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG482 [213] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy jmp b3 - //SEG437 keyboard_event_scan::@3 + //SEG483 keyboard_event_scan::@3 b3: - //SEG438 [193] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG484 [214] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG439 [194] 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 + //SEG485 [215] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1_from_b3 - //SEG440 [195] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG486 [216] 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 - //SEG441 keyboard_event_scan::@20 + //SEG487 keyboard_event_scan::@20 b20: - //SEG442 [196] call keyboard_event_pressed - //SEG443 [173] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG488 [217] call keyboard_event_pressed + //SEG489 [194] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG444 [173] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG490 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG445 [197] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG491 [218] (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 - //SEG446 keyboard_event_scan::@26 + //SEG492 keyboard_event_scan::@26 b26: - //SEG447 [198] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 + //SEG493 [219] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_event_pressed.return sta _14 - //SEG448 [199] 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 + //SEG494 [220] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuz1_eq_0_then_la1 lda _14 cmp #0 beq b9_from_b26 - //SEG449 [200] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG495 [221] 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 - //SEG450 keyboard_event_scan::@21 + //SEG496 keyboard_event_scan::@21 b21: - //SEG451 [201] 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] + //SEG497 [222] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] b9_from_b21: b9_from_b26: jmp b9 - //SEG452 keyboard_event_scan::@9 + //SEG498 keyboard_event_scan::@9 b9: - //SEG453 [202] call keyboard_event_pressed - //SEG454 [173] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG499 [223] call keyboard_event_pressed + //SEG500 [194] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG455 [173] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG501 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG456 [203] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG502 [224] (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 - //SEG457 keyboard_event_scan::@27 + //SEG503 keyboard_event_scan::@27 b27: - //SEG458 [204] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 + //SEG504 [225] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_1 sta _18 - //SEG459 [205] 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 + //SEG505 [226] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuz1_eq_0_then_la1 lda _18 cmp #0 beq b10_from_b27 - //SEG460 [206] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] + //SEG506 [227] 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 - //SEG461 keyboard_event_scan::@22 + //SEG507 keyboard_event_scan::@22 b22: - //SEG462 [207] 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] + //SEG508 [228] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] b10_from_b22: b10_from_b27: jmp b10 - //SEG463 keyboard_event_scan::@10 + //SEG509 keyboard_event_scan::@10 b10: - //SEG464 [208] call keyboard_event_pressed - //SEG465 [173] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG510 [229] call keyboard_event_pressed + //SEG511 [194] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG466 [173] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG512 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG467 [209] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG513 [230] (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 - //SEG468 keyboard_event_scan::@28 + //SEG514 keyboard_event_scan::@28 b28: - //SEG469 [210] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 + //SEG515 [231] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_2 sta _22 - //SEG470 [211] 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 + //SEG516 [232] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuz1_eq_0_then_la1 lda _22 cmp #0 beq b11_from_b28 - //SEG471 [212] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] + //SEG517 [233] 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 - //SEG472 keyboard_event_scan::@23 + //SEG518 keyboard_event_scan::@23 b23: - //SEG473 [213] 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] + //SEG519 [234] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] b11_from_b23: b11_from_b28: jmp b11 - //SEG474 keyboard_event_scan::@11 + //SEG520 keyboard_event_scan::@11 b11: - //SEG475 [214] call keyboard_event_pressed - //SEG476 [173] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG521 [235] call keyboard_event_pressed + //SEG522 [194] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG477 [173] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG523 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG478 [215] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG524 [236] (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 - //SEG479 keyboard_event_scan::@29 + //SEG525 keyboard_event_scan::@29 b29: - //SEG480 [216] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 + //SEG526 [237] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_10 sta _26 - //SEG481 [217] 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 + //SEG527 [238] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuz1_eq_0_then_la1 lda _26 cmp #0 beq breturn - //SEG482 [218] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] + //SEG528 [239] 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 - //SEG483 keyboard_event_scan::@24 + //SEG529 keyboard_event_scan::@24 b24: jmp breturn - //SEG484 keyboard_event_scan::@return + //SEG530 keyboard_event_scan::@return breturn: - //SEG485 [219] return + //SEG531 [240] return rts - //SEG486 [220] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG532 [241] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG487 [220] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG488 [220] 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 - //SEG489 [220] 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 + //SEG533 [241] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG534 [241] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG535 [241] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuz1=vbuc1 lda #0 sta col jmp b4 - //SEG490 [220] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG536 [241] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG491 [220] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG492 [220] 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 - //SEG493 [220] 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 + //SEG537 [241] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG538 [241] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG539 [241] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy jmp b4 - //SEG494 keyboard_event_scan::@4 + //SEG540 keyboard_event_scan::@4 b4: - //SEG495 [221] (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 + //SEG541 [242] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuz1=vbuz2_bxor_pbuc1_derefidx_vbuz3 lda row_scan ldy row eor keyboard_scan_values,y sta _3 - //SEG496 [222] (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 + //SEG542 [243] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda _3 ldy col and keyboard_matrix_col_bitmask,y sta _4 - //SEG497 [223] 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 + //SEG543 [244] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuz1_eq_0_then_la1 lda _4 cmp #0 beq b5_from_b4 jmp b15 - //SEG498 keyboard_event_scan::@15 + //SEG544 keyboard_event_scan::@15 b15: - //SEG499 [224] 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 + //SEG545 [245] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5_from_b15 jmp b16 - //SEG500 keyboard_event_scan::@16 + //SEG546 keyboard_event_scan::@16 b16: - //SEG501 [225] (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 + //SEG547 [246] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda row_scan ldy col and keyboard_matrix_col_bitmask,y sta event_type - //SEG502 [226] 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 + //SEG548 [247] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuz1_eq_0_then_la1 lda event_type cmp #0 beq b7 jmp b17 - //SEG503 keyboard_event_scan::@17 + //SEG549 keyboard_event_scan::@17 b17: - //SEG504 [227] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG550 [248] *((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 - //SEG505 [228] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG551 [249] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG506 [229] 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] + //SEG552 [250] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] b5_from_b15: b5_from_b17: b5_from_b4: b5_from_b7: - //SEG507 [229] 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 + //SEG553 [250] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy jmp b5 - //SEG508 keyboard_event_scan::@5 + //SEG554 keyboard_event_scan::@5 b5: - //SEG509 [230] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG555 [251] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG510 [231] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 + //SEG556 [252] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG511 [232] 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 + //SEG557 [253] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuz1_neq_vbuc1_then_la1 lda col cmp #8 bne b4_from_b5 jmp b19 - //SEG512 keyboard_event_scan::@19 + //SEG558 keyboard_event_scan::@19 b19: - //SEG513 [233] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG559 [254] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3_from_b19 - //SEG514 keyboard_event_scan::@7 + //SEG560 keyboard_event_scan::@7 b7: - //SEG515 [234] (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 + //SEG561 [255] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz2_bor_vbuc1 lda #$40 ora keycode sta _11 - //SEG516 [235] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG562 [256] *((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 - //SEG517 [236] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG563 [257] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG518 keyboard_matrix_read +//SEG564 keyboard_matrix_read keyboard_matrix_read: { - .label return = $77 - .label rowid = $68 - .label return_2 = $69 - //SEG519 [237] *((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 = $7e + .label rowid = $6f + .label return_2 = $70 + //SEG565 [258] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy rowid lda keyboard_matrix_row_bitmask,y sta CIA1_PORT_A - //SEG520 [238] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 + //SEG566 [259] (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 - //SEG521 keyboard_matrix_read::@return + //SEG567 keyboard_matrix_read::@return breturn: - //SEG522 [239] return + //SEG568 [260] return rts } -//SEG523 init +//SEG569 init init: { - .label _5 = $78 - .label _8 = $79 - .label _13 = $7a - .label li = $2b - .label i = $2a - .label pli = $2e - .label j = $2d - .label c = $33 - .label line = $30 - .label l = $32 - //SEG524 [241] call fill - //SEG525 [266] phi from init to fill [phi:init->fill] + .label _5 = $7f + .label _8 = $80 + .label _13 = $81 + .label li = $34 + .label i = $33 + .label pli = $37 + .label j = $36 + .label c = $3c + .label line = $39 + .label l = $3b + //SEG570 [262] call fill + //SEG571 [287] phi from init to fill [phi:init->fill] fill_from_init: - //SEG526 [266] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:init->fill#0] -- vbuz1=vbuc1 + //SEG572 [287] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:init->fill#0] -- vbuz1=vbuc1 lda #$a0 sta fill.val - //SEG527 [266] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:init->fill#1] -- pbuz1=pbuc1 + //SEG573 [287] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:init->fill#1] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG528 [242] phi from init to init::@9 [phi:init->init::@9] + //SEG574 [263] phi from init to init::@9 [phi:init->init::@9] b9_from_init: jmp b9 - //SEG529 init::@9 + //SEG575 init::@9 b9: - //SEG530 [243] call fill - //SEG531 [266] phi from init::@9 to fill [phi:init::@9->fill] + //SEG576 [264] call fill + //SEG577 [287] phi from init::@9 to fill [phi:init::@9->fill] fill_from_b9: - //SEG532 [266] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@9->fill#0] -- vbuz1=vbuc1 + //SEG578 [287] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@9->fill#0] -- vbuz1=vbuc1 lda #BLACK sta fill.val - //SEG533 [266] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:init::@9->fill#1] -- pbuz1=pbuc1 + //SEG579 [287] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:init::@9->fill#1] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG534 [244] phi from init::@9 to init::@1 [phi:init::@9->init::@1] + //SEG580 [265] phi from init::@9 to init::@1 [phi:init::@9->init::@1] b1_from_b9: - //SEG535 [244] phi (byte*) init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:init::@9->init::@1#0] -- pbuz1=pbuc1 + //SEG581 [265] phi (byte*) init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:init::@9->init::@1#0] -- pbuz1=pbuc1 lda #COLS+$28+$f sta li+1 - //SEG536 [244] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@9->init::@1#1] -- vbuz1=vbuc1 + //SEG582 [265] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@9->init::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG537 [244] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG583 [265] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG538 [244] phi (byte*) init::li#2 = (byte*) init::li#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG539 [244] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#1] -- register_copy + //SEG584 [265] phi (byte*) init::li#2 = (byte*) init::li#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG585 [265] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#1] -- register_copy jmp b1 - //SEG540 init::@1 + //SEG586 init::@1 b1: - //SEG541 [245] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG587 [266] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _5 - //SEG542 [246] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG588 [267] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _5 lda li sta screen_lines,y lda li+1 sta screen_lines+1,y - //SEG543 [247] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG589 [268] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li clc adc #$28 @@ -7005,41 +7281,41 @@ init: { bcc !+ inc li+1 !: - //SEG544 [248] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuz1=_inc_vbuz1 + //SEG590 [269] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG545 [249] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG591 [270] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #PLAYFIELD_LINES+2+1 bne b1_from_b1 - //SEG546 [250] phi from init::@1 to init::@2 [phi:init::@1->init::@2] + //SEG592 [271] phi from init::@1 to init::@2 [phi:init::@1->init::@2] b2_from_b1: - //SEG547 [250] phi (byte*) init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:init::@1->init::@2#0] -- pbuz1=pbuc1 + //SEG593 [271] phi (byte*) init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:init::@1->init::@2#0] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG548 [250] phi (byte) init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#1] -- vbuz1=vbuc1 + //SEG594 [271] phi (byte) init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#1] -- vbuz1=vbuc1 lda #0 sta j jmp b2 - //SEG549 [250] phi from init::@2 to init::@2 [phi:init::@2->init::@2] + //SEG595 [271] phi from init::@2 to init::@2 [phi:init::@2->init::@2] b2_from_b2: - //SEG550 [250] phi (byte*) init::pli#2 = (byte*) init::pli#1 [phi:init::@2->init::@2#0] -- register_copy - //SEG551 [250] phi (byte) init::j#2 = (byte) init::j#1 [phi:init::@2->init::@2#1] -- register_copy + //SEG596 [271] phi (byte*) init::pli#2 = (byte*) init::pli#1 [phi:init::@2->init::@2#0] -- register_copy + //SEG597 [271] phi (byte) init::j#2 = (byte) init::j#1 [phi:init::@2->init::@2#1] -- register_copy jmp b2 - //SEG552 init::@2 + //SEG598 init::@2 b2: - //SEG553 [251] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG599 [272] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda j asl sta _8 - //SEG554 [252] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG600 [273] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _8 lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG555 [253] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- pbuz1=pbuz1_plus_vbuc1 + //SEG601 [274] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #$a @@ -7047,43 +7323,43 @@ init: { bcc !+ inc pli+1 !: - //SEG556 [254] (byte) init::j#1 ← ++ (byte) init::j#2 -- vbuz1=_inc_vbuz1 + //SEG602 [275] (byte) init::j#1 ← ++ (byte) init::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG557 [255] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG603 [276] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #PLAYFIELD_LINES-1+1 bne b2_from_b2 - //SEG558 [256] phi from init::@2 to init::@3 [phi:init::@2->init::@3] + //SEG604 [277] phi from init::@2 to init::@3 [phi:init::@2->init::@3] b3_from_b2: - //SEG559 [256] phi (byte) init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuz1=vbuc1 + //SEG605 [277] phi (byte) init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG560 [256] phi (byte*) init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:init::@2->init::@3#1] -- pbuz1=pbuc1 + //SEG606 [277] phi (byte*) init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:init::@2->init::@3#1] -- pbuz1=pbuc1 lda #COLS+$e sta line+1 jmp b3 - //SEG561 [256] phi from init::@7 to init::@3 [phi:init::@7->init::@3] + //SEG607 [277] phi from init::@7 to init::@3 [phi:init::@7->init::@3] b3_from_b7: - //SEG562 [256] phi (byte) init::l#4 = (byte) init::l#1 [phi:init::@7->init::@3#0] -- register_copy - //SEG563 [256] phi (byte*) init::line#4 = (byte*) init::line#1 [phi:init::@7->init::@3#1] -- register_copy + //SEG608 [277] phi (byte) init::l#4 = (byte) init::l#1 [phi:init::@7->init::@3#0] -- register_copy + //SEG609 [277] phi (byte*) init::line#4 = (byte*) init::line#1 [phi:init::@7->init::@3#1] -- register_copy jmp b3 - //SEG564 init::@3 + //SEG610 init::@3 b3: - //SEG565 [257] phi from init::@3 to init::@4 [phi:init::@3->init::@4] + //SEG611 [278] phi from init::@3 to init::@4 [phi:init::@3->init::@4] b4_from_b3: - //SEG566 [257] phi (byte) init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@4#0] -- vbuz1=vbuc1 + //SEG612 [278] phi (byte) init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@4#0] -- vbuz1=vbuc1 lda #0 sta c jmp b4 - //SEG567 [257] phi from init::@4 to init::@4 [phi:init::@4->init::@4] + //SEG613 [278] phi from init::@4 to init::@4 [phi:init::@4->init::@4] b4_from_b4: - //SEG568 [257] phi (byte) init::c#2 = (byte) init::c#1 [phi:init::@4->init::@4#0] -- register_copy + //SEG614 [278] phi (byte) init::c#2 = (byte) init::c#1 [phi:init::@4->init::@4#0] -- register_copy jmp b4 - //SEG569 init::@4 + //SEG615 init::@4 b4: - //SEG570 [258] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 -- pbuz1=pbuz2_plus_vbuz3 + //SEG616 [279] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 -- pbuz1=pbuz2_plus_vbuz3 lda c clc adc line @@ -7091,20 +7367,20 @@ init: { lda #0 adc line+1 sta _13+1 - //SEG571 [259] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG617 [280] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (_13),y - //SEG572 [260] (byte) init::c#1 ← ++ (byte) init::c#2 -- vbuz1=_inc_vbuz1 + //SEG618 [281] (byte) init::c#1 ← ++ (byte) init::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG573 [261] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG619 [282] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #PLAYFIELD_COLS+1+1 bne b4_from_b4 jmp b7 - //SEG574 init::@7 + //SEG620 init::@7 b7: - //SEG575 [262] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG621 [283] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -7112,24 +7388,24 @@ init: { bcc !+ inc line+1 !: - //SEG576 [263] (byte) init::l#1 ← ++ (byte) init::l#4 -- vbuz1=_inc_vbuz1 + //SEG622 [284] (byte) init::l#1 ← ++ (byte) init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG577 [264] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG623 [285] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES+1+1 bne b3_from_b7 jmp breturn - //SEG578 init::@return + //SEG624 init::@return breturn: - //SEG579 [265] return + //SEG625 [286] return rts } -//SEG580 fill +//SEG626 fill fill: { - .label end = $7c - .label addr = $35 - .label val = $34 - //SEG581 [267] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + .label end = $83 + .label addr = $3e + .label val = $3d + //SEG627 [288] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -7137,23 +7413,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG582 [268] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG628 [289] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG583 [268] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG629 [289] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG584 fill::@1 + //SEG630 fill::@1 b1: - //SEG585 [269] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 + //SEG631 [290] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 lda val ldy #0 sta (addr),y - //SEG586 [270] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG632 [291] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG587 [271] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG633 [292] 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 @@ -7161,9 +7437,9 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG588 fill::@return + //SEG634 fill::@return breturn: - //SEG589 [272] return + //SEG635 [293] return rts } keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f @@ -7177,478 +7453,503 @@ fill: { screen_lines: .fill 2*(PLAYFIELD_LINES+3), 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ current_piece_orientation#29 current_piece_orientation#16 current_piece_orientation#11 current_piece_orientation#18 current_piece_orientation#10 current_piece_orientation#9 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:31 [ current_xpos#35 current_xpos#16 current_xpos#11 current_xpos#19 current_xpos#9 current_xpos#10 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#30 current_ypos#4 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:41 [ 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 ] +Statement [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] -Statement [14] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a -Statement [25] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$8 [ current_piece#13 current_piece_color#13 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 ] ( main:2 [ current_piece#13 current_piece_color#13 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ main::key_event#0 ] -Statement [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::render#2 ] ( main:2 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::render#2 ] ) always clobbers reg byte a -Statement [35] (byte*~) current_piece_gfx#99 ← (byte*) current_piece_gfx#11 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#75 current_piece_gfx#99 ] ( main:2 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#75 current_piece_gfx#99 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ current_ypos#35 current_ypos#75 ] -Statement [43] (byte) render_current::line#0 ← (byte) current_ypos#35 + (byte) render_current::l#2 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::line#0 ] ( main:2::render_current:11 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::line#0 ] main:2::render_current:38 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::line#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ current_xpos#81 current_xpos#91 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ current_piece_color#62 current_piece_color#69 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ render_current::l#2 render_current::l#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] -Statement [45] (byte~) render_current::$3 ← (byte) render_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::$3 ] ( main:2::render_current:11 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::$3 ] main:2::render_current:38 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::$3 ] ) always clobbers reg byte a -Statement [46] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_current::$3) [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::screen_line#0 ] ( main:2::render_current:11 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::screen_line#0 ] main:2::render_current:38 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::screen_line#0 ] ) always clobbers reg byte a -Statement [48] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#75 + (byte) render_current::i#2) [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::i#2 render_current::c#2 render_current::current_cell#0 ] ( main:2::render_current:11 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::i#2 render_current::c#2 render_current::current_cell#0 ] main:2::render_current:38 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::i#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:11 [ render_current::c#2 render_current::c#1 ] -Statement [51] (byte) render_current::xpos#0 ← (byte) current_xpos#81 + (byte) render_current::c#2 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::c#2 render_current::i#1 render_current::xpos#0 ] ( main:2::render_current:11 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::c#2 render_current::i#1 render_current::xpos#0 ] main:2::render_current:38 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::c#2 render_current::i#1 render_current::xpos#0 ] ) always clobbers reg byte a -Statement [53] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#0) ← (byte) current_piece_color#62 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::c#2 render_current::i#1 ] ( main:2::render_current:11 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::c#2 render_current::i#1 ] main:2::render_current:38 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::c#2 render_current::i#1 ] ) always clobbers reg byte a -Statement [62] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] main:2::render_playfield:33 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ render_playfield::l#2 render_playfield::l#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Statement [63] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] main:2::render_playfield:33 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ) always clobbers reg byte a -Statement [65] (byte*~) render_playfield::$3 ← (byte*) render_playfield::line#0 + (byte) render_playfield::c#2 [ render_playfield::l#2 render_playfield::line#0 render_playfield::c#2 render_playfield::i#2 render_playfield::$3 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::line#0 render_playfield::c#2 render_playfield::i#2 render_playfield::$3 ] main:2::render_playfield:33 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::line#0 render_playfield::c#2 render_playfield::i#2 render_playfield::$3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ render_playfield::c#2 render_playfield::c#1 ] -Statement [66] *((byte*~) render_playfield::$3) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_playfield::l#2 render_playfield::line#0 render_playfield::c#2 render_playfield::i#2 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::line#0 render_playfield::c#2 render_playfield::i#2 ] main:2::render_playfield:33 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::line#0 render_playfield::c#2 render_playfield::i#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:12 [ render_playfield::l#2 render_playfield::l#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ render_playfield::c#2 render_playfield::c#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:27 [ current_piece_orientation#29 current_piece_orientation#16 current_piece_orientation#11 current_piece_orientation#18 current_piece_orientation#10 current_piece_orientation#9 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:30 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:31 [ current_xpos#35 current_xpos#16 current_xpos#11 current_xpos#19 current_xpos#9 current_xpos#10 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#30 current_ypos#4 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:41 [ 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 ] +Statement [14] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a +Statement [25] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$8 [ current_piece#13 current_piece_color#13 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_orientation#18 current_piece_gfx#17 current_xpos#19 ] ( main:2 [ current_piece#13 current_piece_color#13 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_orientation#18 current_piece_gfx#17 current_xpos#19 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:65 [ main::key_event#0 ] +Statement [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 [ current_piece#13 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#2 current_piece_orientation#18 current_piece_gfx#17 ] ( main:2 [ current_piece#13 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#2 current_piece_orientation#18 current_piece_gfx#17 ] ) always clobbers reg byte a +Statement [35] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$10 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::render#3 ] ( main:2 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::render#3 ] ) always clobbers reg byte a +Statement [41] (byte*~) current_piece_gfx#82 ← (byte*) current_piece_gfx#18 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#72 current_xpos#92 current_piece_gfx#82 ] ( main:2 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#72 current_xpos#92 current_piece_gfx#82 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ current_ypos#22 current_ypos#72 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 ] +Statement [47] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#0 ] ( main:2::render_current:11 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#0 ] main:2::render_current:43 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 ] +Statement [50] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ( main:2::render_current:11 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] main:2::render_current:43 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] +Statement [53] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#61 + (byte) render_current::i#2) [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ( main:2::render_current:11 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] main:2::render_current:43 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 ] +Statement [57] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#63 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ( main:2::render_current:11 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] main:2::render_current:43 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ) always clobbers reg byte a +Statement [68] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] main:2::render_playfield:38 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] +Statement [69] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] main:2::render_playfield:38 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ) always clobbers reg byte a +Statement [71] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] main:2::render_playfield:38 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:36 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:40 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:50 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] -Statement [73] (byte~) play_moveother::$0 ← (byte) play_moveother::key_event#0 & (byte/word/signed word/dword/signed dword) 128 [ current_piece#13 current_ypos#16 play_moveother::key_event#0 play_moveother::$0 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 play_moveother::key_event#0 play_moveother::$0 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ main::render#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:61 [ play_moveother::key_event#0 ] -Statement [79] (byte/signed word/word/dword/signed dword~) play_moveother::$8 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_ypos#16 play_moveother::$8 current_xpos#19 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 play_moveother::$8 current_xpos#19 ] ) always clobbers reg byte a -Statement [80] (byte) current_piece_orientation#10 ← (byte/signed word/word/dword/signed dword~) play_moveother::$8 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_ypos#16 current_piece_orientation#10 current_xpos#19 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#10 current_xpos#19 ] ) always clobbers reg byte a -Statement [81] (byte*) current_piece_gfx#10 ← (byte*) current_piece#13 + (byte) current_piece_orientation#10 [ current_piece#13 current_ypos#16 current_piece_orientation#10 current_piece_gfx#10 current_xpos#19 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#10 current_piece_gfx#10 current_xpos#19 ] ) always clobbers reg byte a -Statement [84] (byte/signed word/word/dword/signed dword~) play_moveother::$11 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_ypos#16 current_xpos#19 play_moveother::$11 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_xpos#19 play_moveother::$11 ] ) always clobbers reg byte a -Statement [85] (byte) current_piece_orientation#9 ← (byte/signed word/word/dword/signed dword~) play_moveother::$11 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_ypos#16 current_xpos#19 current_piece_orientation#9 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_xpos#19 current_piece_orientation#9 ] ) always clobbers reg byte a -Statement [86] (byte*) current_piece_gfx#9 ← (byte*) current_piece#13 + (byte) current_piece_orientation#9 [ current_piece#13 current_ypos#16 current_xpos#19 current_piece_orientation#9 current_piece_gfx#9 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_xpos#19 current_piece_orientation#9 current_piece_gfx#9 ] ) always clobbers reg byte a -Statement [89] (byte*~) current_piece_gfx#110 ← (byte*) current_piece_gfx#18 [ current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::xpos#2 collision::ypos#2 current_piece_gfx#110 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::xpos#2 collision::ypos#2 current_piece_gfx#110 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:19 [ collision::xpos#8 collision::xpos#0 collision::xpos#1 collision::xpos#2 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:16 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 ] -Statement [97] (byte*~) current_piece_gfx#109 ← (byte*) current_piece_gfx#18 [ current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::xpos#1 collision::ypos#1 current_piece_gfx#109 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::xpos#1 collision::ypos#1 current_piece_gfx#109 ] ) always clobbers reg byte a -Statement [105] (byte) collision::line#0 ← (byte) collision::ypos#4 + (byte) collision::l#2 [ collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 ] ( main:2::play_moveother:27::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 ] main:2::play_moveother:27::collision:98 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 ] main:2::play_movedown:22::collision:143 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ collision::l#2 collision::l#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] -Statement [106] (byte~) collision::$1 ← (byte) collision::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 collision::$1 ] ( main:2::play_moveother:27::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 collision::$1 ] main:2::play_moveother:27::collision:98 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 collision::$1 ] main:2::play_movedown:22::collision:143 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 collision::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:83 [ collision::line#0 ] -Statement [107] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) collision::$1) [ collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 collision::playfield_line#0 ] ( main:2::play_moveother:27::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 collision::playfield_line#0 ] main:2::play_moveother:27::collision:98 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 collision::playfield_line#0 ] main:2::play_movedown:22::collision:143 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 collision::playfield_line#0 ] ) always clobbers reg byte a -Statement [110] if(*((byte*) current_piece_gfx#46 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 ] ( main:2::play_moveother:27::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 ] main:2::play_moveother:27::collision:98 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 ] main:2::play_movedown:22::collision:143 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ collision::c#2 collision::c#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:87 [ collision::i#1 ] -Statement [114] (byte) collision::col#0 ← (byte) collision::xpos#8 + (byte) collision::c#2 [ collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 collision::col#0 ] ( main:2::play_moveother:27::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 collision::col#0 ] main:2::play_moveother:27::collision:98 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 collision::col#0 ] main:2::play_movedown:22::collision:143 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 collision::col#0 ] ) always clobbers reg byte a -Statement [115] (byte~) collision::$7 ← (byte) collision::col#0 & (byte/word/signed word/dword/signed dword) 128 [ collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 collision::col#0 collision::$7 ] ( main:2::play_moveother:27::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 collision::col#0 collision::$7 ] main:2::play_moveother:27::collision:98 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 collision::col#0 collision::$7 ] main:2::play_movedown:22::collision:143 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 collision::col#0 collision::$7 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:88 [ collision::col#0 ] -Statement [118] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 ] ( main:2::play_moveother:27::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 ] main:2::play_moveother:27::collision:98 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 ] main:2::play_movedown:22::collision:143 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 ] ) always clobbers reg byte a -Statement [142] (byte*~) current_piece_gfx#108 ← (byte*) current_piece_gfx#16 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#0 current_piece_gfx#108 collision::xpos#0 ] ( main:2::play_movedown:22 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#0 current_piece_gfx#108 collision::xpos#0 ] ) always clobbers reg byte a -Statement [159] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 [ current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::line#0 ] ( main:2::play_movedown:22::lock_current:148 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::line#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ lock_current::l#2 lock_current::l#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] -Statement [160] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::$1 ] ( main:2::play_movedown:22::lock_current:148 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::$1 ] ) always clobbers reg byte a -Statement [161] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) [ current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::playfield_line#0 ] ( main:2::play_movedown:22::lock_current:148 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::playfield_line#0 ] ) always clobbers reg byte a -Statement [163] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#16 + (byte) lock_current::i#2) [ current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::playfield_line#0 lock_current::i#2 lock_current::c#2 lock_current::cell#0 ] ( main:2::play_movedown:22::lock_current:148 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::playfield_line#0 lock_current::i#2 lock_current::c#2 lock_current::cell#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ lock_current::c#2 lock_current::c#1 ] -Statement [166] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 [ current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 lock_current::col#0 ] ( main:2::play_movedown:22::lock_current:148 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 lock_current::col#0 ] ) always clobbers reg byte a -Statement [167] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 [ current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 ] ( main:2::play_movedown:22::lock_current:148 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 ] ) always clobbers reg byte a -Statement [174] (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_movedown:22::keyboard_event_pressed:129 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_movedown::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:196 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:202 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:208 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:214 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ play_movedown::movedown#6 play_movedown::movedown#3 play_movedown::movedown#7 play_movedown::movedown#2 play_movedown::movedown#10 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ keyboard_event_pressed::keycode#5 ] -Statement [176] (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_movedown:22::keyboard_event_pressed:129 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_movedown::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:196 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:202 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:208 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:214 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:101 [ keyboard_event_pressed::row_bits#0 ] -Statement [177] (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_movedown:22::keyboard_event_pressed:129 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_movedown::movedown#10 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:196 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:202 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:208 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:214 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [191] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:38 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Statement [221] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:106 [ keyboard_event_scan::row_scan#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ 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 [222] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a -Statement [225] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a -Statement [227] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a -Statement [233] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [234] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ) always clobbers reg byte a -Statement [237] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_event_scan:16::keyboard_matrix_read:187 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a -Statement [238] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_event_scan:16::keyboard_matrix_read:187 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [245] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::i#2 init::li#2 init::$5 ] ( main:2::init:5 [ init::i#2 init::li#2 init::$5 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ init::i#2 init::i#1 ] -Statement [246] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 [ init::i#2 init::li#2 ] ( main:2::init:5 [ init::i#2 init::li#2 ] ) always clobbers reg byte a -Statement [247] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init::i#2 init::li#1 ] ( main:2::init:5 [ init::i#2 init::li#1 ] ) always clobbers reg byte a -Statement [251] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::j#2 init::pli#2 init::$8 ] ( main:2::init:5 [ init::j#2 init::pli#2 init::$8 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ init::j#2 init::j#1 ] -Statement [252] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 [ init::j#2 init::pli#2 ] ( main:2::init:5 [ init::j#2 init::pli#2 ] ) always clobbers reg byte a -Statement [253] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 [ init::j#2 init::pli#1 ] ( main:2::init:5 [ init::j#2 init::pli#1 ] ) always clobbers reg byte a -Statement [258] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 [ init::line#4 init::l#4 init::c#2 init::$13 ] ( main:2::init:5 [ init::line#4 init::l#4 init::c#2 init::$13 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ init::l#4 init::l#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ init::c#2 init::c#1 ] -Statement [259] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 [ init::line#4 init::l#4 init::c#2 ] ( main:2::init:5 [ init::line#4 init::l#4 init::c#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:50 [ init::l#4 init::l#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:51 [ init::c#2 init::c#1 ] -Statement [262] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init::l#4 init::line#1 ] ( main:2::init:5 [ init::l#4 init::line#1 ] ) always clobbers reg byte a -Statement [267] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:2::init:5::fill:241 [ fill::addr#0 fill::val#3 fill::end#0 ] main:2::init:5::fill:243 [ 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:52 [ fill::val#3 ] -Statement [269] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:2::init:5::fill:241 [ fill::val#3 fill::end#0 fill::addr#2 ] main:2::init:5::fill:243 [ 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:52 [ fill::val#3 ] -Statement [271] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:2::init:5::fill:241 [ fill::val#3 fill::end#0 fill::addr#1 ] main:2::init:5::fill:243 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a -Statement [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a -Statement [14] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a -Statement [25] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$8 [ current_piece#13 current_piece_color#13 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 ] ( main:2 [ current_piece#13 current_piece_color#13 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 ] ) always clobbers reg byte a -Statement [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::render#2 ] ( main:2 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::render#2 ] ) always clobbers reg byte a -Statement [35] (byte*~) current_piece_gfx#99 ← (byte*) current_piece_gfx#11 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#75 current_piece_gfx#99 ] ( main:2 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#75 current_piece_gfx#99 ] ) always clobbers reg byte a -Statement [43] (byte) render_current::line#0 ← (byte) current_ypos#35 + (byte) render_current::l#2 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::line#0 ] ( main:2::render_current:11 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::line#0 ] main:2::render_current:38 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::line#0 ] ) always clobbers reg byte a -Statement [45] (byte~) render_current::$3 ← (byte) render_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::$3 ] ( main:2::render_current:11 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::$3 ] main:2::render_current:38 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::$3 ] ) always clobbers reg byte a -Statement [46] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_current::$3) [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::screen_line#0 ] ( main:2::render_current:11 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::screen_line#0 ] main:2::render_current:38 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::i#4 render_current::screen_line#0 ] ) always clobbers reg byte a -Statement [48] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#75 + (byte) render_current::i#2) [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::i#2 render_current::c#2 render_current::current_cell#0 ] ( main:2::render_current:11 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::i#2 render_current::c#2 render_current::current_cell#0 ] main:2::render_current:38 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::i#2 render_current::c#2 render_current::current_cell#0 ] ) always clobbers reg byte a -Statement [51] (byte) render_current::xpos#0 ← (byte) current_xpos#81 + (byte) render_current::c#2 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::c#2 render_current::i#1 render_current::xpos#0 ] ( main:2::render_current:11 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::c#2 render_current::i#1 render_current::xpos#0 ] main:2::render_current:38 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::c#2 render_current::i#1 render_current::xpos#0 ] ) always clobbers reg byte a -Statement [53] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#0) ← (byte) current_piece_color#62 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::c#2 render_current::i#1 ] ( main:2::render_current:11 [ current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::c#2 render_current::i#1 ] main:2::render_current:38 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#35 current_piece_gfx#75 current_xpos#81 current_piece_color#62 render_current::l#2 render_current::screen_line#0 render_current::c#2 render_current::i#1 ] ) always clobbers reg byte a -Statement [62] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] main:2::render_playfield:33 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ) always clobbers reg byte a -Statement [63] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] main:2::render_playfield:33 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ) always clobbers reg byte a -Statement [65] (byte*~) render_playfield::$3 ← (byte*) render_playfield::line#0 + (byte) render_playfield::c#2 [ render_playfield::l#2 render_playfield::line#0 render_playfield::c#2 render_playfield::i#2 render_playfield::$3 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::line#0 render_playfield::c#2 render_playfield::i#2 render_playfield::$3 ] main:2::render_playfield:33 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::line#0 render_playfield::c#2 render_playfield::i#2 render_playfield::$3 ] ) always clobbers reg byte a -Statement [66] *((byte*~) render_playfield::$3) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_playfield::l#2 render_playfield::line#0 render_playfield::c#2 render_playfield::i#2 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::line#0 render_playfield::c#2 render_playfield::i#2 ] main:2::render_playfield:33 [ current_piece#13 current_piece_orientation#11 current_piece_gfx#11 current_piece_color#13 current_xpos#11 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::line#0 render_playfield::c#2 render_playfield::i#2 ] ) always clobbers reg byte a reg byte y -Statement [73] (byte~) play_moveother::$0 ← (byte) play_moveother::key_event#0 & (byte/word/signed word/dword/signed dword) 128 [ current_piece#13 current_ypos#16 play_moveother::key_event#0 play_moveother::$0 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 play_moveother::key_event#0 play_moveother::$0 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 ] ) always clobbers reg byte a -Statement [79] (byte/signed word/word/dword/signed dword~) play_moveother::$8 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_ypos#16 play_moveother::$8 current_xpos#19 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 play_moveother::$8 current_xpos#19 ] ) always clobbers reg byte a -Statement [80] (byte) current_piece_orientation#10 ← (byte/signed word/word/dword/signed dword~) play_moveother::$8 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_ypos#16 current_piece_orientation#10 current_xpos#19 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#10 current_xpos#19 ] ) always clobbers reg byte a -Statement [81] (byte*) current_piece_gfx#10 ← (byte*) current_piece#13 + (byte) current_piece_orientation#10 [ current_piece#13 current_ypos#16 current_piece_orientation#10 current_piece_gfx#10 current_xpos#19 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#10 current_piece_gfx#10 current_xpos#19 ] ) always clobbers reg byte a -Statement [84] (byte/signed word/word/dword/signed dword~) play_moveother::$11 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_ypos#16 current_xpos#19 play_moveother::$11 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_xpos#19 play_moveother::$11 ] ) always clobbers reg byte a -Statement [85] (byte) current_piece_orientation#9 ← (byte/signed word/word/dword/signed dword~) play_moveother::$11 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_ypos#16 current_xpos#19 current_piece_orientation#9 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_xpos#19 current_piece_orientation#9 ] ) always clobbers reg byte a -Statement [86] (byte*) current_piece_gfx#9 ← (byte*) current_piece#13 + (byte) current_piece_orientation#9 [ current_piece#13 current_ypos#16 current_xpos#19 current_piece_orientation#9 current_piece_gfx#9 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_xpos#19 current_piece_orientation#9 current_piece_gfx#9 ] ) always clobbers reg byte a -Statement [89] (byte*~) current_piece_gfx#110 ← (byte*) current_piece_gfx#18 [ current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::xpos#2 collision::ypos#2 current_piece_gfx#110 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::xpos#2 collision::ypos#2 current_piece_gfx#110 ] ) always clobbers reg byte a -Statement [97] (byte*~) current_piece_gfx#109 ← (byte*) current_piece_gfx#18 [ current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::xpos#1 collision::ypos#1 current_piece_gfx#109 ] ( main:2::play_moveother:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::xpos#1 collision::ypos#1 current_piece_gfx#109 ] ) always clobbers reg byte a -Statement [105] (byte) collision::line#0 ← (byte) collision::ypos#4 + (byte) collision::l#2 [ collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 ] ( main:2::play_moveother:27::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 ] main:2::play_moveother:27::collision:98 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 ] main:2::play_movedown:22::collision:143 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 ] ) always clobbers reg byte a -Statement [106] (byte~) collision::$1 ← (byte) collision::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 collision::$1 ] ( main:2::play_moveother:27::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 collision::$1 ] main:2::play_moveother:27::collision:98 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 collision::$1 ] main:2::play_movedown:22::collision:143 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 collision::$1 ] ) always clobbers reg byte a -Statement [107] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) collision::$1) [ collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 collision::playfield_line#0 ] ( main:2::play_moveother:27::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 collision::playfield_line#0 ] main:2::play_moveother:27::collision:98 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 collision::playfield_line#0 ] main:2::play_movedown:22::collision:143 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::i#3 collision::line#0 collision::playfield_line#0 ] ) always clobbers reg byte a -Statement [110] if(*((byte*) current_piece_gfx#46 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 ] ( main:2::play_moveother:27::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 ] main:2::play_moveother:27::collision:98 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 ] main:2::play_movedown:22::collision:143 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 ] ) always clobbers reg byte a -Statement [114] (byte) collision::col#0 ← (byte) collision::xpos#8 + (byte) collision::c#2 [ collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 collision::col#0 ] ( main:2::play_moveother:27::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 collision::col#0 ] main:2::play_moveother:27::collision:98 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 collision::col#0 ] main:2::play_movedown:22::collision:143 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 collision::col#0 ] ) always clobbers reg byte a -Statement [115] (byte~) collision::$7 ← (byte) collision::col#0 & (byte/word/signed word/dword/signed dword) 128 [ collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 collision::col#0 collision::$7 ] ( main:2::play_moveother:27::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 collision::col#0 collision::$7 ] main:2::play_moveother:27::collision:98 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 collision::col#0 collision::$7 ] main:2::play_movedown:22::collision:143 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 collision::col#0 collision::$7 ] ) always clobbers reg byte a -Statement [118] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 ] ( main:2::play_moveother:27::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 ] main:2::play_moveother:27::collision:98 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#1 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece_gfx#18 current_xpos#19 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 ] main:2::play_movedown:22::collision:143 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 current_piece_gfx#46 collision::xpos#8 collision::l#2 collision::line#0 collision::playfield_line#0 collision::c#2 collision::i#1 ] ) always clobbers reg byte a -Statement [142] (byte*~) current_piece_gfx#108 ← (byte*) current_piece_gfx#16 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#0 current_piece_gfx#108 collision::xpos#0 ] ( main:2::play_movedown:22 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#0 current_piece_gfx#108 collision::xpos#0 ] ) always clobbers reg byte a -Statement [159] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 [ current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::line#0 ] ( main:2::play_movedown:22::lock_current:148 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::line#0 ] ) always clobbers reg byte a -Statement [160] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::$1 ] ( main:2::play_movedown:22::lock_current:148 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::$1 ] ) always clobbers reg byte a -Statement [161] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) [ current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::playfield_line#0 ] ( main:2::play_movedown:22::lock_current:148 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::playfield_line#0 ] ) always clobbers reg byte a -Statement [163] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#16 + (byte) lock_current::i#2) [ current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::playfield_line#0 lock_current::i#2 lock_current::c#2 lock_current::cell#0 ] ( main:2::play_movedown:22::lock_current:148 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::playfield_line#0 lock_current::i#2 lock_current::c#2 lock_current::cell#0 ] ) always clobbers reg byte a -Statement [166] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 [ current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 lock_current::col#0 ] ( main:2::play_movedown:22::lock_current:148 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 lock_current::col#0 ] ) always clobbers reg byte a -Statement [167] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 [ current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 ] ( main:2::play_movedown:22::lock_current:148 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 ] ) always clobbers reg byte a -Statement [174] (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_movedown:22::keyboard_event_pressed:129 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_movedown::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:196 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:202 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:208 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:214 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a -Statement [176] (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_movedown:22::keyboard_event_pressed:129 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_movedown::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:196 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:202 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:208 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:214 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Statement [177] (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_movedown:22::keyboard_event_pressed:129 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_movedown::movedown#10 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:196 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:202 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:208 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:214 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a -Statement [190] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a -Statement [191] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a -Statement [221] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a -Statement [222] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a -Statement [225] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a -Statement [227] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a -Statement [233] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a -Statement [234] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ) always clobbers reg byte a -Statement [237] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_event_scan:16::keyboard_matrix_read:187 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a -Statement [238] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_event_scan:16::keyboard_matrix_read:187 [ current_piece#11 current_piece_orientation#16 current_piece_gfx#16 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a -Statement [245] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::i#2 init::li#2 init::$5 ] ( main:2::init:5 [ init::i#2 init::li#2 init::$5 ] ) always clobbers reg byte a -Statement [246] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 [ init::i#2 init::li#2 ] ( main:2::init:5 [ init::i#2 init::li#2 ] ) always clobbers reg byte a -Statement [247] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init::i#2 init::li#1 ] ( main:2::init:5 [ init::i#2 init::li#1 ] ) always clobbers reg byte a -Statement [251] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::j#2 init::pli#2 init::$8 ] ( main:2::init:5 [ init::j#2 init::pli#2 init::$8 ] ) always clobbers reg byte a -Statement [252] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 [ init::j#2 init::pli#2 ] ( main:2::init:5 [ init::j#2 init::pli#2 ] ) always clobbers reg byte a -Statement [253] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 [ init::j#2 init::pli#1 ] ( main:2::init:5 [ init::j#2 init::pli#1 ] ) always clobbers reg byte a -Statement [258] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 [ init::line#4 init::l#4 init::c#2 init::$13 ] ( main:2::init:5 [ init::line#4 init::l#4 init::c#2 init::$13 ] ) always clobbers reg byte a -Statement [259] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 [ init::line#4 init::l#4 init::c#2 ] ( main:2::init:5 [ init::line#4 init::l#4 init::c#2 ] ) always clobbers reg byte a reg byte y -Statement [262] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init::l#4 init::line#1 ] ( main:2::init:5 [ init::l#4 init::line#1 ] ) always clobbers reg byte a -Statement [267] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:2::init:5::fill:241 [ fill::addr#0 fill::val#3 fill::end#0 ] main:2::init:5::fill:243 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a -Statement [269] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:2::init:5::fill:241 [ fill::val#3 fill::end#0 fill::addr#2 ] main:2::init:5::fill:243 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y -Statement [271] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:2::init:5::fill:241 [ fill::val#3 fill::end#0 fill::addr#1 ] main:2::init:5::fill:243 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a -Potential registers zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#30 current_ypos#4 ] : zp ZP_BYTE:2 , reg byte x , +Statement [83] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::$2 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::$2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:73 [ main::render#2 ] +Statement [84] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#2 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#2 ] ) always clobbers reg byte a +Statement [89] (byte*~) current_piece#70 ← (byte*) current_piece#13 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#3 collision::ypos#3 collision::orientation#3 current_piece#70 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#3 collision::ypos#3 collision::orientation#3 current_piece#70 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] +Statement [93] (byte~) play_move_rotate::$8 ← (byte~) play_move_rotate::$6 & (const byte) COLLISION_LEFT#0|(const byte) COLLISION_RIGHT#0 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 play_move_rotate::$8 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 play_move_rotate::$8 ] ) always clobbers reg byte a +Statement [96] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_piece_orientation#8 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#8 current_piece_gfx#8 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#8 current_piece_gfx#8 ] ) always clobbers reg byte a +Statement [97] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::$4 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::$4 ] ) always clobbers reg byte a +Statement [98] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#1 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#1 ] ) always clobbers reg byte a +Statement [100] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 [ collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:69 [ main::render#1 ] +Statement [101] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] ) always clobbers reg byte a +Statement [103] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] +Statement [107] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ collision::c#2 collision::c#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:91 [ collision::i#1 ] +Statement [111] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] ) always clobbers reg byte a +Statement [114] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ) always clobbers reg byte a +Statement [128] (byte*~) current_piece#69 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece#69 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ( main:2::play_move_leftright:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece#69 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ) always clobbers reg byte a +Statement [139] (byte*~) current_piece#68 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece#68 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ( main:2::play_move_leftright:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece#68 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ) always clobbers reg byte a +Statement [163] (byte*~) current_piece#67 ← (byte*) current_piece#11 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_piece#67 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ( main:2::play_move_down:22 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_piece#67 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ) always clobbers reg byte a +Statement [180] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::line#0 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::line#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ lock_current::l#2 lock_current::l#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:43 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] +Statement [181] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::$1 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::$1 ] ) always clobbers reg byte a +Statement [182] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::playfield_line#0 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::playfield_line#0 ] ) always clobbers reg byte a +Statement [184] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#15 + (byte) lock_current::i#2) [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::playfield_line#0 lock_current::i#2 lock_current::c#2 lock_current::cell#0 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::playfield_line#0 lock_current::i#2 lock_current::c#2 lock_current::cell#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ lock_current::c#2 lock_current::c#1 ] +Statement [187] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 lock_current::col#0 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 lock_current::col#0 ] ) always clobbers reg byte a +Statement [188] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 ] ) always clobbers reg byte a +Statement [195] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:2::play_move_down:22::keyboard_event_pressed:149 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:217 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:223 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:229 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:235 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ keyboard_event_pressed::keycode#5 ] +Statement [197] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::play_move_down:22::keyboard_event_pressed:149 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:217 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:223 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:229 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:235 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:108 [ keyboard_event_pressed::row_bits#0 ] +Statement [198] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:2::play_move_down:22::keyboard_event_pressed:149 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:217 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:223 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:229 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:235 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [212] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Statement [242] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:113 [ keyboard_event_scan::row_scan#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] +Statement [243] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a +Statement [246] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a +Statement [248] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a +Statement [254] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [255] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ) always clobbers reg byte a +Statement [258] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_event_scan:16::keyboard_matrix_read:208 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a +Statement [259] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_event_scan:16::keyboard_matrix_read:208 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [266] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::i#2 init::li#2 init::$5 ] ( main:2::init:5 [ init::i#2 init::li#2 init::$5 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ init::i#2 init::i#1 ] +Statement [267] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 [ init::i#2 init::li#2 ] ( main:2::init:5 [ init::i#2 init::li#2 ] ) always clobbers reg byte a +Statement [268] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init::i#2 init::li#1 ] ( main:2::init:5 [ init::i#2 init::li#1 ] ) always clobbers reg byte a +Statement [272] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::j#2 init::pli#2 init::$8 ] ( main:2::init:5 [ init::j#2 init::pli#2 init::$8 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:54 [ init::j#2 init::j#1 ] +Statement [273] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 [ init::j#2 init::pli#2 ] ( main:2::init:5 [ init::j#2 init::pli#2 ] ) always clobbers reg byte a +Statement [274] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 [ init::j#2 init::pli#1 ] ( main:2::init:5 [ init::j#2 init::pli#1 ] ) always clobbers reg byte a +Statement [279] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 [ init::line#4 init::l#4 init::c#2 init::$13 ] ( main:2::init:5 [ init::line#4 init::l#4 init::c#2 init::$13 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:59 [ init::l#4 init::l#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ init::c#2 init::c#1 ] +Statement [280] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 [ init::line#4 init::l#4 init::c#2 ] ( main:2::init:5 [ init::line#4 init::l#4 init::c#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:59 [ init::l#4 init::l#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:60 [ init::c#2 init::c#1 ] +Statement [283] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init::l#4 init::line#1 ] ( main:2::init:5 [ init::l#4 init::line#1 ] ) always clobbers reg byte a +Statement [288] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:2::init:5::fill:262 [ fill::addr#0 fill::val#3 fill::end#0 ] main:2::init:5::fill:264 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:61 [ fill::val#3 ] +Statement [290] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:2::init:5::fill:262 [ fill::val#3 fill::end#0 fill::addr#2 ] main:2::init:5::fill:264 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:61 [ fill::val#3 ] +Statement [292] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:2::init:5::fill:262 [ fill::val#3 fill::end#0 fill::addr#1 ] main:2::init:5::fill:264 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a +Statement [13] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a +Statement [14] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ( main:2 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a +Statement [25] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$8 [ current_piece#13 current_piece_color#13 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_orientation#18 current_piece_gfx#17 current_xpos#19 ] ( main:2 [ current_piece#13 current_piece_color#13 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_orientation#18 current_piece_gfx#17 current_xpos#19 ] ) always clobbers reg byte a +Statement [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 [ current_piece#13 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#2 current_piece_orientation#18 current_piece_gfx#17 ] ( main:2 [ current_piece#13 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#2 current_piece_orientation#18 current_piece_gfx#17 ] ) always clobbers reg byte a +Statement [35] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$10 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::render#3 ] ( main:2 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 main::render#3 ] ) always clobbers reg byte a +Statement [41] (byte*~) current_piece_gfx#82 ← (byte*) current_piece_gfx#18 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#72 current_xpos#92 current_piece_gfx#82 ] ( main:2 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_ypos#72 current_xpos#92 current_piece_gfx#82 ] ) always clobbers reg byte a +Statement [47] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#0 ] ( main:2::render_current:11 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#0 ] main:2::render_current:43 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#0 ] ) always clobbers reg byte a +Statement [50] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ( main:2::render_current:11 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] main:2::render_current:43 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::i#4 render_current::screen_line#0 ] ) always clobbers reg byte a +Statement [53] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#61 + (byte) render_current::i#2) [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ( main:2::render_current:11 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] main:2::render_current:43 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::i#2 render_current::xpos#2 render_current::c#2 render_current::current_cell#0 ] ) always clobbers reg byte a +Statement [57] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#63 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ( main:2::render_current:11 [ current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] main:2::render_current:43 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 current_xpos#62 current_piece_gfx#61 current_piece_color#63 render_current::ypos2#2 render_current::l#3 render_current::screen_line#0 render_current::xpos#2 render_current::c#2 render_current::i#1 ] ) always clobbers reg byte a +Statement [68] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] main:2::render_playfield:38 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::$1 ] ) always clobbers reg byte a +Statement [69] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] main:2::render_playfield:38 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ) always clobbers reg byte a +Statement [71] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ( main:2::render_playfield:9 [ render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] main:2::render_playfield:38 [ current_piece#13 current_piece_orientation#23 current_piece_gfx#18 current_piece_color#13 current_xpos#23 current_ypos#16 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y +Statement [83] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::$2 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::$2 ] ) always clobbers reg byte a +Statement [84] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#2 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#2 ] ) always clobbers reg byte a +Statement [89] (byte*~) current_piece#70 ← (byte*) current_piece#13 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#3 collision::ypos#3 collision::orientation#3 current_piece#70 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#3 collision::ypos#3 collision::orientation#3 current_piece#70 ] ) always clobbers reg byte a +Statement [93] (byte~) play_move_rotate::$8 ← (byte~) play_move_rotate::$6 & (const byte) COLLISION_LEFT#0|(const byte) COLLISION_RIGHT#0 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 play_move_rotate::$8 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 play_move_rotate::$8 ] ) always clobbers reg byte a +Statement [96] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_piece_orientation#8 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#8 current_piece_gfx#8 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#8 current_piece_gfx#8 ] ) always clobbers reg byte a +Statement [97] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::$4 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::$4 ] ) always clobbers reg byte a +Statement [98] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#1 ] ( main:2::play_move_rotate:32 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#1 ] ) always clobbers reg byte a +Statement [100] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 [ collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] ) always clobbers reg byte a +Statement [101] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] ) always clobbers reg byte a +Statement [103] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] ) always clobbers reg byte a +Statement [107] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ) always clobbers reg byte a +Statement [111] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] ) always clobbers reg byte a +Statement [114] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:2::play_move_rotate:32::collision:90 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_piece_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:27::collision:129 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_leftright:27::collision:140 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:2::play_move_down:22::collision:164 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ) always clobbers reg byte a +Statement [128] (byte*~) current_piece#69 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece#69 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ( main:2::play_move_leftright:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece#69 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ) always clobbers reg byte a +Statement [139] (byte*~) current_piece#68 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece#68 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ( main:2::play_move_leftright:27 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_piece_orientation#18 current_piece#68 collision::orientation#1 collision::ypos#1 collision::xpos#1 current_xpos#19 ] ) always clobbers reg byte a +Statement [163] (byte*~) current_piece#67 ← (byte*) current_piece#11 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_piece#67 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ( main:2::play_move_down:22 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_piece#67 collision::orientation#0 collision::ypos#0 collision::xpos#0 ] ) always clobbers reg byte a +Statement [180] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::line#0 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::line#0 ] ) always clobbers reg byte a +Statement [181] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::$1 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::$1 ] ) always clobbers reg byte a +Statement [182] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::playfield_line#0 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#3 lock_current::playfield_line#0 ] ) always clobbers reg byte a +Statement [184] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#15 + (byte) lock_current::i#2) [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::playfield_line#0 lock_current::i#2 lock_current::c#2 lock_current::cell#0 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::playfield_line#0 lock_current::i#2 lock_current::c#2 lock_current::cell#0 ] ) always clobbers reg byte a +Statement [187] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 lock_current::col#0 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 lock_current::col#0 ] ) always clobbers reg byte a +Statement [188] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 [ current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 ] ( main:2::play_move_down:22::lock_current:169 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 lock_current::l#2 lock_current::i#1 lock_current::playfield_line#0 lock_current::c#2 ] ) always clobbers reg byte a +Statement [195] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:2::play_move_down:22::keyboard_event_pressed:149 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:217 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:223 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:229 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:235 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Statement [197] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::play_move_down:22::keyboard_event_pressed:149 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:217 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:223 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:229 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:235 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Statement [198] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:2::play_move_down:22::keyboard_event_pressed:149 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:217 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:223 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:229 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:2::keyboard_event_scan:16::keyboard_event_pressed:235 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [211] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a +Statement [212] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Statement [242] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a +Statement [243] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a +Statement [246] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a +Statement [248] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a +Statement [254] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#30 ] ) always clobbers reg byte a +Statement [255] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ( main:2::keyboard_event_scan:16 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$11 ] ) always clobbers reg byte a +Statement [258] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_event_scan:16::keyboard_matrix_read:208 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a +Statement [259] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_event_scan:16::keyboard_matrix_read:208 [ current_piece#11 current_piece_orientation#15 current_piece_gfx#15 current_piece_color#11 current_xpos#16 current_ypos#12 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a +Statement [266] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::i#2 init::li#2 init::$5 ] ( main:2::init:5 [ init::i#2 init::li#2 init::$5 ] ) always clobbers reg byte a +Statement [267] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 [ init::i#2 init::li#2 ] ( main:2::init:5 [ init::i#2 init::li#2 ] ) always clobbers reg byte a +Statement [268] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init::i#2 init::li#1 ] ( main:2::init:5 [ init::i#2 init::li#1 ] ) always clobbers reg byte a +Statement [272] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init::j#2 init::pli#2 init::$8 ] ( main:2::init:5 [ init::j#2 init::pli#2 init::$8 ] ) always clobbers reg byte a +Statement [273] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 [ init::j#2 init::pli#2 ] ( main:2::init:5 [ init::j#2 init::pli#2 ] ) always clobbers reg byte a +Statement [274] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 [ init::j#2 init::pli#1 ] ( main:2::init:5 [ init::j#2 init::pli#1 ] ) always clobbers reg byte a +Statement [279] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 [ init::line#4 init::l#4 init::c#2 init::$13 ] ( main:2::init:5 [ init::line#4 init::l#4 init::c#2 init::$13 ] ) always clobbers reg byte a +Statement [280] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 [ init::line#4 init::l#4 init::c#2 ] ( main:2::init:5 [ init::line#4 init::l#4 init::c#2 ] ) always clobbers reg byte a reg byte y +Statement [283] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init::l#4 init::line#1 ] ( main:2::init:5 [ init::l#4 init::line#1 ] ) always clobbers reg byte a +Statement [288] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:2::init:5::fill:262 [ fill::addr#0 fill::val#3 fill::end#0 ] main:2::init:5::fill:264 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a +Statement [290] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:2::init:5::fill:262 [ fill::val#3 fill::end#0 fill::addr#2 ] main:2::init:5::fill:264 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [292] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:2::init:5::fill:262 [ fill::val#3 fill::end#0 fill::addr#1 ] main:2::init:5::fill:264 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a +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#35 current_ypos#75 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:5 [ current_piece_gfx#75 current_piece_gfx#99 ] : zp ZP_WORD:5 , -Potential registers zp ZP_BYTE:7 [ current_xpos#81 current_xpos#91 ] : zp ZP_BYTE:7 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:8 [ current_piece_color#62 current_piece_color#69 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:9 [ render_current::l#2 render_current::l#1 ] : zp ZP_BYTE:9 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:10 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:11 [ render_current::c#2 render_current::c#1 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:12 [ render_playfield::l#2 render_playfield::l#1 ] : zp ZP_BYTE:12 , reg byte x , -Potential registers zp ZP_BYTE:13 [ render_playfield::c#2 render_playfield::c#1 ] : zp ZP_BYTE:13 , reg byte x , -Potential registers zp ZP_BYTE:14 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] : zp ZP_BYTE:14 , reg byte x , -Potential registers zp ZP_BYTE:15 [ play_moveother::return#1 ] : zp ZP_BYTE:15 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:16 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 ] : zp ZP_BYTE:16 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:17 [ current_piece_gfx#46 current_piece_gfx#108 current_piece_gfx#109 current_piece_gfx#110 ] : zp ZP_WORD:17 , -Potential registers zp ZP_BYTE:19 [ collision::xpos#8 collision::xpos#0 collision::xpos#1 collision::xpos#2 ] : zp ZP_BYTE:19 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:20 [ collision::l#2 collision::l#1 ] : zp ZP_BYTE:20 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:21 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] : zp ZP_BYTE:21 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:22 [ collision::c#2 collision::c#1 ] : zp ZP_BYTE:22 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:23 [ collision::return#10 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:24 [ play_movedown::movedown#6 play_movedown::movedown#3 play_movedown::movedown#7 play_movedown::movedown#2 play_movedown::movedown#10 ] : zp ZP_BYTE:24 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:25 [ current_piece#23 current_piece#11 current_piece#13 ] : zp ZP_WORD:25 , -Potential registers zp ZP_BYTE:27 [ current_piece_orientation#29 current_piece_orientation#16 current_piece_orientation#11 current_piece_orientation#18 current_piece_orientation#10 current_piece_orientation#9 ] : zp ZP_BYTE:27 , reg byte x , -Potential registers zp ZP_WORD:28 [ current_piece_gfx#30 current_piece_gfx#16 current_piece_gfx#11 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#9 ] : zp ZP_WORD:28 , -Potential registers zp ZP_BYTE:30 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] : zp ZP_BYTE:30 , reg byte x , -Potential registers zp ZP_BYTE:31 [ current_xpos#35 current_xpos#16 current_xpos#11 current_xpos#19 current_xpos#9 current_xpos#10 ] : zp ZP_BYTE:31 , reg byte x , -Potential registers zp ZP_BYTE:32 [ play_movedown::return#3 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:33 [ lock_current::l#2 lock_current::l#1 ] : zp ZP_BYTE:33 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:34 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] : zp ZP_BYTE:34 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:35 [ lock_current::c#2 lock_current::c#1 ] : zp ZP_BYTE:35 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:36 [ keyboard_event_pressed::keycode#5 ] : zp ZP_BYTE:36 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:37 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] : zp ZP_BYTE:37 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:38 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] : zp ZP_BYTE:38 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:39 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] : zp ZP_BYTE:39 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:40 [ 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:40 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:41 [ 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:41 , reg byte x , -Potential registers zp ZP_BYTE:42 [ init::i#2 init::i#1 ] : zp ZP_BYTE:42 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:43 [ init::li#2 init::li#1 ] : zp ZP_WORD:43 , -Potential registers zp ZP_BYTE:45 [ init::j#2 init::j#1 ] : zp ZP_BYTE:45 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:46 [ init::pli#2 init::pli#1 ] : zp ZP_WORD:46 , -Potential registers zp ZP_WORD:48 [ init::line#4 init::line#1 ] : zp ZP_WORD:48 , -Potential registers zp ZP_BYTE:50 [ init::l#4 init::l#1 ] : zp ZP_BYTE:50 , reg byte x , -Potential registers zp ZP_BYTE:51 [ init::c#2 init::c#1 ] : zp ZP_BYTE:51 , reg byte x , -Potential registers zp ZP_BYTE:52 [ fill::val#3 ] : zp ZP_BYTE:52 , reg byte x , -Potential registers zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : zp ZP_WORD:53 , -Potential registers zp ZP_BYTE:55 [ keyboard_event_get::return#3 ] : zp ZP_BYTE:55 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:56 [ main::key_event#0 ] : zp ZP_BYTE:56 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:57 [ play_movedown::key_event#0 ] : zp ZP_BYTE:57 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:58 [ play_movedown::return#0 ] : zp ZP_BYTE:58 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:59 [ main::$8 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:60 [ main::render#1 ] : zp ZP_BYTE:60 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:61 [ play_moveother::key_event#0 ] : zp ZP_BYTE:61 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:62 [ play_moveother::return#0 ] : zp ZP_BYTE:62 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:63 [ main::$9 ] : zp ZP_BYTE:63 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:64 [ main::render#2 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:65 [ render_current::line#0 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:66 [ render_current::$3 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:67 [ render_current::screen_line#0 ] : zp ZP_WORD:67 , -Potential registers zp ZP_BYTE:69 [ render_current::current_cell#0 ] : zp ZP_BYTE:69 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:70 [ render_current::xpos#0 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:71 [ render_playfield::$1 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:72 [ render_playfield::line#0 ] : zp ZP_WORD:72 , -Potential registers zp ZP_WORD:74 [ render_playfield::$3 ] : zp ZP_WORD:74 , -Potential registers zp ZP_BYTE:76 [ play_moveother::$0 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:77 [ play_moveother::$8 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:78 [ play_moveother::$11 ] : zp ZP_BYTE:78 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:79 [ collision::return#12 ] : zp ZP_BYTE:79 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:80 [ play_moveother::$15 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:81 [ collision::return#11 ] : zp ZP_BYTE:81 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:82 [ play_moveother::$19 ] : zp ZP_BYTE:82 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:83 [ collision::line#0 ] : zp ZP_BYTE:83 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:84 [ collision::$1 ] : zp ZP_BYTE:84 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:85 [ collision::playfield_line#0 ] : zp ZP_WORD:85 , -Potential registers zp ZP_BYTE:87 [ collision::i#1 ] : zp ZP_BYTE:87 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:88 [ collision::col#0 ] : zp ZP_BYTE:88 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:89 [ collision::$7 ] : zp ZP_BYTE:89 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:90 [ keyboard_event_pressed::return#12 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:91 [ play_movedown::$2 ] : zp ZP_BYTE:91 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:92 [ collision::return#0 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:93 [ play_movedown::$12 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:94 [ lock_current::line#0 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:95 [ lock_current::$1 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:96 [ lock_current::playfield_line#0 ] : zp ZP_WORD:96 , -Potential registers zp ZP_BYTE:98 [ lock_current::cell#0 ] : zp ZP_BYTE:98 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:99 [ lock_current::col#0 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:100 [ keyboard_event_pressed::$0 ] : zp ZP_BYTE:100 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:101 [ keyboard_event_pressed::row_bits#0 ] : zp ZP_BYTE:101 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:102 [ keyboard_event_pressed::$1 ] : zp ZP_BYTE:102 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:103 [ keyboard_event_pressed::return#11 ] : zp ZP_BYTE:103 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:104 [ keyboard_matrix_read::rowid#0 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:105 [ keyboard_matrix_read::return#2 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:106 [ keyboard_event_scan::row_scan#0 ] : zp ZP_BYTE:106 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:107 [ keyboard_event_pressed::return#0 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:108 [ keyboard_event_scan::$14 ] : zp ZP_BYTE:108 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:109 [ keyboard_event_pressed::return#1 ] : zp ZP_BYTE:109 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:110 [ keyboard_event_scan::$18 ] : zp ZP_BYTE:110 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:111 [ keyboard_event_pressed::return#2 ] : zp ZP_BYTE:111 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:112 [ keyboard_event_scan::$22 ] : zp ZP_BYTE:112 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:113 [ keyboard_event_pressed::return#10 ] : zp ZP_BYTE:113 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:114 [ keyboard_event_scan::$26 ] : zp ZP_BYTE:114 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:115 [ keyboard_event_scan::$3 ] : zp ZP_BYTE:115 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:116 [ keyboard_event_scan::$4 ] : zp ZP_BYTE:116 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:117 [ keyboard_event_scan::event_type#0 ] : zp ZP_BYTE:117 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:118 [ keyboard_event_scan::$11 ] : zp ZP_BYTE:118 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:119 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:119 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:120 [ init::$5 ] : zp ZP_BYTE:120 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:121 [ init::$8 ] : zp ZP_BYTE:121 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:122 [ init::$13 ] : zp ZP_WORD:122 , -Potential registers zp ZP_WORD:124 [ fill::end#0 ] : zp ZP_WORD:124 , +Potential registers zp ZP_BYTE:4 [ current_ypos#22 current_ypos#72 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:6 [ current_piece_gfx#61 current_piece_gfx#82 ] : zp ZP_WORD:6 , +Potential registers zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE: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 , +Potential registers zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 ] : zp ZP_BYTE:13 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] : zp ZP_BYTE:14 , reg byte x , +Potential registers zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] : zp ZP_BYTE:15 , reg byte x , +Potential registers zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] : zp ZP_WORD:16 , +Potential registers zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] : zp ZP_BYTE:18 , reg byte x , +Potential registers zp ZP_BYTE:19 [ play_move_rotate::return#2 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] : zp ZP_BYTE:20 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:21 [ current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 ] : zp ZP_WORD:21 , +Potential registers zp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] : zp ZP_BYTE:23 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] : zp ZP_BYTE:24 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] : zp ZP_BYTE:25 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] : zp ZP_BYTE:26 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] : zp ZP_BYTE:27 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] : zp ZP_BYTE:28 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] : zp ZP_BYTE:29 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:30 [ collision::c#2 collision::c#1 ] : zp ZP_BYTE:30 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:31 [ collision::return#14 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:32 [ play_move_leftright::return#2 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:33 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] : zp ZP_BYTE:33 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:34 [ current_piece#23 current_piece#11 current_piece#13 ] : zp ZP_WORD:34 , +Potential registers zp ZP_BYTE:36 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] : zp ZP_BYTE:36 , reg byte x , +Potential registers zp ZP_WORD:37 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#8 current_piece_gfx#17 ] : zp ZP_WORD:37 , +Potential registers zp ZP_BYTE:39 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] : zp ZP_BYTE:39 , reg byte x , +Potential registers zp ZP_BYTE:40 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] : zp ZP_BYTE:40 , reg byte x , +Potential registers zp ZP_BYTE:41 [ play_move_down::return#3 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:42 [ lock_current::l#2 lock_current::l#1 ] : zp ZP_BYTE:42 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:43 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] : zp ZP_BYTE:43 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:44 [ lock_current::c#2 lock_current::c#1 ] : zp ZP_BYTE:44 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:45 [ keyboard_event_pressed::keycode#5 ] : zp ZP_BYTE:45 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:46 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] : zp ZP_BYTE:46 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:47 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:48 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:49 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] : zp ZP_BYTE:49 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:50 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] : zp ZP_BYTE:50 , reg byte x , +Potential registers zp ZP_BYTE:51 [ init::i#2 init::i#1 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:52 [ init::li#2 init::li#1 ] : zp ZP_WORD:52 , +Potential registers zp ZP_BYTE:54 [ init::j#2 init::j#1 ] : zp ZP_BYTE:54 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:55 [ init::pli#2 init::pli#1 ] : zp ZP_WORD:55 , +Potential registers zp ZP_WORD:57 [ init::line#4 init::line#1 ] : zp ZP_WORD:57 , +Potential registers zp ZP_BYTE:59 [ init::l#4 init::l#1 ] : zp ZP_BYTE:59 , reg byte x , +Potential registers zp ZP_BYTE:60 [ init::c#2 init::c#1 ] : zp ZP_BYTE:60 , reg byte x , +Potential registers zp ZP_BYTE:61 [ fill::val#3 ] : zp ZP_BYTE:61 , reg byte x , +Potential registers zp ZP_WORD:62 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : zp ZP_WORD:62 , +Potential registers zp ZP_BYTE:64 [ keyboard_event_get::return#3 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:65 [ main::key_event#0 ] : zp ZP_BYTE:65 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:66 [ play_move_down::key_event#0 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:67 [ play_move_down::return#0 ] : zp ZP_BYTE:67 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:68 [ main::$8 ] : zp ZP_BYTE:68 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:69 [ main::render#1 ] : zp ZP_BYTE:69 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:70 [ play_move_leftright::key_event#0 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:71 [ play_move_leftright::return#0 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:72 [ main::$9 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:73 [ main::render#2 ] : zp ZP_BYTE:73 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:74 [ play_move_rotate::key_event#0 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:75 [ play_move_rotate::return#0 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:76 [ main::$10 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:77 [ main::render#3 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:78 [ render_current::screen_line#0 ] : zp ZP_WORD:78 , +Potential registers zp ZP_BYTE:80 [ render_current::current_cell#0 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:81 [ render_playfield::$1 ] : zp ZP_BYTE:81 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:82 [ play_move_rotate::$2 ] : zp ZP_BYTE:82 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:83 [ collision::return#13 ] : zp ZP_BYTE:83 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:84 [ play_move_rotate::$6 ] : zp ZP_BYTE:84 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:85 [ play_move_rotate::$8 ] : zp ZP_BYTE:85 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:86 [ play_move_rotate::$4 ] : zp ZP_BYTE:86 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:87 [ collision::piece_gfx#0 ] : zp ZP_WORD:87 , +Potential registers zp ZP_WORD:89 [ collision::playfield_line#0 ] : zp ZP_WORD:89 , +Potential registers zp ZP_BYTE:91 [ collision::i#1 ] : zp ZP_BYTE:91 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:92 [ collision::$7 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:93 [ collision::return#12 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:94 [ play_move_leftright::$4 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:95 [ collision::return#1 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:96 [ play_move_leftright::$8 ] : zp ZP_BYTE:96 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:97 [ keyboard_event_pressed::return#12 ] : zp ZP_BYTE:97 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:98 [ play_move_down::$2 ] : zp ZP_BYTE:98 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:99 [ collision::return#0 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:100 [ play_move_down::$12 ] : zp ZP_BYTE:100 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:101 [ lock_current::line#0 ] : zp ZP_BYTE:101 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:102 [ lock_current::$1 ] : zp ZP_BYTE:102 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:103 [ lock_current::playfield_line#0 ] : zp ZP_WORD:103 , +Potential registers zp ZP_BYTE:105 [ lock_current::cell#0 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:106 [ lock_current::col#0 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:107 [ keyboard_event_pressed::$0 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:108 [ keyboard_event_pressed::row_bits#0 ] : zp ZP_BYTE:108 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:109 [ keyboard_event_pressed::$1 ] : zp ZP_BYTE:109 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:110 [ keyboard_event_pressed::return#11 ] : zp ZP_BYTE:110 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:111 [ keyboard_matrix_read::rowid#0 ] : zp ZP_BYTE:111 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:112 [ keyboard_matrix_read::return#2 ] : zp ZP_BYTE:112 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:113 [ keyboard_event_scan::row_scan#0 ] : zp ZP_BYTE:113 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:114 [ keyboard_event_pressed::return#0 ] : zp ZP_BYTE:114 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:115 [ keyboard_event_scan::$14 ] : zp ZP_BYTE:115 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:116 [ keyboard_event_pressed::return#1 ] : zp ZP_BYTE:116 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:117 [ keyboard_event_scan::$18 ] : zp ZP_BYTE:117 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:118 [ keyboard_event_pressed::return#2 ] : zp ZP_BYTE:118 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:119 [ keyboard_event_scan::$22 ] : zp ZP_BYTE:119 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:120 [ keyboard_event_pressed::return#10 ] : zp ZP_BYTE:120 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:121 [ keyboard_event_scan::$26 ] : zp ZP_BYTE:121 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:122 [ keyboard_event_scan::$3 ] : zp ZP_BYTE:122 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:123 [ keyboard_event_scan::$4 ] : zp ZP_BYTE:123 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:124 [ keyboard_event_scan::event_type#0 ] : zp ZP_BYTE:124 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:125 [ keyboard_event_scan::$11 ] : zp ZP_BYTE:125 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:126 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:126 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:127 [ init::$5 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:128 [ init::$8 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:129 [ init::$13 ] : zp ZP_WORD:129 , +Potential registers zp ZP_WORD:131 [ fill::end#0 ] : zp ZP_WORD:131 , REGISTER UPLIFT SCOPES -Uplift Scope [keyboard_event_scan] 2,002: zp ZP_BYTE:115 [ keyboard_event_scan::$3 ] 2,002: zp ZP_BYTE:116 [ keyboard_event_scan::$4 ] 2,002: zp ZP_BYTE:117 [ keyboard_event_scan::event_type#0 ] 2,002: zp ZP_BYTE:118 [ keyboard_event_scan::$11 ] 1,787.5: zp ZP_BYTE:39 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 1,195.02: zp ZP_BYTE:40 [ 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:38 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 128.06: zp ZP_BYTE:106 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:108 [ keyboard_event_scan::$14 ] 4: zp ZP_BYTE:110 [ keyboard_event_scan::$18 ] 4: zp ZP_BYTE:112 [ keyboard_event_scan::$22 ] 4: zp ZP_BYTE:114 [ keyboard_event_scan::$26 ] -Uplift Scope [collision] 3,806.5: zp ZP_BYTE:21 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] 2,002: zp ZP_BYTE:89 [ collision::$7 ] 1,334.67: zp ZP_BYTE:22 [ collision::c#2 collision::c#1 ] 1,001: zp ZP_BYTE:88 [ collision::col#0 ] 202: zp ZP_BYTE:84 [ collision::$1 ] 175.25: zp ZP_BYTE:87 [ collision::i#1 ] 119.94: zp ZP_BYTE:20 [ collision::l#2 collision::l#1 ] 84.77: zp ZP_WORD:85 [ collision::playfield_line#0 ] 80.2: zp ZP_BYTE:83 [ collision::line#0 ] 55.02: zp ZP_BYTE:19 [ collision::xpos#8 collision::xpos#0 collision::xpos#1 collision::xpos#2 ] 10.68: zp ZP_BYTE:16 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 ] 4: zp ZP_BYTE:79 [ collision::return#12 ] 4: zp ZP_BYTE:81 [ collision::return#11 ] 4: zp ZP_BYTE:92 [ collision::return#0 ] 1.2: zp ZP_BYTE:23 [ collision::return#10 ] -Uplift Scope [lock_current] 2,002: zp ZP_BYTE:35 [ lock_current::c#2 lock_current::c#1 ] 2,002: zp ZP_BYTE:99 [ lock_current::col#0 ] 1,865.38: zp ZP_BYTE:34 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] 1,001: zp ZP_BYTE:98 [ lock_current::cell#0 ] 202: zp ZP_BYTE:94 [ lock_current::line#0 ] 202: zp ZP_BYTE:95 [ lock_current::$1 ] 176.75: zp ZP_BYTE:33 [ lock_current::l#2 lock_current::l#1 ] 122.44: zp ZP_WORD:96 [ lock_current::playfield_line#0 ] -Uplift Scope [render_current] 2,442.6: zp ZP_BYTE:10 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] 1,930.5: zp ZP_BYTE:11 [ render_current::c#2 render_current::c#1 ] 1,501.5: zp ZP_BYTE:70 [ render_current::xpos#0 ] 1,001: zp ZP_BYTE:69 [ render_current::current_cell#0 ] 202: zp ZP_BYTE:66 [ render_current::$3 ] 171.7: zp ZP_BYTE:9 [ render_current::l#2 render_current::l#1 ] 151.5: zp ZP_BYTE:65 [ render_current::line#0 ] 110.2: zp ZP_WORD:67 [ render_current::screen_line#0 ] -Uplift Scope [render_playfield] 2,252.25: zp ZP_BYTE:13 [ render_playfield::c#2 render_playfield::c#1 ] 2,002: zp ZP_WORD:74 [ render_playfield::$3 ] 1,522.6: zp ZP_BYTE:14 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] 202: zp ZP_BYTE:71 [ render_playfield::$1 ] 185.17: zp ZP_BYTE:12 [ render_playfield::l#2 render_playfield::l#1 ] 157.43: zp ZP_WORD:72 [ render_playfield::line#0 ] -Uplift Scope [] 5,895.84: zp ZP_BYTE:41 [ 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 ] 78.22: zp ZP_BYTE:8 [ current_piece_color#62 current_piece_color#69 ] 67.22: zp ZP_BYTE:7 [ current_xpos#81 current_xpos#91 ] 63.56: zp ZP_WORD:5 [ current_piece_gfx#75 current_piece_gfx#99 ] 62.35: zp ZP_WORD:17 [ current_piece_gfx#46 current_piece_gfx#108 current_piece_gfx#109 current_piece_gfx#110 ] 35.88: zp ZP_BYTE:31 [ current_xpos#35 current_xpos#16 current_xpos#11 current_xpos#19 current_xpos#9 current_xpos#10 ] 35.84: zp ZP_WORD:28 [ current_piece_gfx#30 current_piece_gfx#16 current_piece_gfx#11 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#9 ] 25.97: zp ZP_BYTE:30 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] 12.83: zp ZP_BYTE:27 [ current_piece_orientation#29 current_piece_orientation#16 current_piece_orientation#11 current_piece_orientation#18 current_piece_orientation#10 current_piece_orientation#9 ] 11.72: zp ZP_BYTE:4 [ current_ypos#35 current_ypos#75 ] 11.05: zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#30 current_ypos#4 ] 4.83: zp ZP_WORD:25 [ current_piece#23 current_piece#11 current_piece#13 ] 2.45: zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] -Uplift Scope [init] 252.5: zp ZP_BYTE:51 [ init::c#2 init::c#1 ] 202: zp ZP_WORD:122 [ init::$13 ] 27.83: zp ZP_WORD:48 [ init::line#4 init::line#1 ] 24.75: zp ZP_BYTE:42 [ init::i#2 init::i#1 ] 24.75: zp ZP_BYTE:45 [ init::j#2 init::j#1 ] 22: zp ZP_BYTE:120 [ init::$5 ] 22: zp ZP_BYTE:121 [ init::$8 ] 19.64: zp ZP_BYTE:50 [ init::l#4 init::l#1 ] 18.33: zp ZP_WORD:43 [ init::li#2 init::li#1 ] 18.33: zp ZP_WORD:46 [ init::pli#2 init::pli#1 ] -Uplift Scope [keyboard_matrix_read] 202: zp ZP_BYTE:105 [ keyboard_matrix_read::return#2 ] 103: zp ZP_BYTE:104 [ keyboard_matrix_read::rowid#0 ] 34.33: zp ZP_BYTE:119 [ keyboard_matrix_read::return#0 ] -Uplift Scope [main] 22: zp ZP_BYTE:59 [ main::$8 ] 22: zp ZP_BYTE:63 [ main::$9 ] 22: zp ZP_BYTE:64 [ main::render#2 ] 5.5: zp ZP_BYTE:56 [ main::key_event#0 ] 4.4: zp ZP_BYTE:60 [ main::render#1 ] -Uplift Scope [play_movedown] 22: zp ZP_BYTE:58 [ play_movedown::return#0 ] 20: zp ZP_BYTE:24 [ play_movedown::movedown#6 play_movedown::movedown#3 play_movedown::movedown#7 play_movedown::movedown#2 play_movedown::movedown#10 ] 6.5: zp ZP_BYTE:57 [ play_movedown::key_event#0 ] 4: zp ZP_BYTE:91 [ play_movedown::$2 ] 4: zp ZP_BYTE:93 [ play_movedown::$12 ] 3.67: zp ZP_BYTE:32 [ play_movedown::return#3 ] -Uplift Scope [play_moveother] 22: zp ZP_BYTE:62 [ play_moveother::return#0 ] 4: zp ZP_BYTE:76 [ play_moveother::$0 ] 4: zp ZP_BYTE:77 [ play_moveother::$8 ] 4: zp ZP_BYTE:78 [ play_moveother::$11 ] 4: zp ZP_BYTE:80 [ play_moveother::$15 ] 4: zp ZP_BYTE:82 [ play_moveother::$19 ] 3.67: zp ZP_BYTE:15 [ play_moveother::return#1 ] 3.5: zp ZP_BYTE:61 [ play_moveother::key_event#0 ] -Uplift Scope [fill] 36: zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp ZP_WORD:124 [ fill::end#0 ] 1.83: zp ZP_BYTE:52 [ fill::val#3 ] -Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:90 [ keyboard_event_pressed::return#12 ] 4: zp ZP_BYTE:100 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:102 [ keyboard_event_pressed::$1 ] 4: zp ZP_BYTE:107 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:109 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:111 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:113 [ keyboard_event_pressed::return#10 ] 2: zp ZP_BYTE:101 [ keyboard_event_pressed::row_bits#0 ] 1.71: zp ZP_BYTE:103 [ keyboard_event_pressed::return#11 ] 1.33: zp ZP_BYTE:36 [ keyboard_event_pressed::keycode#5 ] -Uplift Scope [keyboard_event_get] 22: zp ZP_BYTE:55 [ keyboard_event_get::return#3 ] 8.33: zp ZP_BYTE:37 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplift Scope [keyboard_event_scan] 2,002: zp ZP_BYTE:122 [ keyboard_event_scan::$3 ] 2,002: zp ZP_BYTE:123 [ keyboard_event_scan::$4 ] 2,002: zp ZP_BYTE:124 [ keyboard_event_scan::event_type#0 ] 2,002: zp ZP_BYTE:125 [ keyboard_event_scan::$11 ] 1,787.5: zp ZP_BYTE:48 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 1,195.02: zp ZP_BYTE:49 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] 211.74: zp ZP_BYTE:47 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 128.06: zp ZP_BYTE:113 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:115 [ keyboard_event_scan::$14 ] 4: zp ZP_BYTE:117 [ keyboard_event_scan::$18 ] 4: zp ZP_BYTE:119 [ keyboard_event_scan::$22 ] 4: zp ZP_BYTE:121 [ keyboard_event_scan::$26 ] +Uplift Scope [collision] 3,823.33: zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] 2,002: zp ZP_BYTE:92 [ collision::$7 ] 1,340.75: zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] 1,223.44: zp ZP_BYTE:30 [ collision::c#2 collision::c#1 ] 161.77: zp ZP_BYTE:91 [ collision::i#1 ] 141.57: zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] 113.62: zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] 78.71: zp ZP_WORD:89 [ collision::playfield_line#0 ] 47.76: zp ZP_WORD:87 [ collision::piece_gfx#0 ] 18: zp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] 10: zp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] 9.29: zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] 4: zp ZP_BYTE:83 [ collision::return#13 ] 4: zp ZP_BYTE:93 [ collision::return#12 ] 4: zp ZP_BYTE:95 [ collision::return#1 ] 4: zp ZP_BYTE:99 [ collision::return#0 ] 1.33: zp ZP_BYTE:31 [ collision::return#14 ] +Uplift Scope [lock_current] 2,002: zp ZP_BYTE:44 [ lock_current::c#2 lock_current::c#1 ] 2,002: zp ZP_BYTE:106 [ lock_current::col#0 ] 1,865.38: zp ZP_BYTE:43 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] 1,001: zp ZP_BYTE:105 [ lock_current::cell#0 ] 202: zp ZP_BYTE:101 [ lock_current::line#0 ] 202: zp ZP_BYTE:102 [ lock_current::$1 ] 176.75: zp ZP_BYTE:42 [ lock_current::l#2 lock_current::l#1 ] 122.44: zp ZP_WORD:103 [ lock_current::playfield_line#0 ] +Uplift Scope [render_current] 2,357.5: zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] 1,787.5: zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 ] 1,553.5: zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] 1,001: zp ZP_BYTE:80 [ render_current::current_cell#0 ] 164.97: zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] 100.33: zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] 100.18: zp ZP_WORD:78 [ render_current::screen_line#0 ] +Uplift Scope [] 5,895.74: zp ZP_BYTE:50 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] 75.26: zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 ] 64.26: zp ZP_WORD:6 [ current_piece_gfx#61 current_piece_gfx#82 ] 33.91: zp ZP_BYTE:40 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] 30.36: zp ZP_WORD:37 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#8 current_piece_gfx#17 ] 26: zp ZP_WORD:21 [ current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 ] 25.32: zp ZP_BYTE:39 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] 18.5: zp ZP_BYTE:4 [ current_ypos#22 current_ypos#72 ] 13.23: zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 ] 10.88: zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] 8.88: zp ZP_BYTE:36 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] 4.84: zp ZP_WORD:34 [ current_piece#23 current_piece#11 current_piece#13 ] 2.33: zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] +Uplift Scope [render_playfield] 2,254.5: zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] 2,002: zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] 1,522.6: zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] 202: zp ZP_BYTE:81 [ render_playfield::$1 ] 185.17: zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] +Uplift Scope [init] 252.5: zp ZP_BYTE:60 [ init::c#2 init::c#1 ] 202: zp ZP_WORD:129 [ init::$13 ] 27.83: zp ZP_WORD:57 [ init::line#4 init::line#1 ] 24.75: zp ZP_BYTE:51 [ init::i#2 init::i#1 ] 24.75: zp ZP_BYTE:54 [ init::j#2 init::j#1 ] 22: zp ZP_BYTE:127 [ init::$5 ] 22: zp ZP_BYTE:128 [ init::$8 ] 19.64: zp ZP_BYTE:59 [ init::l#4 init::l#1 ] 18.33: zp ZP_WORD:52 [ init::li#2 init::li#1 ] 18.33: zp ZP_WORD:55 [ init::pli#2 init::pli#1 ] +Uplift Scope [keyboard_matrix_read] 202: zp ZP_BYTE:112 [ keyboard_matrix_read::return#2 ] 103: zp ZP_BYTE:111 [ keyboard_matrix_read::rowid#0 ] 34.33: zp ZP_BYTE:126 [ keyboard_matrix_read::return#0 ] +Uplift Scope [main] 22: zp ZP_BYTE:68 [ main::$8 ] 22: zp ZP_BYTE:72 [ main::$9 ] 22: zp ZP_BYTE:76 [ main::$10 ] 22: zp ZP_BYTE:77 [ main::render#3 ] 4.4: zp ZP_BYTE:69 [ main::render#1 ] 4.4: zp ZP_BYTE:73 [ main::render#2 ] 4: zp ZP_BYTE:65 [ main::key_event#0 ] +Uplift Scope [play_move_down] 22: zp ZP_BYTE:67 [ play_move_down::return#0 ] 20: zp ZP_BYTE:33 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] 6.5: zp ZP_BYTE:66 [ play_move_down::key_event#0 ] 4: zp ZP_BYTE:98 [ play_move_down::$2 ] 4: zp ZP_BYTE:100 [ play_move_down::$12 ] 3.67: zp ZP_BYTE:41 [ play_move_down::return#3 ] +Uplift Scope [play_move_rotate] 22: zp ZP_BYTE:75 [ play_move_rotate::return#0 ] 8.8: zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] 7.5: zp ZP_BYTE:74 [ play_move_rotate::key_event#0 ] 4: zp ZP_BYTE:82 [ play_move_rotate::$2 ] 4: zp ZP_BYTE:84 [ play_move_rotate::$6 ] 4: zp ZP_BYTE:85 [ play_move_rotate::$8 ] 4: zp ZP_BYTE:86 [ play_move_rotate::$4 ] 3.67: zp ZP_BYTE:19 [ play_move_rotate::return#2 ] +Uplift Scope [play_move_leftright] 22: zp ZP_BYTE:71 [ play_move_leftright::return#0 ] 7.5: zp ZP_BYTE:70 [ play_move_leftright::key_event#0 ] 4: zp ZP_BYTE:94 [ play_move_leftright::$4 ] 4: zp ZP_BYTE:96 [ play_move_leftright::$8 ] 3.67: zp ZP_BYTE:32 [ play_move_leftright::return#2 ] +Uplift Scope [fill] 36: zp ZP_WORD:62 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp ZP_WORD:131 [ fill::end#0 ] 1.83: zp ZP_BYTE:61 [ fill::val#3 ] +Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:97 [ keyboard_event_pressed::return#12 ] 4: zp ZP_BYTE:107 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:109 [ keyboard_event_pressed::$1 ] 4: zp ZP_BYTE:114 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:116 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:118 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:120 [ keyboard_event_pressed::return#10 ] 2: zp ZP_BYTE:108 [ keyboard_event_pressed::row_bits#0 ] 1.71: zp ZP_BYTE:110 [ keyboard_event_pressed::return#11 ] 1.33: zp ZP_BYTE:45 [ keyboard_event_pressed::keycode#5 ] +Uplift Scope [keyboard_event_get] 22: zp ZP_BYTE:64 [ keyboard_event_get::return#3 ] 8.33: zp ZP_BYTE:46 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] Uplift Scope [spawn_current] -Uplifting [keyboard_event_scan] best 520634 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:39 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:40 [ 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:38 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:106 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:108 [ keyboard_event_scan::$14 ] zp ZP_BYTE:110 [ keyboard_event_scan::$18 ] zp ZP_BYTE:112 [ keyboard_event_scan::$22 ] zp ZP_BYTE:114 [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 501994 combination reg byte a [ keyboard_event_scan::$3 ] reg byte a [ keyboard_event_scan::$4 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$11 ] zp ZP_BYTE:48 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:49 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] zp ZP_BYTE:47 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:113 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:115 [ keyboard_event_scan::$14 ] zp ZP_BYTE:117 [ keyboard_event_scan::$18 ] zp ZP_BYTE:119 [ keyboard_event_scan::$22 ] zp ZP_BYTE:121 [ keyboard_event_scan::$26 ] Limited combination testing to 100 combinations of 5308416 possible. -Uplifting [collision] best 496634 combination zp ZP_BYTE:21 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] reg byte a [ collision::$7 ] reg byte x [ collision::c#2 collision::c#1 ] reg byte y [ collision::col#0 ] zp ZP_BYTE:84 [ collision::$1 ] zp ZP_BYTE:87 [ collision::i#1 ] zp ZP_BYTE:20 [ collision::l#2 collision::l#1 ] zp ZP_WORD:85 [ collision::playfield_line#0 ] zp ZP_BYTE:83 [ collision::line#0 ] zp ZP_BYTE:19 [ collision::xpos#8 collision::xpos#0 collision::xpos#1 collision::xpos#2 ] zp ZP_BYTE:16 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 ] zp ZP_BYTE:79 [ collision::return#12 ] zp ZP_BYTE:81 [ collision::return#11 ] zp ZP_BYTE:92 [ collision::return#0 ] zp ZP_BYTE:23 [ collision::return#10 ] -Limited combination testing to 100 combinations of 26873856 possible. -Uplifting [lock_current] best 476634 combination reg byte x [ lock_current::c#2 lock_current::c#1 ] reg byte a [ lock_current::col#0 ] zp ZP_BYTE:34 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] reg byte a [ lock_current::cell#0 ] zp ZP_BYTE:94 [ lock_current::line#0 ] zp ZP_BYTE:95 [ lock_current::$1 ] zp ZP_BYTE:33 [ lock_current::l#2 lock_current::l#1 ] zp ZP_WORD:96 [ lock_current::playfield_line#0 ] +Uplifting [collision] best 486994 combination zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] reg byte a [ collision::$7 ] zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] reg byte x [ collision::c#2 collision::c#1 ] zp ZP_BYTE:91 [ collision::i#1 ] zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] zp ZP_WORD:89 [ collision::playfield_line#0 ] zp ZP_WORD:87 [ collision::piece_gfx#0 ] zp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] zp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] zp ZP_BYTE:83 [ collision::return#13 ] zp ZP_BYTE:93 [ collision::return#12 ] zp ZP_BYTE:95 [ collision::return#1 ] zp ZP_BYTE:99 [ collision::return#0 ] zp ZP_BYTE:31 [ collision::return#14 ] +Limited combination testing to 100 combinations of 80621568 possible. +Uplifting [lock_current] best 466994 combination reg byte x [ lock_current::c#2 lock_current::c#1 ] reg byte a [ lock_current::col#0 ] zp ZP_BYTE:43 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] reg byte a [ lock_current::cell#0 ] zp ZP_BYTE:101 [ lock_current::line#0 ] zp ZP_BYTE:102 [ lock_current::$1 ] zp ZP_BYTE:42 [ lock_current::l#2 lock_current::l#1 ] zp ZP_WORD:103 [ lock_current::playfield_line#0 ] Limited combination testing to 100 combinations of 6912 possible. -Uplifting [render_current] best 453634 combination zp ZP_BYTE:10 [ 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 ] reg byte a [ render_current::xpos#0 ] reg byte a [ render_current::current_cell#0 ] zp ZP_BYTE:66 [ render_current::$3 ] zp ZP_BYTE:9 [ render_current::l#2 render_current::l#1 ] zp ZP_BYTE:65 [ render_current::line#0 ] zp ZP_WORD:67 [ render_current::screen_line#0 ] -Limited combination testing to 100 combinations of 6912 possible. -Uplifting [render_playfield] best 443234 combination reg byte x [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_WORD:74 [ render_playfield::$3 ] zp ZP_BYTE:14 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$1 ] zp ZP_BYTE:12 [ render_playfield::l#2 render_playfield::l#1 ] zp ZP_WORD:72 [ render_playfield::line#0 ] -Uplifting [] best 443234 combination zp ZP_BYTE:41 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] zp ZP_BYTE:8 [ current_piece_color#62 current_piece_color#69 ] zp ZP_BYTE:7 [ current_xpos#81 current_xpos#91 ] zp ZP_WORD:5 [ current_piece_gfx#75 current_piece_gfx#99 ] zp ZP_WORD:17 [ current_piece_gfx#46 current_piece_gfx#108 current_piece_gfx#109 current_piece_gfx#110 ] zp ZP_BYTE:31 [ current_xpos#35 current_xpos#16 current_xpos#11 current_xpos#19 current_xpos#9 current_xpos#10 ] zp ZP_WORD:28 [ current_piece_gfx#30 current_piece_gfx#16 current_piece_gfx#11 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#9 ] zp ZP_BYTE:30 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] zp ZP_BYTE:27 [ current_piece_orientation#29 current_piece_orientation#16 current_piece_orientation#11 current_piece_orientation#18 current_piece_orientation#10 current_piece_orientation#9 ] zp ZP_BYTE:4 [ current_ypos#35 current_ypos#75 ] zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#30 current_ypos#4 ] zp ZP_WORD:25 [ current_piece#23 current_piece#11 current_piece#13 ] zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] +Uplifting [render_current] best 451994 combination zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] reg byte x [ render_current::c#2 render_current::c#1 ] zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] reg byte a [ render_current::current_cell#0 ] zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] zp ZP_WORD:78 [ render_current::screen_line#0 ] +Limited combination testing to 100 combinations of 972 possible. +Uplifting [] best 451960 combination zp ZP_BYTE:50 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 ] zp ZP_WORD:6 [ current_piece_gfx#61 current_piece_gfx#82 ] zp ZP_BYTE:40 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] zp ZP_WORD:37 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#8 current_piece_gfx#17 ] zp ZP_WORD:21 [ current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 ] zp ZP_BYTE:39 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] reg byte x [ current_ypos#22 current_ypos#72 ] zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 ] zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] zp ZP_BYTE:36 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] zp ZP_WORD:34 [ current_piece#23 current_piece#11 current_piece#13 ] zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] Limited combination testing to 100 combinations of 1728 possible. -Uplifting [init] best 441954 combination reg byte x [ init::c#2 init::c#1 ] zp ZP_WORD:122 [ init::$13 ] zp ZP_WORD:48 [ init::line#4 init::line#1 ] reg byte x [ init::i#2 init::i#1 ] reg byte x [ init::j#2 init::j#1 ] reg byte a [ init::$5 ] reg byte a [ init::$8 ] zp ZP_BYTE:50 [ init::l#4 init::l#1 ] zp ZP_WORD:43 [ init::li#2 init::li#1 ] zp ZP_WORD:46 [ init::pli#2 init::pli#1 ] +Uplifting [render_playfield] best 442560 combination zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] reg byte x [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$1 ] zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] +Uplifting [init] best 441280 combination reg byte x [ init::c#2 init::c#1 ] zp ZP_WORD:129 [ init::$13 ] zp ZP_WORD:57 [ init::line#4 init::line#1 ] reg byte x [ init::i#2 init::i#1 ] reg byte x [ init::j#2 init::j#1 ] reg byte a [ init::$5 ] reg byte a [ init::$8 ] zp ZP_BYTE:59 [ init::l#4 init::l#1 ] zp ZP_WORD:52 [ init::li#2 init::li#1 ] zp ZP_WORD:55 [ init::pli#2 init::pli#1 ] Limited combination testing to 100 combinations of 576 possible. -Uplifting [keyboard_matrix_read] best 440748 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] -Uplifting [main] best 440568 combination reg byte a [ main::$8 ] reg byte a [ main::$9 ] reg byte a [ main::render#2 ] zp ZP_BYTE:56 [ main::key_event#0 ] zp ZP_BYTE:60 [ main::render#1 ] -Limited combination testing to 100 combinations of 576 possible. -Uplifting [play_movedown] best 440454 combination reg byte a [ play_movedown::return#0 ] reg byte x [ play_movedown::movedown#6 play_movedown::movedown#3 play_movedown::movedown#7 play_movedown::movedown#2 play_movedown::movedown#10 ] reg byte a [ play_movedown::key_event#0 ] reg byte a [ play_movedown::$2 ] zp ZP_BYTE:93 [ play_movedown::$12 ] zp ZP_BYTE:32 [ play_movedown::return#3 ] +Uplifting [keyboard_matrix_read] best 440074 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] +Uplifting [main] best 439834 combination reg byte a [ main::$8 ] reg byte a [ main::$9 ] reg byte a [ main::$10 ] reg byte a [ main::render#3 ] zp ZP_BYTE:69 [ main::render#1 ] zp ZP_BYTE:73 [ main::render#2 ] zp ZP_BYTE:65 [ main::key_event#0 ] +Limited combination testing to 100 combinations of 6912 possible. +Uplifting [play_move_down] best 439720 combination reg byte a [ play_move_down::return#0 ] reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] reg byte a [ play_move_down::key_event#0 ] reg byte a [ play_move_down::$2 ] zp ZP_BYTE:100 [ play_move_down::$12 ] zp ZP_BYTE:41 [ play_move_down::return#3 ] Limited combination testing to 100 combinations of 3072 possible. -Uplifting [play_moveother] best 440378 combination reg byte a [ play_moveother::return#0 ] reg byte a [ play_moveother::$0 ] reg byte a [ play_moveother::$8 ] reg byte a [ play_moveother::$11 ] zp ZP_BYTE:80 [ play_moveother::$15 ] zp ZP_BYTE:82 [ play_moveother::$19 ] zp ZP_BYTE:15 [ play_moveother::return#1 ] zp ZP_BYTE:61 [ play_moveother::key_event#0 ] +Uplifting [play_move_rotate] best 439618 combination reg byte a [ play_move_rotate::return#0 ] zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte a [ play_move_rotate::key_event#0 ] reg byte a [ play_move_rotate::$2 ] zp ZP_BYTE:84 [ play_move_rotate::$6 ] zp ZP_BYTE:85 [ play_move_rotate::$8 ] zp ZP_BYTE:86 [ play_move_rotate::$4 ] zp ZP_BYTE:19 [ play_move_rotate::return#2 ] Limited combination testing to 100 combinations of 49152 possible. -Uplifting [fill] best 440362 combination zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:124 [ fill::end#0 ] reg byte x [ fill::val#3 ] -Uplifting [keyboard_event_pressed] best 440342 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:109 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:111 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:113 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:101 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:103 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:36 [ keyboard_event_pressed::keycode#5 ] +Uplifting [play_move_leftright] best 439510 combination reg byte a [ play_move_leftright::return#0 ] reg byte a [ play_move_leftright::key_event#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] zp ZP_BYTE:32 [ play_move_leftright::return#2 ] +Limited combination testing to 100 combinations of 1024 possible. +Uplifting [fill] best 439494 combination zp ZP_WORD:62 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:131 [ fill::end#0 ] reg byte x [ fill::val#3 ] +Uplifting [keyboard_event_pressed] best 439474 combination reg byte a [ keyboard_event_pressed::return#12 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#0 ] zp ZP_BYTE:116 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:118 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:120 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:108 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:110 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:45 [ keyboard_event_pressed::keycode#5 ] Limited combination testing to 100 combinations of 589824 possible. -Uplifting [keyboard_event_get] best 440246 combination reg byte a [ keyboard_event_get::return#3 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Uplifting [spawn_current] best 440246 combination -Attempting to uplift remaining variables inzp ZP_BYTE:41 [ 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 440246 combination zp ZP_BYTE:41 [ 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:21 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] -Uplifting [collision] best 440246 combination zp ZP_BYTE:21 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:10 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] -Uplifting [render_current] best 440246 combination zp ZP_BYTE:10 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] -Attempting to uplift remaining variables inzp ZP_BYTE:34 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] -Uplifting [lock_current] best 440246 combination zp ZP_BYTE:34 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:39 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Uplifting [keyboard_event_scan] best 425246 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:14 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Uplifting [render_playfield] best 425246 combination zp ZP_BYTE:14 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:40 [ 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 425246 combination zp ZP_BYTE:40 [ 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:38 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Uplifting [keyboard_event_scan] best 425246 combination zp ZP_BYTE:38 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:66 [ render_current::$3 ] -Uplifting [render_current] best 424846 combination reg byte a [ render_current::$3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:84 [ collision::$1 ] -Uplifting [collision] best 424446 combination reg byte a [ collision::$1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:94 [ lock_current::line#0 ] -Uplifting [lock_current] best 423846 combination reg byte a [ lock_current::line#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:95 [ lock_current::$1 ] -Uplifting [lock_current] best 423446 combination reg byte a [ lock_current::$1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:12 [ render_playfield::l#2 render_playfield::l#1 ] -Uplifting [render_playfield] best 423446 combination zp ZP_BYTE:12 [ render_playfield::l#2 render_playfield::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:33 [ lock_current::l#2 lock_current::l#1 ] -Uplifting [lock_current] best 423446 combination zp ZP_BYTE:33 [ lock_current::l#2 lock_current::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:87 [ collision::i#1 ] -Uplifting [collision] best 423446 combination zp ZP_BYTE:87 [ collision::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:9 [ render_current::l#2 render_current::l#1 ] -Uplifting [render_current] best 423446 combination zp ZP_BYTE:9 [ render_current::l#2 render_current::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:65 [ render_current::line#0 ] -Uplifting [render_current] best 422546 combination reg byte a [ render_current::line#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:106 [ keyboard_event_scan::row_scan#0 ] -Uplifting [keyboard_event_scan] best 422546 combination zp ZP_BYTE:106 [ keyboard_event_scan::row_scan#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:20 [ collision::l#2 collision::l#1 ] -Uplifting [collision] best 422546 combination zp ZP_BYTE:20 [ collision::l#2 collision::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:83 [ collision::line#0 ] -Uplifting [collision] best 422546 combination zp ZP_BYTE:83 [ collision::line#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:8 [ current_piece_color#62 current_piece_color#69 ] -Uplifting [] best 422546 combination zp ZP_BYTE:8 [ current_piece_color#62 current_piece_color#69 ] -Attempting to uplift remaining variables inzp ZP_BYTE:7 [ current_xpos#81 current_xpos#91 ] -Uplifting [] best 422546 combination zp ZP_BYTE:7 [ current_xpos#81 current_xpos#91 ] -Attempting to uplift remaining variables inzp ZP_BYTE:19 [ collision::xpos#8 collision::xpos#0 collision::xpos#1 collision::xpos#2 ] -Uplifting [collision] best 422546 combination zp ZP_BYTE:19 [ collision::xpos#8 collision::xpos#0 collision::xpos#1 collision::xpos#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:31 [ current_xpos#35 current_xpos#16 current_xpos#11 current_xpos#19 current_xpos#9 current_xpos#10 ] -Uplifting [] best 422546 combination zp ZP_BYTE:31 [ current_xpos#35 current_xpos#16 current_xpos#11 current_xpos#19 current_xpos#9 current_xpos#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:30 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] -Uplifting [] best 422546 combination zp ZP_BYTE:30 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:50 [ init::l#4 init::l#1 ] -Uplifting [init] best 422546 combination zp ZP_BYTE:50 [ init::l#4 init::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:27 [ current_piece_orientation#29 current_piece_orientation#16 current_piece_orientation#11 current_piece_orientation#18 current_piece_orientation#10 current_piece_orientation#9 ] -Uplifting [] best 422546 combination zp ZP_BYTE:27 [ current_piece_orientation#29 current_piece_orientation#16 current_piece_orientation#11 current_piece_orientation#18 current_piece_orientation#10 current_piece_orientation#9 ] -Attempting to uplift remaining variables inzp ZP_BYTE:4 [ current_ypos#35 current_ypos#75 ] -Uplifting [] best 422546 combination zp ZP_BYTE:4 [ current_ypos#35 current_ypos#75 ] -Attempting to uplift remaining variables inzp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#30 current_ypos#4 ] -Uplifting [] best 422546 combination zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#30 current_ypos#4 ] -Attempting to uplift remaining variables inzp ZP_BYTE:16 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 ] -Uplifting [collision] best 422546 combination zp ZP_BYTE:16 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:56 [ main::key_event#0 ] -Uplifting [main] best 422546 combination zp ZP_BYTE:56 [ main::key_event#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:60 [ main::render#1 ] -Uplifting [main] best 422546 combination zp ZP_BYTE:60 [ main::render#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:79 [ collision::return#12 ] -Uplifting [collision] best 422540 combination reg byte a [ collision::return#12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:80 [ play_moveother::$15 ] -Uplifting [play_moveother] best 422534 combination reg byte a [ play_moveother::$15 ] -Attempting to uplift remaining variables inzp ZP_BYTE:81 [ collision::return#11 ] -Uplifting [collision] best 422528 combination reg byte a [ collision::return#11 ] -Attempting to uplift remaining variables inzp ZP_BYTE:82 [ play_moveother::$19 ] -Uplifting [play_moveother] best 422522 combination reg byte a [ play_moveother::$19 ] -Attempting to uplift remaining variables inzp ZP_BYTE:92 [ collision::return#0 ] -Uplifting [collision] best 422516 combination reg byte a [ collision::return#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:93 [ play_movedown::$12 ] -Uplifting [play_movedown] best 422510 combination reg byte a [ play_movedown::$12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:108 [ keyboard_event_scan::$14 ] -Uplifting [keyboard_event_scan] best 422504 combination reg byte a [ keyboard_event_scan::$14 ] -Attempting to uplift remaining variables inzp ZP_BYTE:109 [ keyboard_event_pressed::return#1 ] -Uplifting [keyboard_event_pressed] best 422498 combination reg byte a [ keyboard_event_pressed::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:110 [ keyboard_event_scan::$18 ] -Uplifting [keyboard_event_scan] best 422492 combination reg byte a [ keyboard_event_scan::$18 ] -Attempting to uplift remaining variables inzp ZP_BYTE:111 [ keyboard_event_pressed::return#2 ] -Uplifting [keyboard_event_pressed] best 422486 combination reg byte a [ keyboard_event_pressed::return#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:112 [ keyboard_event_scan::$22 ] -Uplifting [keyboard_event_scan] best 422480 combination reg byte a [ keyboard_event_scan::$22 ] -Attempting to uplift remaining variables inzp ZP_BYTE:113 [ keyboard_event_pressed::return#10 ] -Uplifting [keyboard_event_pressed] best 422474 combination reg byte a [ keyboard_event_pressed::return#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:114 [ keyboard_event_scan::$26 ] -Uplifting [keyboard_event_scan] best 422468 combination reg byte a [ keyboard_event_scan::$26 ] -Attempting to uplift remaining variables inzp ZP_BYTE:15 [ play_moveother::return#1 ] -Uplifting [play_moveother] best 422432 combination reg byte a [ play_moveother::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:32 [ play_movedown::return#3 ] -Uplifting [play_movedown] best 422416 combination reg byte x [ play_movedown::return#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:61 [ play_moveother::key_event#0 ] -Uplifting [play_moveother] best 422373 combination reg byte x [ play_moveother::key_event#0 ] +Uplifting [keyboard_event_get] best 439378 combination reg byte a [ keyboard_event_get::return#3 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplifting [spawn_current] best 439378 combination +Attempting to uplift remaining variables inzp ZP_BYTE:50 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Uplifting [] best 439378 combination zp ZP_BYTE:50 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] +Uplifting [collision] best 439378 combination zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] +Uplifting [render_current] best 439378 combination zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] +Attempting to uplift remaining variables inzp ZP_BYTE:43 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] +Uplifting [lock_current] best 439378 combination zp ZP_BYTE:43 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:48 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Uplifting [keyboard_event_scan] best 424378 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] +Uplifting [render_current] best 424378 combination zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] +Uplifting [render_playfield] best 424378 combination zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] +Uplifting [collision] best 424378 combination zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:49 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] +Uplifting [keyboard_event_scan] best 424378 combination zp ZP_BYTE:49 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] +Attempting to uplift remaining variables inzp ZP_BYTE:47 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Uplifting [keyboard_event_scan] best 424378 combination zp ZP_BYTE:47 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:101 [ lock_current::line#0 ] +Uplifting [lock_current] best 423778 combination reg byte a [ lock_current::line#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:102 [ lock_current::$1 ] +Uplifting [lock_current] best 423378 combination reg byte a [ lock_current::$1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] +Uplifting [render_playfield] best 423378 combination zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:42 [ lock_current::l#2 lock_current::l#1 ] +Uplifting [lock_current] best 423378 combination zp ZP_BYTE:42 [ lock_current::l#2 lock_current::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] +Uplifting [render_current] best 423378 combination zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:91 [ collision::i#1 ] +Uplifting [collision] best 423378 combination zp ZP_BYTE:91 [ collision::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] +Uplifting [collision] best 423378 combination zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:113 [ keyboard_event_scan::row_scan#0 ] +Uplifting [keyboard_event_scan] best 423378 combination zp ZP_BYTE:113 [ keyboard_event_scan::row_scan#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] +Uplifting [collision] best 423378 combination zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] +Uplifting [render_current] best 423378 combination zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 ] +Uplifting [] best 423378 combination zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 ] +Attempting to uplift remaining variables inzp ZP_BYTE:40 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +Uplifting [] best 423378 combination zp ZP_BYTE:40 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +Attempting to uplift remaining variables inzp ZP_BYTE:39 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] +Uplifting [] best 423378 combination zp ZP_BYTE:39 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:59 [ init::l#4 init::l#1 ] +Uplifting [init] best 423378 combination zp ZP_BYTE:59 [ init::l#4 init::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] +Uplifting [collision] best 423365 combination reg byte x [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 ] +Uplifting [] best 423365 combination zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 ] +Attempting to uplift remaining variables inzp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] +Uplifting [] best 423365 combination zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] +Uplifting [collision] best 423352 combination reg byte y [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] +Uplifting [collision] best 423352 combination zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:36 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] +Uplifting [] best 423352 combination zp ZP_BYTE:36 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] +Attempting to uplift remaining variables inzp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +Uplifting [play_move_rotate] best 423352 combination zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:69 [ main::render#1 ] +Uplifting [main] best 423352 combination zp ZP_BYTE:69 [ main::render#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:73 [ main::render#2 ] +Uplifting [main] best 423352 combination zp ZP_BYTE:73 [ main::render#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:65 [ main::key_event#0 ] +Uplifting [main] best 423352 combination zp ZP_BYTE:65 [ main::key_event#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:83 [ collision::return#13 ] +Uplifting [collision] best 423346 combination reg byte a [ collision::return#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:84 [ play_move_rotate::$6 ] +Uplifting [play_move_rotate] best 423340 combination reg byte a [ play_move_rotate::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:85 [ play_move_rotate::$8 ] +Uplifting [play_move_rotate] best 423336 combination reg byte a [ play_move_rotate::$8 ] +Attempting to uplift remaining variables inzp ZP_BYTE:86 [ play_move_rotate::$4 ] +Uplifting [play_move_rotate] best 423330 combination reg byte a [ play_move_rotate::$4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:93 [ collision::return#12 ] +Uplifting [collision] best 423324 combination reg byte a [ collision::return#12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:95 [ collision::return#1 ] +Uplifting [collision] best 423318 combination reg byte a [ collision::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:99 [ collision::return#0 ] +Uplifting [collision] best 423312 combination reg byte a [ collision::return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:100 [ play_move_down::$12 ] +Uplifting [play_move_down] best 423306 combination reg byte a [ play_move_down::$12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:115 [ keyboard_event_scan::$14 ] +Uplifting [keyboard_event_scan] best 423300 combination reg byte a [ keyboard_event_scan::$14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:116 [ keyboard_event_pressed::return#1 ] +Uplifting [keyboard_event_pressed] best 423294 combination reg byte a [ keyboard_event_pressed::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:117 [ keyboard_event_scan::$18 ] +Uplifting [keyboard_event_scan] best 423288 combination reg byte a [ keyboard_event_scan::$18 ] +Attempting to uplift remaining variables inzp ZP_BYTE:118 [ keyboard_event_pressed::return#2 ] +Uplifting [keyboard_event_pressed] best 423282 combination reg byte a [ keyboard_event_pressed::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:119 [ keyboard_event_scan::$22 ] +Uplifting [keyboard_event_scan] best 423276 combination reg byte a [ keyboard_event_scan::$22 ] +Attempting to uplift remaining variables inzp ZP_BYTE:120 [ keyboard_event_pressed::return#10 ] +Uplifting [keyboard_event_pressed] best 423270 combination reg byte a [ keyboard_event_pressed::return#10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:121 [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 423264 combination reg byte a [ keyboard_event_scan::$26 ] +Attempting to uplift remaining variables inzp ZP_BYTE:19 [ play_move_rotate::return#2 ] +Uplifting [play_move_rotate] best 423228 combination reg byte a [ play_move_rotate::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:32 [ play_move_leftright::return#2 ] +Uplifting [play_move_leftright] best 423192 combination reg byte a [ play_move_leftright::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:41 [ play_move_down::return#3 ] +Uplifting [play_move_down] best 423176 combination reg byte x [ play_move_down::return#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] -Uplifting [] best 422373 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:101 [ keyboard_event_pressed::row_bits#0 ] -Uplifting [keyboard_event_pressed] best 422373 combination zp ZP_BYTE:101 [ keyboard_event_pressed::row_bits#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:103 [ keyboard_event_pressed::return#11 ] -Uplifting [keyboard_event_pressed] best 422355 combination reg byte a [ keyboard_event_pressed::return#11 ] -Attempting to uplift remaining variables inzp ZP_BYTE:36 [ keyboard_event_pressed::keycode#5 ] -Uplifting [keyboard_event_pressed] best 422355 combination zp ZP_BYTE:36 [ keyboard_event_pressed::keycode#5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:23 [ collision::return#10 ] -Uplifting [collision] best 422331 combination reg byte a [ collision::return#10 ] -Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#30 current_ypos#4 ] ] with [ zp ZP_BYTE:50 [ init::l#4 init::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] ] with [ zp ZP_BYTE:33 [ lock_current::l#2 lock_current::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:4 [ current_ypos#35 current_ypos#75 ] ] with [ zp ZP_BYTE:12 [ render_playfield::l#2 render_playfield::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:4 [ current_ypos#35 current_ypos#75 render_playfield::l#2 render_playfield::l#1 ] ] with [ zp ZP_BYTE:16 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:4 [ current_ypos#35 current_ypos#75 render_playfield::l#2 render_playfield::l#1 collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 ] ] with [ zp ZP_BYTE:34 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:4 [ current_ypos#35 current_ypos#75 render_playfield::l#2 render_playfield::l#1 collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 lock_current::i#2 lock_current::i#3 lock_current::i#1 ] ] with [ zp ZP_BYTE:36 [ keyboard_event_pressed::keycode#5 ] ] -Coalescing zero page register [ zp ZP_BYTE:4 [ current_ypos#35 current_ypos#75 render_playfield::l#2 render_playfield::l#1 collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 lock_current::i#2 lock_current::i#3 lock_current::i#1 keyboard_event_pressed::keycode#5 ] ] with [ zp ZP_BYTE:38 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ current_piece_gfx#75 current_piece_gfx#99 ] ] with [ zp ZP_WORD:17 [ current_piece_gfx#46 current_piece_gfx#108 current_piece_gfx#109 current_piece_gfx#110 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ current_piece_gfx#75 current_piece_gfx#99 current_piece_gfx#46 current_piece_gfx#108 current_piece_gfx#109 current_piece_gfx#110 ] ] with [ zp ZP_WORD:43 [ init::li#2 init::li#1 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ current_piece_gfx#75 current_piece_gfx#99 current_piece_gfx#46 current_piece_gfx#108 current_piece_gfx#109 current_piece_gfx#110 init::li#2 init::li#1 ] ] with [ zp ZP_WORD:46 [ init::pli#2 init::pli#1 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ current_piece_gfx#75 current_piece_gfx#99 current_piece_gfx#46 current_piece_gfx#108 current_piece_gfx#109 current_piece_gfx#110 init::li#2 init::li#1 init::pli#2 init::pli#1 ] ] with [ zp ZP_WORD:48 [ init::line#4 init::line#1 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ current_piece_gfx#75 current_piece_gfx#99 current_piece_gfx#46 current_piece_gfx#108 current_piece_gfx#109 current_piece_gfx#110 init::li#2 init::li#1 init::pli#2 init::pli#1 init::line#4 init::line#1 ] ] with [ zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ current_piece_gfx#75 current_piece_gfx#99 current_piece_gfx#46 current_piece_gfx#108 current_piece_gfx#109 current_piece_gfx#110 init::li#2 init::li#1 init::pli#2 init::pli#1 init::line#4 init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 ] ] with [ zp ZP_WORD:72 [ render_playfield::line#0 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ current_piece_gfx#75 current_piece_gfx#99 current_piece_gfx#46 current_piece_gfx#108 current_piece_gfx#109 current_piece_gfx#110 init::li#2 init::li#1 init::pli#2 init::pli#1 init::line#4 init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 render_playfield::line#0 ] ] with [ zp ZP_WORD:96 [ lock_current::playfield_line#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:7 [ current_xpos#81 current_xpos#91 ] ] with [ zp ZP_BYTE:14 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:7 [ current_xpos#81 current_xpos#91 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] with [ zp ZP_BYTE:19 [ collision::xpos#8 collision::xpos#0 collision::xpos#1 collision::xpos#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:7 [ current_xpos#81 current_xpos#91 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#8 collision::xpos#0 collision::xpos#1 collision::xpos#2 ] ] with [ zp ZP_BYTE:40 [ 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:7 [ current_xpos#81 current_xpos#91 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#8 collision::xpos#0 collision::xpos#1 collision::xpos#2 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:101 [ keyboard_event_pressed::row_bits#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#62 current_piece_color#69 ] ] with [ zp ZP_BYTE:20 [ collision::l#2 collision::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#62 current_piece_color#69 collision::l#2 collision::l#1 ] ] with [ zp ZP_BYTE:106 [ keyboard_event_scan::row_scan#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::l#2 render_current::l#1 ] ] with [ zp ZP_BYTE:21 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] ] with [ zp ZP_BYTE:56 [ main::key_event#0 ] ] -Coalescing zero page register [ zp ZP_WORD:25 [ current_piece#23 current_piece#11 current_piece#13 ] ] with [ zp ZP_WORD:122 [ init::$13 ] ] -Coalescing zero page register [ zp ZP_WORD:25 [ current_piece#23 current_piece#11 current_piece#13 init::$13 ] ] with [ zp ZP_WORD:124 [ fill::end#0 ] ] -Coalescing zero page register [ zp ZP_WORD:67 [ render_current::screen_line#0 ] ] with [ zp ZP_WORD:74 [ render_playfield::$3 ] ] -Coalescing zero page register [ zp ZP_WORD:67 [ render_current::screen_line#0 render_playfield::$3 ] ] with [ zp ZP_WORD:85 [ collision::playfield_line#0 ] ] -Allocated (was zp ZP_WORD:25) zp ZP_WORD:11 [ current_piece#23 current_piece#11 current_piece#13 init::$13 fill::end#0 ] -Allocated (was zp ZP_BYTE:27) zp ZP_BYTE:13 [ current_piece_orientation#29 current_piece_orientation#16 current_piece_orientation#11 current_piece_orientation#18 current_piece_orientation#10 current_piece_orientation#9 ] -Allocated (was zp ZP_WORD:28) zp ZP_WORD:14 [ current_piece_gfx#30 current_piece_gfx#16 current_piece_gfx#11 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#9 ] -Allocated (was zp ZP_BYTE:30) zp ZP_BYTE:16 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] -Allocated (was zp ZP_BYTE:31) zp ZP_BYTE:17 [ current_xpos#35 current_xpos#16 current_xpos#11 current_xpos#19 current_xpos#9 current_xpos#10 ] -Allocated (was zp ZP_BYTE:41) zp ZP_BYTE:18 [ 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:60) zp ZP_BYTE:19 [ main::render#1 ] -Allocated (was zp ZP_WORD:67) zp ZP_WORD:20 [ render_current::screen_line#0 render_playfield::$3 collision::playfield_line#0 ] -Allocated (was zp ZP_BYTE:83) zp ZP_BYTE:22 [ collision::line#0 ] -Allocated (was zp ZP_BYTE:87) zp ZP_BYTE:23 [ collision::i#1 ] +Uplifting [] best 423176 combination zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:108 [ keyboard_event_pressed::row_bits#0 ] +Uplifting [keyboard_event_pressed] best 423176 combination zp ZP_BYTE:108 [ keyboard_event_pressed::row_bits#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:110 [ keyboard_event_pressed::return#11 ] +Uplifting [keyboard_event_pressed] best 423158 combination reg byte a [ keyboard_event_pressed::return#11 ] +Attempting to uplift remaining variables inzp ZP_BYTE:31 [ collision::return#14 ] +Uplifting [collision] best 423131 combination reg byte a [ collision::return#14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:45 [ keyboard_event_pressed::keycode#5 ] +Uplifting [keyboard_event_pressed] best 423131 combination zp ZP_BYTE:45 [ keyboard_event_pressed::keycode#5 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 ] ] with [ zp ZP_WORD:87 [ collision::piece_gfx#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:69 [ main::render#1 ] ] with [ zp ZP_BYTE:73 [ main::render#2 ] ] - score: 1 +Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] ] with [ zp ZP_BYTE:59 [ init::l#4 init::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] ] with [ zp ZP_BYTE:42 [ lock_current::l#2 lock_current::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 ] ] with [ zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 render_playfield::l#2 render_playfield::l#1 ] ] with [ zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] ] with [ zp ZP_BYTE:43 [ lock_current::i#2 lock_current::i#3 lock_current::i#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 lock_current::i#2 lock_current::i#3 lock_current::i#1 ] ] with [ zp ZP_BYTE:45 [ keyboard_event_pressed::keycode#5 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#62 current_xpos#92 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 lock_current::i#2 lock_current::i#3 lock_current::i#1 keyboard_event_pressed::keycode#5 ] ] with [ zp ZP_BYTE:47 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#61 current_piece_gfx#82 ] ] with [ zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#61 current_piece_gfx#82 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] ] with [ zp ZP_WORD:21 [ current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 collision::piece_gfx#0 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#61 current_piece_gfx#82 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 collision::piece_gfx#0 ] ] with [ zp ZP_WORD:52 [ init::li#2 init::li#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#61 current_piece_gfx#82 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 collision::piece_gfx#0 init::li#2 init::li#1 ] ] with [ zp ZP_WORD:55 [ init::pli#2 init::pli#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#61 current_piece_gfx#82 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 collision::piece_gfx#0 init::li#2 init::li#1 init::pli#2 init::pli#1 ] ] with [ zp ZP_WORD:57 [ init::line#4 init::line#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#61 current_piece_gfx#82 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 collision::piece_gfx#0 init::li#2 init::li#1 init::pli#2 init::pli#1 init::line#4 init::line#1 ] ] with [ zp ZP_WORD:62 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#61 current_piece_gfx#82 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 collision::piece_gfx#0 init::li#2 init::li#1 init::pli#2 init::pli#1 init::line#4 init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 ] ] with [ zp ZP_WORD:103 [ lock_current::playfield_line#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 ] ] with [ zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] with [ zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] ] with [ zp ZP_BYTE:49 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#63 current_piece_color#70 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] with [ zp ZP_BYTE:108 [ keyboard_event_pressed::row_bits#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] ] with [ zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] ] with [ zp ZP_BYTE:113 [ keyboard_event_scan::row_scan#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] ] with [ zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] ] with [ zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] ] +Coalescing zero page register [ zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] ] with [ zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] ] +Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#23 current_piece#11 current_piece#13 ] ] with [ zp ZP_WORD:129 [ init::$13 ] ] +Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#23 current_piece#11 current_piece#13 init::$13 ] ] with [ zp ZP_WORD:131 [ fill::end#0 ] ] +Coalescing zero page register [ zp ZP_WORD:78 [ render_current::screen_line#0 ] ] with [ zp ZP_WORD:89 [ collision::playfield_line#0 ] ] +Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ current_xpos#62 current_xpos#92 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 lock_current::i#2 lock_current::i#3 lock_current::i#1 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Allocated (was zp ZP_WORD:6) zp ZP_WORD:5 [ current_piece_gfx#61 current_piece_gfx#82 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 collision::piece_gfx#0 init::li#2 init::li#1 init::pli#2 init::pli#1 init::line#4 init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 lock_current::playfield_line#0 ] +Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:7 [ current_piece_color#63 current_piece_color#70 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 keyboard_event_pressed::row_bits#0 ] +Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:8 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 keyboard_event_scan::row_scan#0 ] +Allocated (was zp ZP_BYTE:10) zp ZP_BYTE:9 [ render_current::l#3 render_current::l#1 collision::l#6 collision::l#1 ] +Allocated (was zp ZP_BYTE:11) zp ZP_BYTE:10 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] +Allocated (was zp ZP_BYTE:12) zp ZP_BYTE:11 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 collision::col#2 collision::col#9 collision::col#1 ] +Allocated (was zp ZP_WORD:34) zp ZP_WORD:12 [ current_piece#23 current_piece#11 current_piece#13 init::$13 fill::end#0 ] +Allocated (was zp ZP_BYTE:36) zp ZP_BYTE:14 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] +Allocated (was zp ZP_WORD:37) zp ZP_WORD:15 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#8 current_piece_gfx#17 ] +Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:17 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] +Allocated (was zp ZP_BYTE:40) zp ZP_BYTE:18 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +Allocated (was zp ZP_BYTE:50) zp ZP_BYTE:19 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Allocated (was zp ZP_BYTE:65) zp ZP_BYTE:20 [ main::key_event#0 ] +Allocated (was zp ZP_BYTE:69) zp ZP_BYTE:21 [ main::render#1 main::render#2 ] +Allocated (was zp ZP_WORD:78) zp ZP_WORD:22 [ render_current::screen_line#0 collision::playfield_line#0 ] +Allocated (was zp ZP_BYTE:91) zp ZP_BYTE:24 [ collision::i#1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -7683,48 +7984,47 @@ ASSEMBLER BEFORE OPTIMIZATION .const COLLISION_BOTTOM = 2 .const COLLISION_LEFT = 4 .const COLLISION_RIGHT = 8 - .label keyboard_events_size = $12 + .label keyboard_events_size = $13 .label current_ypos = 2 - .label current_piece_orientation = $d - .label current_piece_gfx = $e - .label current_xpos = $11 - .label current_piece = $b - .label current_piece_color = $10 + .label current_xpos = $12 + .label current_piece_orientation = $e + .label current_piece_gfx = $f + .label current_piece = $c + .label current_piece_color = $11 .label current_movedown_counter = 3 - .label current_ypos_35 = 4 - .label current_piece_gfx_46 = 5 - .label current_piece_gfx_75 = 5 - .label current_xpos_81 = 7 - .label current_piece_color_62 = 8 - .label current_ypos_75 = 4 - .label current_piece_gfx_99 = 5 - .label current_xpos_91 = 7 - .label current_piece_color_69 = 8 - .label current_piece_gfx_108 = 5 - .label current_piece_gfx_109 = 5 - .label current_piece_gfx_110 = 5 + .label current_piece_15 = 5 + .label current_xpos_62 = 4 + .label current_piece_gfx_61 = 5 + .label current_piece_color_63 = 7 + .label current_xpos_92 = 4 + .label current_piece_gfx_82 = 5 + .label current_piece_color_70 = 7 + .label current_piece_67 = 5 + .label current_piece_68 = 5 + .label current_piece_69 = 5 + .label current_piece_70 = 5 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @20 [phi:@begin->@20] -b20_from_bbegin: - jmp b20 -//SEG4 @20 -b20: +//SEG3 [1] phi from @begin to @21 [phi:@begin->@21] +b21_from_bbegin: + jmp b21 +//SEG4 @21 +b21: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @20 to @end [phi:@20->@end] -bend_from_b20: +//SEG6 [3] phi from @21 to @end [phi:@21->@end] +bend_from_b21: jmp bend //SEG7 @end bend: //SEG8 main main: { - .label key_event = $a - .label render = $13 + .label key_event = $14 + .label render = $15 //SEG9 asm { sei } sei //SEG10 [5] call init - //SEG11 [240] phi from main to init [phi:main->init] + //SEG11 [261] phi from main to init [phi:main->init] init_from_main: jsr init //SEG12 [6] phi from main to main::@21 [phi:main->main::@21] @@ -7733,7 +8033,7 @@ main: { //SEG13 main::@21 b21: //SEG14 [7] call spawn_current - //SEG15 [155] phi from main::@21 to spawn_current [phi:main::@21->spawn_current] + //SEG15 [176] phi from main::@21 to spawn_current [phi:main::@21->spawn_current] spawn_current_from_b21: jsr spawn_current //SEG16 [8] phi from main::@21 to main::@22 [phi:main::@21->main::@22] @@ -7742,7 +8042,7 @@ main: { //SEG17 main::@22 b22: //SEG18 [9] call render_playfield - //SEG19 [60] phi from main::@22 to render_playfield [phi:main::@22->render_playfield] + //SEG19 [66] phi from main::@22 to render_playfield [phi:main::@22->render_playfield] render_playfield_from_b22: jsr render_playfield //SEG20 [10] phi from main::@22 to main::@23 [phi:main::@22->main::@23] @@ -7751,22 +8051,21 @@ main: { //SEG21 main::@23 b23: //SEG22 [11] call render_current - //SEG23 [41] phi from main::@23 to render_current [phi:main::@23->render_current] + //SEG23 [46] phi from main::@23 to render_current [phi:main::@23->render_current] render_current_from_b23: - //SEG24 [41] phi (byte) current_piece_color#62 = (const byte) GREEN#0 [phi:main::@23->render_current#0] -- vbuz1=vbuc1 + //SEG24 [46] phi (byte) current_piece_color#63 = (const byte) GREEN#0 [phi:main::@23->render_current#0] -- vbuz1=vbuc1 lda #GREEN - sta current_piece_color_62 - //SEG25 [41] phi (byte) current_xpos#81 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@23->render_current#1] -- vbuz1=vbuc1 - lda #3 - sta current_xpos_81 - //SEG26 [41] phi (byte*) current_piece_gfx#75 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->render_current#2] -- pbuz1=pbuc1 + sta current_piece_color_63 + //SEG25 [46] phi (byte*) current_piece_gfx#61 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->render_current#1] -- pbuz1=pbuc1 lda #piece_t - sta current_piece_gfx_75+1 - //SEG27 [41] phi (byte) current_ypos#35 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->render_current#3] -- vbuz1=vbuc1 - lda #0 - sta current_ypos_35 + sta current_piece_gfx_61+1 + //SEG26 [46] phi (byte) current_xpos#62 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@23->render_current#2] -- vbuz1=vbuc1 + lda #3 + sta current_xpos_62 + //SEG27 [46] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->render_current#3] -- vbuxx=vbuc1 + ldx #0 jsr render_current //SEG28 [12] phi from main::@23 to main::@1 [phi:main::@23->main::@1] b1_from_b23: @@ -7785,12 +8084,12 @@ main: { //SEG33 [12] phi (byte) current_piece_color#11 = (const byte) GREEN#0 [phi:main::@23->main::@1#4] -- vbuz1=vbuc1 lda #GREEN sta current_piece_color - //SEG34 [12] phi (byte*) current_piece_gfx#16 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->main::@1#5] -- pbuz1=pbuc1 + //SEG34 [12] phi (byte*) current_piece_gfx#15 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->main::@1#5] -- pbuz1=pbuc1 lda #piece_t sta current_piece_gfx+1 - //SEG35 [12] phi (byte) current_piece_orientation#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#6] -- vbuz1=vbuc1 + //SEG35 [12] phi (byte) current_piece_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#6] -- vbuz1=vbuc1 lda #0 sta current_piece_orientation //SEG36 [12] phi (byte*) current_piece#11 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->main::@1#7] -- pbuz1=pbuc1 @@ -7821,7 +8120,7 @@ main: { //SEG43 [15] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL //SEG44 [16] call keyboard_event_scan - //SEG45 [184] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] + //SEG45 [205] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] keyboard_event_scan_from_b9: jsr keyboard_event_scan //SEG46 [17] phi from main::@9 to main::@25 [phi:main::@9->main::@25] @@ -7838,320 +8137,380 @@ main: { b26: //SEG51 [20] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa sta key_event - //SEG52 [21] (byte) play_movedown::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG52 [21] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG53 [22] call play_movedown - jsr play_movedown - //SEG54 [23] (byte) play_movedown::return#0 ← (byte) play_movedown::return#3 -- vbuaa=vbuxx + //SEG53 [22] call play_move_down + jsr play_move_down + //SEG54 [23] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx txa jmp b27 //SEG55 main::@27 b27: - //SEG56 [24] (byte~) main::$8 ← (byte) play_movedown::return#0 - // (byte~) main::$8 = (byte) play_movedown::return#0 // register copy reg byte a + //SEG56 [24] (byte~) main::$8 ← (byte) play_move_down::return#0 + // (byte~) main::$8 = (byte) play_move_down::return#0 // register copy reg byte a //SEG57 [25] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$8 -- vbuz1=vbuc1_plus_vbuaa clc adc #0 sta render - //SEG58 [26] (byte) play_moveother::key_event#0 ← (byte) main::key_event#0 -- vbuxx=vbuz1 - ldx key_event - //SEG59 [27] call play_moveother - jsr play_moveother - //SEG60 [28] (byte) play_moveother::return#0 ← (byte) play_moveother::return#1 - // (byte) play_moveother::return#0 = (byte) play_moveother::return#1 // register copy reg byte a + //SEG58 [26] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + lda key_event + //SEG59 [27] call play_move_leftright + jsr play_move_leftright + //SEG60 [28] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + // (byte) play_move_leftright::return#0 = (byte) play_move_leftright::return#2 // register copy reg byte a jmp b28 //SEG61 main::@28 b28: - //SEG62 [29] (byte~) main::$9 ← (byte) play_moveother::return#0 - // (byte~) main::$9 = (byte) play_moveother::return#0 // register copy reg byte a - //SEG63 [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 -- vbuaa=vbuz1_plus_vbuaa + //SEG62 [29] (byte~) main::$9 ← (byte) play_move_leftright::return#0 + // (byte~) main::$9 = (byte) play_move_leftright::return#0 // register copy reg byte a + //SEG63 [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 -- vbuz1=vbuz1_plus_vbuaa clc adc render - //SEG64 [31] if((byte) main::render#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuaa_eq_0_then_la1 + sta render + //SEG64 [31] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + lda key_event + //SEG65 [32] call play_move_rotate + jsr play_move_rotate + //SEG66 [33] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + // (byte) play_move_rotate::return#0 = (byte) play_move_rotate::return#2 // register copy reg byte a + jmp b29 + //SEG67 main::@29 + b29: + //SEG68 [34] (byte~) main::$10 ← (byte) play_move_rotate::return#0 + // (byte~) main::$10 = (byte) play_move_rotate::return#0 // register copy reg byte a + //SEG69 [35] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$10 -- vbuaa=vbuz1_plus_vbuaa + clc + adc render + //SEG70 [36] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 jmp b19 - //SEG65 main::@19 + //SEG71 main::@19 b19: - //SEG66 [32] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG72 [37] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG67 [33] call render_playfield - //SEG68 [60] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] + //SEG73 [38] call render_playfield + //SEG74 [66] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] render_playfield_from_b19: jsr render_playfield - jmp b29 - //SEG69 main::@29 - b29: - //SEG70 [34] (byte~) current_ypos#75 ← (byte) current_ypos#16 -- vbuz1=vbuz2 - lda current_ypos - sta current_ypos_75 - //SEG71 [35] (byte*~) current_piece_gfx#99 ← (byte*) current_piece_gfx#11 -- pbuz1=pbuz2 - lda current_piece_gfx - sta current_piece_gfx_99 - lda current_piece_gfx+1 - sta current_piece_gfx_99+1 - //SEG72 [36] (byte~) current_xpos#91 ← (byte) current_xpos#11 -- vbuz1=vbuz2 - lda current_xpos - sta current_xpos_91 - //SEG73 [37] (byte~) current_piece_color#69 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 - lda current_piece_color - sta current_piece_color_69 - //SEG74 [38] call render_current - //SEG75 [41] phi from main::@29 to render_current [phi:main::@29->render_current] - render_current_from_b29: - //SEG76 [41] phi (byte) current_piece_color#62 = (byte~) current_piece_color#69 [phi:main::@29->render_current#0] -- register_copy - //SEG77 [41] phi (byte) current_xpos#81 = (byte~) current_xpos#91 [phi:main::@29->render_current#1] -- register_copy - //SEG78 [41] phi (byte*) current_piece_gfx#75 = (byte*~) current_piece_gfx#99 [phi:main::@29->render_current#2] -- register_copy - //SEG79 [41] phi (byte) current_ypos#35 = (byte~) current_ypos#75 [phi:main::@29->render_current#3] -- register_copy - jsr render_current jmp b30 - //SEG80 main::@30 + //SEG75 main::@30 b30: - //SEG81 [39] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG76 [39] (byte~) current_ypos#72 ← (byte) current_ypos#16 -- vbuxx=vbuz1 + ldx current_ypos + //SEG77 [40] (byte~) current_xpos#92 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + lda current_xpos + sta current_xpos_92 + //SEG78 [41] (byte*~) current_piece_gfx#82 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + lda current_piece_gfx + sta current_piece_gfx_82 + lda current_piece_gfx+1 + sta current_piece_gfx_82+1 + //SEG79 [42] (byte~) current_piece_color#70 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 + lda current_piece_color + sta current_piece_color_70 + //SEG80 [43] call render_current + //SEG81 [46] phi from main::@30 to render_current [phi:main::@30->render_current] + render_current_from_b30: + //SEG82 [46] phi (byte) current_piece_color#63 = (byte~) current_piece_color#70 [phi:main::@30->render_current#0] -- register_copy + //SEG83 [46] phi (byte*) current_piece_gfx#61 = (byte*~) current_piece_gfx#82 [phi:main::@30->render_current#1] -- register_copy + //SEG84 [46] phi (byte) current_xpos#62 = (byte~) current_xpos#92 [phi:main::@30->render_current#2] -- register_copy + //SEG85 [46] phi (byte) current_ypos#22 = (byte~) current_ypos#72 [phi:main::@30->render_current#3] -- register_copy + jsr render_current + jmp b31 + //SEG86 main::@31 + b31: + //SEG87 [44] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL jmp b10 - //SEG82 main::@10 + //SEG88 main::@10 b10: - //SEG83 [40] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG89 [45] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG84 [12] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + //SEG90 [12] phi from main::@10 to main::@1 [phi:main::@10->main::@1] b1_from_b10: - //SEG85 [12] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy - //SEG86 [12] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy - //SEG87 [12] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#2] -- register_copy - //SEG88 [12] phi (byte) current_xpos#16 = (byte) current_xpos#11 [phi:main::@10->main::@1#3] -- register_copy - //SEG89 [12] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#4] -- register_copy - //SEG90 [12] phi (byte*) current_piece_gfx#16 = (byte*) current_piece_gfx#11 [phi:main::@10->main::@1#5] -- register_copy - //SEG91 [12] phi (byte) current_piece_orientation#16 = (byte) current_piece_orientation#11 [phi:main::@10->main::@1#6] -- register_copy - //SEG92 [12] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy + //SEG91 [12] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy + //SEG92 [12] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy + //SEG93 [12] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#2] -- register_copy + //SEG94 [12] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#3] -- register_copy + //SEG95 [12] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#4] -- register_copy + //SEG96 [12] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy + //SEG97 [12] phi (byte) current_piece_orientation#15 = (byte) current_piece_orientation#23 [phi:main::@10->main::@1#6] -- register_copy + //SEG98 [12] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy jmp b1 } -//SEG93 render_current +//SEG99 render_current render_current: { + .label ypos2 = 8 .label l = 9 - .label screen_line = $14 + .label screen_line = $16 + .label xpos = $b .label i = $a - //SEG94 [42] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] + //SEG100 [47] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + txa + asl + sta ypos2 + //SEG101 [48] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] b1_from_render_current: - //SEG95 [42] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 + //SEG102 [48] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG96 [42] phi (byte) render_current::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 + //SEG103 [48] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 lda #0 sta l + //SEG104 [48] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy jmp b1 - //SEG97 [42] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] + //SEG105 [48] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] b1_from_b2: - //SEG98 [42] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy - //SEG99 [42] phi (byte) render_current::l#2 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy + //SEG106 [48] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy + //SEG107 [48] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy + //SEG108 [48] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy jmp b1 - //SEG100 render_current::@1 + //SEG109 render_current::@1 b1: - //SEG101 [43] (byte) render_current::line#0 ← (byte) current_ypos#35 + (byte) render_current::l#2 -- vbuaa=vbuz1_plus_vbuz2 - lda current_ypos_35 - clc - adc l - //SEG102 [44] if((byte) render_current::line#0>=(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuaa_ge_vbuc1_then_la1 - cmp #PLAYFIELD_LINES + //SEG110 [49] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 + lda ypos2 + cmp #2*PLAYFIELD_LINES bcs b2_from_b1 jmp b6 - //SEG103 render_current::@6 + //SEG111 render_current::@6 b6: - //SEG104 [45] (byte~) render_current::$3 ← (byte) render_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_rol_1 - asl - //SEG105 [46] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_current::$3) -- pbuz1=pptc1_derefidx_vbuaa - tay + //SEG112 [50] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + ldy ypos2 lda screen_lines,y sta screen_line lda screen_lines+1,y sta screen_line+1 - //SEG106 [47] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] + //SEG113 [51] (byte) render_current::xpos#0 ← (byte) current_xpos#62 -- vbuz1=vbuz2 + lda current_xpos_62 + sta xpos + //SEG114 [52] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] b3_from_b6: - //SEG107 [47] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuxx=vbuc1 + //SEG115 [52] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG108 [47] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#1] -- register_copy + //SEG116 [52] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy + //SEG117 [52] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy jmp b3 - //SEG109 [47] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] + //SEG118 [52] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] b3_from_b4: - //SEG110 [47] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy - //SEG111 [47] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#1] -- register_copy + //SEG119 [52] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy + //SEG120 [52] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy + //SEG121 [52] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy jmp b3 - //SEG112 render_current::@3 + //SEG122 render_current::@3 b3: - //SEG113 [48] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#75 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG123 [53] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#61 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i - lda (current_piece_gfx_75),y - //SEG114 [49] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 + lda (current_piece_gfx_61),y + //SEG124 [54] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG115 [50] 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 + //SEG125 [55] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 jmp b7 - //SEG116 render_current::@7 + //SEG126 render_current::@7 b7: - //SEG117 [51] (byte) render_current::xpos#0 ← (byte) current_xpos#81 + (byte) render_current::c#2 -- vbuaa=vbuz1_plus_vbuxx - txa - clc - adc current_xpos_81 - //SEG118 [52] if((byte) render_current::xpos#0>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuaa_ge_vbuc1_then_la1 + //SEG127 [56] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 + lda xpos cmp #PLAYFIELD_COLS bcs b4 jmp b8 - //SEG119 render_current::@8 + //SEG128 render_current::@8 b8: - //SEG120 [53] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#0) ← (byte) current_piece_color#62 -- pbuz1_derefidx_vbuaa=vbuz2 - tay - lda current_piece_color_62 + //SEG129 [57] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#63 -- pbuz1_derefidx_vbuz2=vbuz3 + lda current_piece_color_63 + ldy xpos sta (screen_line),y jmp b4 - //SEG121 render_current::@4 + //SEG130 render_current::@4 b4: - //SEG122 [54] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx + //SEG131 [58] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 + inc xpos + //SEG132 [59] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG123 [55] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG133 [60] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b3_from_b4 - //SEG124 [56] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] + //SEG134 [61] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] b2_from_b1: b2_from_b4: - //SEG125 [56] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy + //SEG135 [61] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy jmp b2 - //SEG126 render_current::@2 + //SEG136 render_current::@2 b2: - //SEG127 [57] (byte) render_current::l#1 ← ++ (byte) render_current::l#2 -- vbuz1=_inc_vbuz1 + //SEG137 [62] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + lda ypos2 + clc + adc #2 + sta ypos2 + //SEG138 [63] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 inc l - //SEG128 [58] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG139 [64] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1_from_b2 jmp breturn - //SEG129 render_current::@return + //SEG140 render_current::@return breturn: - //SEG130 [59] return + //SEG141 [65] return rts } -//SEG131 render_playfield +//SEG142 render_playfield render_playfield: { - .label _3 = $14 .label line = 5 .label i = 7 .label l = 4 - //SEG132 [61] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG143 [67] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG133 [61] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG144 [67] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG134 [61] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG145 [67] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #0 sta l jmp b1 - //SEG135 [61] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG146 [67] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG136 [61] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG137 [61] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG147 [67] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG148 [67] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG138 render_playfield::@1 + //SEG149 render_playfield::@1 b1: - //SEG139 [62] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + //SEG150 [68] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 lda l asl - //SEG140 [63] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuaa + //SEG151 [69] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines,y sta line lda screen_lines+1,y sta line+1 - //SEG141 [64] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG152 [70] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG142 [64] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#0] -- register_copy - //SEG143 [64] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#1] -- vbuxx=vbuc1 + //SEG153 [70] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuxx=vbuc1 ldx #0 + //SEG154 [70] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG155 [70] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG144 [64] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG156 [70] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG145 [64] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG146 [64] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG157 [70] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG158 [70] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG159 [70] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG147 render_playfield::@2 + //SEG160 render_playfield::@2 b2: - //SEG148 [65] (byte*~) render_playfield::$3 ← (byte*) render_playfield::line#0 + (byte) render_playfield::c#2 -- pbuz1=pbuz2_plus_vbuxx - txa - clc - adc line - sta _3 - lda #0 - adc line+1 - sta _3+1 - //SEG149 [66] *((byte*~) render_playfield::$3) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG161 [71] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 - sta (_3),y - //SEG150 [67] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + sta (line),y + //SEG162 [72] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 + inc line + bne !+ + inc line+1 + !: + //SEG163 [73] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG151 [68] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuxx=_inc_vbuxx + //SEG164 [74] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuxx=_inc_vbuxx inx - //SEG152 [69] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG165 [75] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS-1+1 bne b2_from_b2 jmp b3 - //SEG153 render_playfield::@3 + //SEG166 render_playfield::@3 b3: - //SEG154 [70] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG167 [76] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG155 [71] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG168 [77] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1_from_b3 jmp breturn - //SEG156 render_playfield::@return + //SEG169 render_playfield::@return breturn: - //SEG157 [72] return + //SEG170 [78] return rts } -//SEG158 play_moveother -play_moveother: { - //SEG159 [73] (byte~) play_moveother::$0 ← (byte) play_moveother::key_event#0 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuxx_band_vbuc1 - txa - and #$80 - //SEG160 [74] if((byte~) play_moveother::$0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_moveother::@1 -- vbuaa_neq_0_then_la1 - cmp #0 - bne b1_from_play_moveother - jmp b11 - //SEG161 play_moveother::@11 - b11: - //SEG162 [75] if((byte) play_moveother::key_event#0==(const byte) KEY_COMMA#0) goto play_moveother::@2 -- vbuxx_eq_vbuc1_then_la1 - cpx #KEY_COMMA +//SEG171 play_move_rotate +play_move_rotate: { + .label orientation = 4 + //SEG172 [79] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + cmp #KEY_Z + beq b1 + jmp b6 + //SEG173 play_move_rotate::@6 + b6: + //SEG174 [80] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + cmp #KEY_X beq b2 - jmp b12 - //SEG163 play_moveother::@12 - b12: - //SEG164 [76] if((byte) play_moveother::key_event#0==(const byte) KEY_DOT#0) goto play_moveother::@3 -- vbuxx_eq_vbuc1_then_la1 - cpx #KEY_DOT - beq b3 - jmp b13 - //SEG165 play_moveother::@13 - b13: - //SEG166 [77] if((byte) play_moveother::key_event#0==(const byte) KEY_Z#0) goto play_moveother::@4 -- vbuxx_eq_vbuc1_then_la1 - cpx #KEY_Z - beq b4 - jmp b14 - //SEG167 play_moveother::@14 - b14: - //SEG168 [78] if((byte) play_moveother::key_event#0!=(const byte) KEY_X#0) goto play_moveother::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #KEY_X - bne b1_from_b14 - jmp b15 - //SEG169 play_moveother::@15 - b15: - //SEG170 [79] (byte/signed word/word/dword/signed dword~) play_moveother::$8 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 + //SEG175 [81] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] + breturn_from_b14: + breturn_from_b6: + //SEG176 [81] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#17 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG177 [81] phi (byte) current_piece_orientation#23 = (byte) current_piece_orientation#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG178 [81] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 + lda #0 + jmp breturn + //SEG179 play_move_rotate::@return + breturn: + //SEG180 [82] return + rts + //SEG181 play_move_rotate::@2 + b2: + //SEG182 [83] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 lda #$10 clc adc current_piece_orientation - //SEG171 [80] (byte) current_piece_orientation#10 ← (byte/signed word/word/dword/signed dword~) play_moveother::$8 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG183 [84] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f + sta orientation + //SEG184 [85] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] + b4_from_b1: + b4_from_b2: + //SEG185 [85] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy + jmp b4 + //SEG186 play_move_rotate::@4 + b4: + //SEG187 [86] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + lda current_xpos + sta collision.xpos + //SEG188 [87] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + ldy current_ypos + //SEG189 [88] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + ldx orientation + //SEG190 [89] (byte*~) current_piece#70 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_70 + lda current_piece+1 + sta current_piece_70+1 + //SEG191 [90] call collision + //SEG192 [99] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] + collision_from_b4: + //SEG193 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy + //SEG194 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy + //SEG195 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy + //SEG196 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#70 [phi:play_move_rotate::@4->collision#3] -- register_copy + jsr collision + //SEG197 [91] (byte) collision::return#13 ← (byte) collision::return#14 + // (byte) collision::return#13 = (byte) collision::return#14 // register copy reg byte a + jmp b14 + //SEG198 play_move_rotate::@14 + b14: + //SEG199 [92] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 + // (byte~) play_move_rotate::$6 = (byte) collision::return#13 // register copy reg byte a + //SEG200 [93] (byte~) play_move_rotate::$8 ← (byte~) play_move_rotate::$6 & (const byte) COLLISION_LEFT#0|(const byte) COLLISION_RIGHT#0 -- vbuaa=vbuaa_band_vbuc1 + and #COLLISION_LEFT|COLLISION_RIGHT + //SEG201 [94] if((byte~) play_move_rotate::$8!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@return -- vbuaa_neq_0_then_la1 + cmp #0 + bne breturn_from_b14 + jmp b11 + //SEG202 play_move_rotate::@11 + b11: + //SEG203 [95] (byte) current_piece_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + lda orientation sta current_piece_orientation - //SEG172 [81] (byte*) current_piece_gfx#10 ← (byte*) current_piece#13 + (byte) current_piece_orientation#10 -- pbuz1=pbuz2_plus_vbuz3 + //SEG204 [96] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_piece_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 lda current_piece_orientation clc adc current_piece @@ -8159,969 +8518,992 @@ play_moveother: { lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG173 [82] phi from play_moveother::@15 play_moveother::@18 play_moveother::@20 play_moveother::@4 to play_moveother::@1 [phi:play_moveother::@15/play_moveother::@18/play_moveother::@20/play_moveother::@4->play_moveother::@1] - b1_from_b15: - b1_from_b18: - b1_from_b20: - b1_from_b4: - //SEG174 [82] phi (byte) current_xpos#11 = (byte) current_xpos#19 [phi:play_moveother::@15/play_moveother::@18/play_moveother::@20/play_moveother::@4->play_moveother::@1#0] -- register_copy - //SEG175 [82] phi (byte*) current_piece_gfx#11 = (byte*) current_piece_gfx#10 [phi:play_moveother::@15/play_moveother::@18/play_moveother::@20/play_moveother::@4->play_moveother::@1#1] -- register_copy - //SEG176 [82] phi (byte) current_piece_orientation#11 = (byte) current_piece_orientation#10 [phi:play_moveother::@15/play_moveother::@18/play_moveother::@20/play_moveother::@4->play_moveother::@1#2] -- register_copy - //SEG177 [82] phi (byte) play_moveother::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_moveother::@15/play_moveother::@18/play_moveother::@20/play_moveother::@4->play_moveother::@1#3] -- vbuaa=vbuc1 + //SEG205 [81] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + breturn_from_b11: + //SEG206 [81] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG207 [81] phi (byte) current_piece_orientation#23 = (byte) current_piece_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG208 [81] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #1 - jmp b1 - //SEG178 [82] phi from play_moveother play_moveother::@14 play_moveother::@22 play_moveother::@23 to play_moveother::@1 [phi:play_moveother/play_moveother::@14/play_moveother::@22/play_moveother::@23->play_moveother::@1] - b1_from_play_moveother: - b1_from_b14: - b1_from_b22: - b1_from_b23: - //SEG179 [82] phi (byte) current_xpos#11 = (byte) current_xpos#19 [phi:play_moveother/play_moveother::@14/play_moveother::@22/play_moveother::@23->play_moveother::@1#0] -- register_copy - //SEG180 [82] phi (byte*) current_piece_gfx#11 = (byte*) current_piece_gfx#18 [phi:play_moveother/play_moveother::@14/play_moveother::@22/play_moveother::@23->play_moveother::@1#1] -- register_copy - //SEG181 [82] phi (byte) current_piece_orientation#11 = (byte) current_piece_orientation#18 [phi:play_moveother/play_moveother::@14/play_moveother::@22/play_moveother::@23->play_moveother::@1#2] -- register_copy - //SEG182 [82] phi (byte) play_moveother::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_moveother/play_moveother::@14/play_moveother::@22/play_moveother::@23->play_moveother::@1#3] -- vbuaa=vbuc1 - lda #0 - jmp b1 - //SEG183 play_moveother::@1 - b1: jmp breturn - //SEG184 play_moveother::@return - breturn: - //SEG185 [83] return - rts - //SEG186 play_moveother::@4 - b4: - //SEG187 [84] (byte/signed word/word/dword/signed dword~) play_moveother::$11 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 + //SEG209 play_move_rotate::@1 + b1: + //SEG210 [97] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 lda current_piece_orientation sec sbc #$10 - //SEG188 [85] (byte) current_piece_orientation#9 ← (byte/signed word/word/dword/signed dword~) play_moveother::$11 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG211 [98] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f - sta current_piece_orientation - //SEG189 [86] (byte*) current_piece_gfx#9 ← (byte*) current_piece#13 + (byte) current_piece_orientation#9 -- pbuz1=pbuz2_plus_vbuz3 - lda current_piece_orientation - clc - adc current_piece - sta current_piece_gfx - lda #0 - adc current_piece+1 - sta current_piece_gfx+1 - jmp b1_from_b4 - //SEG190 play_moveother::@3 - b3: - //SEG191 [87] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 - ldy current_xpos - iny - sty collision.xpos - //SEG192 [88] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuz1=vbuz2 - lda current_ypos - sta collision.ypos - //SEG193 [89] (byte*~) current_piece_gfx#110 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 - lda current_piece_gfx - sta current_piece_gfx_110 - lda current_piece_gfx+1 - sta current_piece_gfx_110+1 - //SEG194 [90] call collision - //SEG195 [103] phi from play_moveother::@3 to collision [phi:play_moveother::@3->collision] - collision_from_b3: - //SEG196 [103] phi (byte) collision::xpos#8 = (byte) collision::xpos#2 [phi:play_moveother::@3->collision#0] -- register_copy - //SEG197 [103] phi (byte*) current_piece_gfx#46 = (byte*~) current_piece_gfx#110 [phi:play_moveother::@3->collision#1] -- register_copy - //SEG198 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_moveother::@3->collision#2] -- register_copy - jsr collision - //SEG199 [91] (byte) collision::return#12 ← (byte) collision::return#10 - // (byte) collision::return#12 = (byte) collision::return#10 // register copy reg byte a - jmp b23 - //SEG200 play_moveother::@23 - b23: - //SEG201 [92] (byte~) play_moveother::$15 ← (byte) collision::return#12 - // (byte~) play_moveother::$15 = (byte) collision::return#12 // register copy reg byte a - //SEG202 [93] if((byte~) play_moveother::$15!=(const byte) COLLISION_NONE#0) goto play_moveother::@1 -- vbuaa_neq_vbuc1_then_la1 - cmp #COLLISION_NONE - bne b1_from_b23 - jmp b18 - //SEG203 play_moveother::@18 - b18: - //SEG204 [94] (byte) current_xpos#9 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 - inc current_xpos - jmp b1_from_b18 - //SEG205 play_moveother::@2 - b2: - //SEG206 [95] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 - ldx current_xpos - dex - stx collision.xpos - //SEG207 [96] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuz1=vbuz2 - lda current_ypos - sta collision.ypos - //SEG208 [97] (byte*~) current_piece_gfx#109 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 - lda current_piece_gfx - sta current_piece_gfx_109 - lda current_piece_gfx+1 - sta current_piece_gfx_109+1 - //SEG209 [98] call collision - //SEG210 [103] phi from play_moveother::@2 to collision [phi:play_moveother::@2->collision] - collision_from_b2: - //SEG211 [103] phi (byte) collision::xpos#8 = (byte) collision::xpos#1 [phi:play_moveother::@2->collision#0] -- register_copy - //SEG212 [103] phi (byte*) current_piece_gfx#46 = (byte*~) current_piece_gfx#109 [phi:play_moveother::@2->collision#1] -- register_copy - //SEG213 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_moveother::@2->collision#2] -- register_copy - jsr collision - //SEG214 [99] (byte) collision::return#11 ← (byte) collision::return#10 - // (byte) collision::return#11 = (byte) collision::return#10 // register copy reg byte a - jmp b22 - //SEG215 play_moveother::@22 - b22: - //SEG216 [100] (byte~) play_moveother::$19 ← (byte) collision::return#11 - // (byte~) play_moveother::$19 = (byte) collision::return#11 // register copy reg byte a - //SEG217 [101] if((byte~) play_moveother::$19!=(const byte) COLLISION_NONE#0) goto play_moveother::@1 -- vbuaa_neq_vbuc1_then_la1 - cmp #COLLISION_NONE - bne b1_from_b22 - jmp b20 - //SEG218 play_moveother::@20 - b20: - //SEG219 [102] (byte) current_xpos#10 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 - dec current_xpos - jmp b1_from_b20 + sta orientation + jmp b4_from_b1 } -//SEG220 collision +//SEG212 collision collision: { - .label ypos = 4 .label xpos = 7 - .label line = $16 - .label playfield_line = $14 - .label i = $17 - .label l = 8 - .label i_2 = 9 - .label i_3 = 9 - .label i_11 = 9 - .label i_13 = 9 - //SEG221 [104] phi from collision to collision::@1 [phi:collision->collision::@1] - b1_from_collision: - //SEG222 [104] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 + .label piece_gfx = 5 + .label ypos2 = 8 + .label playfield_line = $16 + .label i = $18 + .label col = $b + .label l = 9 + .label i_2 = $a + .label i_3 = $a + .label i_11 = $a + .label i_13 = $a + //SEG213 [100] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx + txa + clc + adc piece_gfx + sta piece_gfx lda #0 - sta i_3 - //SEG223 [104] phi (byte) collision::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 + adc piece_gfx+1 + sta piece_gfx+1 + //SEG214 [101] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 + tya + asl + sta ypos2 + //SEG215 [102] phi from collision to collision::@1 [phi:collision->collision::@1] + b1_from_collision: + //SEG216 [102] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l + //SEG217 [102] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 + lda #0 + sta i_3 + //SEG218 [102] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy jmp b1 - //SEG224 collision::@1 + //SEG219 collision::@1 b1: - //SEG225 [105] (byte) collision::line#0 ← (byte) collision::ypos#4 + (byte) collision::l#2 -- vbuz1=vbuz2_plus_vbuz3 - lda ypos - clc - adc l - sta line - //SEG226 [106] (byte~) collision::$1 ← (byte) collision::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 - lda line - asl - //SEG227 [107] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) collision::$1) -- pbuz1=pptc1_derefidx_vbuaa - tay + //SEG220 [103] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG228 [108] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] + //SEG221 [104] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 + lda xpos + sta col + //SEG222 [105] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] b2_from_b1: - //SEG229 [108] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuxx=vbuc1 + //SEG223 [105] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG230 [108] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#1] -- register_copy + //SEG224 [105] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy + //SEG225 [105] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy jmp b2 - //SEG231 collision::@2 + //SEG226 collision::@2 b2: - //SEG232 [109] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG227 [106] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG233 [110] if(*((byte*) current_piece_gfx#46 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG228 [107] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 - lda (current_piece_gfx_46),y + lda (piece_gfx),y cmp #0 beq b3 jmp b8 - //SEG234 collision::@8 + //SEG229 collision::@8 b8: - //SEG235 [111] if((byte) collision::line#0<(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 - lda line - cmp #PLAYFIELD_LINES + //SEG230 [108] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 + lda ypos2 + cmp #2*PLAYFIELD_LINES bcc b4 - //SEG236 [112] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] + //SEG231 [109] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] breturn_from_b8: - //SEG237 [112] phi (byte) collision::return#10 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuaa=vbuc1 + //SEG232 [109] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM jmp breturn - //SEG238 collision::@return + //SEG233 collision::@return breturn: - //SEG239 [113] return + //SEG234 [110] return rts - //SEG240 collision::@4 + //SEG235 collision::@4 b4: - //SEG241 [114] (byte) collision::col#0 ← (byte) collision::xpos#8 + (byte) collision::c#2 -- vbuyy=vbuz1_plus_vbuxx - txa - clc - adc xpos - tay - //SEG242 [115] (byte~) collision::$7 ← (byte) collision::col#0 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuyy_band_vbuc1 - tya - and #$80 - //SEG243 [116] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuaa_eq_0_then_la1 + //SEG236 [111] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + lda #$80 + and col + //SEG237 [112] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG244 [112] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] + //SEG238 [109] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] breturn_from_b4: - //SEG245 [112] phi (byte) collision::return#10 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuaa=vbuc1 + //SEG239 [109] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT jmp breturn - //SEG246 collision::@5 + //SEG240 collision::@5 b5: - //SEG247 [117] if((byte) collision::col#0<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuyy_lt_vbuc1_then_la1 - cpy #PLAYFIELD_COLS + //SEG241 [113] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 + lda col + cmp #PLAYFIELD_COLS bcc b6 - //SEG248 [112] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] + //SEG242 [109] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] breturn_from_b5: - //SEG249 [112] phi (byte) collision::return#10 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuaa=vbuc1 + //SEG243 [109] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT jmp breturn - //SEG250 collision::@6 + //SEG244 collision::@6 b6: - //SEG251 [118] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuyy_eq_0_then_la1 + //SEG245 [114] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG252 [112] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] + //SEG246 [109] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] breturn_from_b6: - //SEG253 [112] phi (byte) collision::return#10 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuaa=vbuc1 + //SEG247 [109] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD jmp breturn - //SEG254 collision::@3 + //SEG248 collision::@3 b3: - //SEG255 [119] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuxx=_inc_vbuxx + //SEG249 [115] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 + inc col + //SEG250 [116] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG256 [120] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuxx_neq_vbuc1_then_la1 + //SEG251 [117] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b21 jmp b17 - //SEG257 collision::@17 + //SEG252 collision::@17 b17: - //SEG258 [121] (byte) collision::l#1 ← ++ (byte) collision::l#2 -- vbuz1=_inc_vbuz1 + //SEG253 [118] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + lda ypos2 + clc + adc #2 + sta ypos2 + //SEG254 [119] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG259 [122] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG255 [120] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG260 [112] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] + //SEG256 [109] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] breturn_from_b17: - //SEG261 [112] phi (byte) collision::return#10 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuaa=vbuc1 + //SEG257 [109] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE jmp breturn - //SEG262 collision::@20 + //SEG258 collision::@20 b20: - //SEG263 [123] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG259 [121] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG264 [104] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] + //SEG260 [102] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] b1_from_b20: - //SEG265 [104] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#0] -- register_copy - //SEG266 [104] phi (byte) collision::l#2 = (byte) collision::l#1 [phi:collision::@20->collision::@1#1] -- register_copy + //SEG261 [102] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy + //SEG262 [102] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy + //SEG263 [102] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy jmp b1 - //SEG267 collision::@21 + //SEG264 collision::@21 b21: - //SEG268 [124] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG265 [122] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG269 [108] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] + //SEG266 [105] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] b2_from_b21: - //SEG270 [108] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy - //SEG271 [108] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#1] -- register_copy + //SEG267 [105] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy + //SEG268 [105] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy + //SEG269 [105] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy jmp b2 } -//SEG272 play_movedown -play_movedown: { - //SEG273 [125] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 - inc current_movedown_counter - //SEG274 [126] if((byte) play_movedown::key_event#0!=(const byte) KEY_SPACE#0) goto play_movedown::@1 -- vbuaa_neq_vbuc1_then_la1 - cmp #KEY_SPACE - bne b1_from_play_movedown - //SEG275 [127] phi from play_movedown to play_movedown::@8 [phi:play_movedown->play_movedown::@8] - b8_from_play_movedown: +//SEG270 play_move_leftright +play_move_leftright: { + //SEG271 [123] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + cmp #KEY_COMMA + beq b1 + jmp b6 + //SEG272 play_move_leftright::@6 + b6: + //SEG273 [124] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + cmp #KEY_DOT + bne breturn_from_b6 + jmp b7 + //SEG274 play_move_leftright::@7 + b7: + //SEG275 [125] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + ldy current_xpos + iny + sty collision.xpos + //SEG276 [126] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + ldy current_ypos + //SEG277 [127] (byte) collision::orientation#2 ← (byte) current_piece_orientation#18 -- vbuxx=vbuz1 + ldx current_piece_orientation + //SEG278 [128] (byte*~) current_piece#69 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_69 + lda current_piece+1 + sta current_piece_69+1 + //SEG279 [129] call collision + //SEG280 [99] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] + collision_from_b7: + //SEG281 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy + //SEG282 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy + //SEG283 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy + //SEG284 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#69 [phi:play_move_leftright::@7->collision#3] -- register_copy + jsr collision + //SEG285 [130] (byte) collision::return#12 ← (byte) collision::return#14 + // (byte) collision::return#12 = (byte) collision::return#14 // register copy reg byte a + jmp b15 + //SEG286 play_move_leftright::@15 + b15: + //SEG287 [131] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 + // (byte~) play_move_leftright::$4 = (byte) collision::return#12 // register copy reg byte a + //SEG288 [132] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + cmp #COLLISION_NONE + bne breturn_from_b15 jmp b8 - //SEG276 play_movedown::@8 + //SEG289 play_move_leftright::@8 b8: - //SEG277 [128] phi from play_movedown::@8 to play_movedown::@1 [phi:play_movedown::@8->play_movedown::@1] + //SEG290 [133] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 + inc current_xpos + //SEG291 [134] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] + breturn_from_b11: + breturn_from_b8: + //SEG292 [134] phi (byte) current_xpos#23 = (byte) current_xpos#9 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG293 [134] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 + lda #1 + jmp breturn + //SEG294 [134] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] + breturn_from_b14: + breturn_from_b15: + breturn_from_b6: + //SEG295 [134] phi (byte) current_xpos#23 = (byte) current_xpos#19 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG296 [134] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 + lda #0 + jmp breturn + //SEG297 play_move_leftright::@return + breturn: + //SEG298 [135] return + rts + //SEG299 play_move_leftright::@1 + b1: + //SEG300 [136] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + ldx current_xpos + dex + stx collision.xpos + //SEG301 [137] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + ldy current_ypos + //SEG302 [138] (byte) collision::orientation#1 ← (byte) current_piece_orientation#18 -- vbuxx=vbuz1 + ldx current_piece_orientation + //SEG303 [139] (byte*~) current_piece#68 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_68 + lda current_piece+1 + sta current_piece_68+1 + //SEG304 [140] call collision + //SEG305 [99] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] + collision_from_b1: + //SEG306 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy + //SEG307 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy + //SEG308 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy + //SEG309 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#68 [phi:play_move_leftright::@1->collision#3] -- register_copy + jsr collision + //SEG310 [141] (byte) collision::return#1 ← (byte) collision::return#14 + // (byte) collision::return#1 = (byte) collision::return#14 // register copy reg byte a + jmp b14 + //SEG311 play_move_leftright::@14 + b14: + //SEG312 [142] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 + // (byte~) play_move_leftright::$8 = (byte) collision::return#1 // register copy reg byte a + //SEG313 [143] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + cmp #COLLISION_NONE + bne breturn_from_b14 + jmp b11 + //SEG314 play_move_leftright::@11 + b11: + //SEG315 [144] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 + dec current_xpos + jmp breturn_from_b11 +} +//SEG316 play_move_down +play_move_down: { + //SEG317 [145] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 + inc current_movedown_counter + //SEG318 [146] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 + cmp #KEY_SPACE + bne b1_from_play_move_down + //SEG319 [147] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + b8_from_play_move_down: + jmp b8 + //SEG320 play_move_down::@8 + b8: + //SEG321 [148] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] b1_from_b8: - //SEG278 [128] phi (byte) play_movedown::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_movedown::@8->play_movedown::@1#0] -- vbuxx=vbuc1 + //SEG322 [148] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #1 jmp b1 - //SEG279 [128] phi from play_movedown to play_movedown::@1 [phi:play_movedown->play_movedown::@1] - b1_from_play_movedown: - //SEG280 [128] phi (byte) play_movedown::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_movedown->play_movedown::@1#0] -- vbuxx=vbuc1 + //SEG323 [148] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + b1_from_play_move_down: + //SEG324 [148] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG281 play_movedown::@1 + //SEG325 play_move_down::@1 b1: - //SEG282 [129] call keyboard_event_pressed - //SEG283 [173] phi from play_movedown::@1 to keyboard_event_pressed [phi:play_movedown::@1->keyboard_event_pressed] + //SEG326 [149] call keyboard_event_pressed + //SEG327 [194] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG284 [173] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_movedown::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG328 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG285 [130] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + //SEG329 [150] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#12 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b17 - //SEG286 play_movedown::@17 + //SEG330 play_move_down::@17 b17: - //SEG287 [131] (byte~) play_movedown::$2 ← (byte) keyboard_event_pressed::return#12 - // (byte~) play_movedown::$2 = (byte) keyboard_event_pressed::return#12 // register copy reg byte a - //SEG288 [132] if((byte~) play_movedown::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movedown::@2 -- vbuaa_eq_0_then_la1 + //SEG331 [151] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + // (byte~) play_move_down::$2 = (byte) keyboard_event_pressed::return#12 // register copy reg byte a + //SEG332 [152] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b17 jmp b9 - //SEG289 play_movedown::@9 + //SEG333 play_move_down::@9 b9: - //SEG290 [133] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate_fast#0) goto play_movedown::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG334 [153] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_rate_fast bcc b2_from_b9 jmp b10 - //SEG291 play_movedown::@10 + //SEG335 play_move_down::@10 b10: - //SEG292 [134] (byte) play_movedown::movedown#2 ← ++ (byte) play_movedown::movedown#10 -- vbuxx=_inc_vbuxx + //SEG336 [154] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx inx - //SEG293 [135] phi from play_movedown::@10 play_movedown::@17 play_movedown::@9 to play_movedown::@2 [phi:play_movedown::@10/play_movedown::@17/play_movedown::@9->play_movedown::@2] + //SEG337 [155] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] b2_from_b10: b2_from_b17: b2_from_b9: - //SEG294 [135] phi (byte) play_movedown::movedown#7 = (byte) play_movedown::movedown#2 [phi:play_movedown::@10/play_movedown::@17/play_movedown::@9->play_movedown::@2#0] -- register_copy + //SEG338 [155] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy jmp b2 - //SEG295 play_movedown::@2 + //SEG339 play_move_down::@2 b2: - //SEG296 [136] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate#0) goto play_movedown::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG340 [156] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_rate bcc b4_from_b2 jmp b11 - //SEG297 play_movedown::@11 + //SEG341 play_move_down::@11 b11: - //SEG298 [137] (byte) play_movedown::movedown#3 ← ++ (byte) play_movedown::movedown#7 -- vbuxx=_inc_vbuxx + //SEG342 [157] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx inx - //SEG299 [138] phi from play_movedown::@11 play_movedown::@2 to play_movedown::@4 [phi:play_movedown::@11/play_movedown::@2->play_movedown::@4] + //SEG343 [158] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] b4_from_b11: b4_from_b2: - //SEG300 [138] phi (byte) play_movedown::movedown#6 = (byte) play_movedown::movedown#3 [phi:play_movedown::@11/play_movedown::@2->play_movedown::@4#0] -- register_copy + //SEG344 [158] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy jmp b4 - //SEG301 play_movedown::@4 + //SEG345 play_move_down::@4 b4: - //SEG302 [139] if((byte) play_movedown::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movedown::@return -- vbuxx_eq_0_then_la1 + //SEG346 [159] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 cpx #0 beq breturn_from_b4 jmp b12 - //SEG303 play_movedown::@12 + //SEG347 play_move_down::@12 b12: - //SEG304 [140] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG348 [160] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 ldy current_ypos iny - sty collision.ypos - //SEG305 [141] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG349 [161] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 lda current_xpos sta collision.xpos - //SEG306 [142] (byte*~) current_piece_gfx#108 ← (byte*) current_piece_gfx#16 -- pbuz1=pbuz2 - lda current_piece_gfx - sta current_piece_gfx_108 - lda current_piece_gfx+1 - sta current_piece_gfx_108+1 - //SEG307 [143] call collision - //SEG308 [103] phi from play_movedown::@12 to collision [phi:play_movedown::@12->collision] + //SEG350 [162] (byte) collision::orientation#0 ← (byte) current_piece_orientation#15 -- vbuxx=vbuz1 + ldx current_piece_orientation + //SEG351 [163] (byte*~) current_piece#67 ← (byte*) current_piece#11 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_67 + lda current_piece+1 + sta current_piece_67+1 + //SEG352 [164] call collision + //SEG353 [99] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] collision_from_b12: - //SEG309 [103] phi (byte) collision::xpos#8 = (byte) collision::xpos#0 [phi:play_movedown::@12->collision#0] -- register_copy - //SEG310 [103] phi (byte*) current_piece_gfx#46 = (byte*~) current_piece_gfx#108 [phi:play_movedown::@12->collision#1] -- register_copy - //SEG311 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_movedown::@12->collision#2] -- register_copy + //SEG354 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy + //SEG355 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy + //SEG356 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy + //SEG357 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#67 [phi:play_move_down::@12->collision#3] -- register_copy jsr collision - //SEG312 [144] (byte) collision::return#0 ← (byte) collision::return#10 - // (byte) collision::return#0 = (byte) collision::return#10 // register copy reg byte a + //SEG358 [165] (byte) collision::return#0 ← (byte) collision::return#14 + // (byte) collision::return#0 = (byte) collision::return#14 // register copy reg byte a jmp b18 - //SEG313 play_movedown::@18 + //SEG359 play_move_down::@18 b18: - //SEG314 [145] (byte~) play_movedown::$12 ← (byte) collision::return#0 - // (byte~) play_movedown::$12 = (byte) collision::return#0 // register copy reg byte a - //SEG315 [146] if((byte~) play_movedown::$12==(const byte) COLLISION_NONE#0) goto play_movedown::@6 -- vbuaa_eq_vbuc1_then_la1 + //SEG360 [166] (byte~) play_move_down::$12 ← (byte) collision::return#0 + // (byte~) play_move_down::$12 = (byte) collision::return#0 // register copy reg byte a + //SEG361 [167] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 cmp #COLLISION_NONE beq b6 - //SEG316 [147] phi from play_movedown::@18 to play_movedown::@13 [phi:play_movedown::@18->play_movedown::@13] + //SEG362 [168] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] b13_from_b18: jmp b13 - //SEG317 play_movedown::@13 + //SEG363 play_move_down::@13 b13: - //SEG318 [148] call lock_current - //SEG319 [157] phi from play_movedown::@13 to lock_current [phi:play_movedown::@13->lock_current] + //SEG364 [169] call lock_current + //SEG365 [178] phi from play_move_down::@13 to lock_current [phi:play_move_down::@13->lock_current] lock_current_from_b13: jsr lock_current - //SEG320 [149] phi from play_movedown::@13 to play_movedown::@19 [phi:play_movedown::@13->play_movedown::@19] + //SEG366 [170] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] b19_from_b13: jmp b19 - //SEG321 play_movedown::@19 + //SEG367 play_move_down::@19 b19: - //SEG322 [150] call spawn_current - //SEG323 [155] phi from play_movedown::@19 to spawn_current [phi:play_movedown::@19->spawn_current] + //SEG368 [171] call spawn_current + //SEG369 [176] phi from play_move_down::@19 to spawn_current [phi:play_move_down::@19->spawn_current] spawn_current_from_b19: jsr spawn_current - //SEG324 [151] phi from play_movedown::@19 to play_movedown::@7 [phi:play_movedown::@19->play_movedown::@7] + //SEG370 [172] phi from play_move_down::@19 to play_move_down::@7 [phi:play_move_down::@19->play_move_down::@7] b7_from_b19: - //SEG325 [151] phi (byte) current_xpos#35 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_movedown::@19->play_movedown::@7#0] -- vbuz1=vbuc1 + //SEG371 [172] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@19->play_move_down::@7#0] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG326 [151] phi (byte) current_piece_color#23 = (const byte) GREEN#0 [phi:play_movedown::@19->play_movedown::@7#1] -- vbuz1=vbuc1 + //SEG372 [172] phi (byte) current_piece_color#23 = (const byte) GREEN#0 [phi:play_move_down::@19->play_move_down::@7#1] -- vbuz1=vbuc1 lda #GREEN sta current_piece_color - //SEG327 [151] phi (byte*) current_piece_gfx#30 = (const byte[4*4*4]) piece_t#0 [phi:play_movedown::@19->play_movedown::@7#2] -- pbuz1=pbuc1 + //SEG373 [172] phi (byte*) current_piece_gfx#29 = (const byte[4*4*4]) piece_t#0 [phi:play_move_down::@19->play_move_down::@7#2] -- pbuz1=pbuc1 lda #piece_t sta current_piece_gfx+1 - //SEG328 [151] phi (byte) current_piece_orientation#29 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_movedown::@19->play_movedown::@7#3] -- vbuz1=vbuc1 + //SEG374 [172] phi (byte) current_piece_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 sta current_piece_orientation - //SEG329 [151] phi (byte*) current_piece#23 = (const byte[4*4*4]) piece_t#0 [phi:play_movedown::@19->play_movedown::@7#4] -- pbuz1=pbuc1 + //SEG375 [172] phi (byte*) current_piece#23 = (const byte[4*4*4]) piece_t#0 [phi:play_move_down::@19->play_move_down::@7#4] -- pbuz1=pbuc1 lda #piece_t sta current_piece+1 - //SEG330 [151] phi (byte) current_ypos#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_movedown::@19->play_movedown::@7#5] -- vbuz1=vbuc1 + //SEG376 [172] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#5] -- vbuz1=vbuc1 lda #0 sta current_ypos jmp b7 - //SEG331 play_movedown::@7 + //SEG377 play_move_down::@7 b7: - //SEG332 [152] phi from play_movedown::@7 to play_movedown::@return [phi:play_movedown::@7->play_movedown::@return] + //SEG378 [173] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] breturn_from_b7: - //SEG333 [152] phi (byte) current_xpos#19 = (byte) current_xpos#35 [phi:play_movedown::@7->play_movedown::@return#0] -- register_copy - //SEG334 [152] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_movedown::@7->play_movedown::@return#1] -- register_copy - //SEG335 [152] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#30 [phi:play_movedown::@7->play_movedown::@return#2] -- register_copy - //SEG336 [152] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#29 [phi:play_movedown::@7->play_movedown::@return#3] -- register_copy - //SEG337 [152] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_movedown::@7->play_movedown::@return#4] -- register_copy - //SEG338 [152] phi (byte) current_ypos#16 = (byte) current_ypos#30 [phi:play_movedown::@7->play_movedown::@return#5] -- register_copy - //SEG339 [152] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_movedown::@7->play_movedown::@return#6] -- vbuz1=vbuc1 + //SEG379 [173] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG380 [173] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG381 [173] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG382 [173] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG383 [173] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG384 [173] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG385 [173] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG340 [152] phi (byte) play_movedown::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_movedown::@7->play_movedown::@return#7] -- vbuxx=vbuc1 + //SEG386 [173] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuxx=vbuc1 ldx #1 jmp breturn - //SEG341 [152] phi from play_movedown::@4 to play_movedown::@return [phi:play_movedown::@4->play_movedown::@return] + //SEG387 [173] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] breturn_from_b4: - //SEG342 [152] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_movedown::@4->play_movedown::@return#0] -- register_copy - //SEG343 [152] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_movedown::@4->play_movedown::@return#1] -- register_copy - //SEG344 [152] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#16 [phi:play_movedown::@4->play_movedown::@return#2] -- register_copy - //SEG345 [152] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#16 [phi:play_movedown::@4->play_movedown::@return#3] -- register_copy - //SEG346 [152] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_movedown::@4->play_movedown::@return#4] -- register_copy - //SEG347 [152] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_movedown::@4->play_movedown::@return#5] -- register_copy - //SEG348 [152] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_movedown::@4->play_movedown::@return#6] -- register_copy - //SEG349 [152] phi (byte) play_movedown::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_movedown::@4->play_movedown::@return#7] -- vbuxx=vbuc1 + //SEG388 [173] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG389 [173] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG390 [173] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG391 [173] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG392 [173] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG393 [173] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG394 [173] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG395 [173] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuxx=vbuc1 ldx #0 jmp breturn - //SEG350 play_movedown::@return + //SEG396 play_move_down::@return breturn: - //SEG351 [153] return + //SEG397 [174] return rts - //SEG352 play_movedown::@6 + //SEG398 play_move_down::@6 b6: - //SEG353 [154] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 + //SEG399 [175] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG354 [151] phi from play_movedown::@6 to play_movedown::@7 [phi:play_movedown::@6->play_movedown::@7] + //SEG400 [172] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] b7_from_b6: - //SEG355 [151] phi (byte) current_xpos#35 = (byte) current_xpos#16 [phi:play_movedown::@6->play_movedown::@7#0] -- register_copy - //SEG356 [151] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_movedown::@6->play_movedown::@7#1] -- register_copy - //SEG357 [151] phi (byte*) current_piece_gfx#30 = (byte*) current_piece_gfx#16 [phi:play_movedown::@6->play_movedown::@7#2] -- register_copy - //SEG358 [151] phi (byte) current_piece_orientation#29 = (byte) current_piece_orientation#16 [phi:play_movedown::@6->play_movedown::@7#3] -- register_copy - //SEG359 [151] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_movedown::@6->play_movedown::@7#4] -- register_copy - //SEG360 [151] phi (byte) current_ypos#30 = (byte) current_ypos#4 [phi:play_movedown::@6->play_movedown::@7#5] -- register_copy + //SEG401 [172] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG402 [172] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG403 [172] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG404 [172] phi (byte) current_piece_orientation#33 = (byte) current_piece_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG405 [172] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG406 [172] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG361 spawn_current +//SEG407 spawn_current spawn_current: { jmp breturn - //SEG362 spawn_current::@return + //SEG408 spawn_current::@return breturn: - //SEG363 [156] return + //SEG409 [177] return rts } -//SEG364 lock_current +//SEG410 lock_current lock_current: { .label playfield_line = 5 .label i = 4 .label l = 3 - //SEG365 [158] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] + //SEG411 [179] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] b1_from_lock_current: - //SEG366 [158] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 + //SEG412 [179] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG367 [158] phi (byte) lock_current::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 + //SEG413 [179] phi (byte) lock_current::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 lda #0 sta l jmp b1 - //SEG368 [158] phi from lock_current::@5 to lock_current::@1 [phi:lock_current::@5->lock_current::@1] + //SEG414 [179] phi from lock_current::@5 to lock_current::@1 [phi:lock_current::@5->lock_current::@1] b1_from_b5: - //SEG369 [158] phi (byte) lock_current::i#3 = (byte) lock_current::i#1 [phi:lock_current::@5->lock_current::@1#0] -- register_copy - //SEG370 [158] phi (byte) lock_current::l#2 = (byte) lock_current::l#1 [phi:lock_current::@5->lock_current::@1#1] -- register_copy + //SEG415 [179] phi (byte) lock_current::i#3 = (byte) lock_current::i#1 [phi:lock_current::@5->lock_current::@1#0] -- register_copy + //SEG416 [179] phi (byte) lock_current::l#2 = (byte) lock_current::l#1 [phi:lock_current::@5->lock_current::@1#1] -- register_copy jmp b1 - //SEG371 lock_current::@1 + //SEG417 lock_current::@1 b1: - //SEG372 [159] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 -- vbuaa=vbuz1_plus_vbuz2 + //SEG418 [180] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 -- vbuaa=vbuz1_plus_vbuz2 lda current_ypos clc adc l - //SEG373 [160] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_rol_1 + //SEG419 [181] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_rol_1 asl - //SEG374 [161] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) -- pbuz1=pptc1_derefidx_vbuaa + //SEG420 [182] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) -- pbuz1=pptc1_derefidx_vbuaa tay lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG375 [162] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] + //SEG421 [183] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] b2_from_b1: - //SEG376 [162] 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 + //SEG422 [183] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG377 [162] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#1] -- register_copy + //SEG423 [183] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#1] -- register_copy jmp b2 - //SEG378 [162] phi from lock_current::@3 to lock_current::@2 [phi:lock_current::@3->lock_current::@2] + //SEG424 [183] phi from lock_current::@3 to lock_current::@2 [phi:lock_current::@3->lock_current::@2] b2_from_b3: - //SEG379 [162] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@3->lock_current::@2#0] -- register_copy - //SEG380 [162] phi (byte) lock_current::i#2 = (byte) lock_current::i#1 [phi:lock_current::@3->lock_current::@2#1] -- register_copy + //SEG425 [183] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@3->lock_current::@2#0] -- register_copy + //SEG426 [183] phi (byte) lock_current::i#2 = (byte) lock_current::i#1 [phi:lock_current::@3->lock_current::@2#1] -- register_copy jmp b2 - //SEG381 lock_current::@2 + //SEG427 lock_current::@2 b2: - //SEG382 [163] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#16 + (byte) lock_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG428 [184] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#15 + (byte) lock_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i lda (current_piece_gfx),y - //SEG383 [164] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz1 + //SEG429 [185] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG384 [165] if((byte) lock_current::cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- vbuaa_eq_0_then_la1 + //SEG430 [186] if((byte) lock_current::cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 jmp b4 - //SEG385 lock_current::@4 + //SEG431 lock_current::@4 b4: - //SEG386 [166] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 -- vbuaa=vbuz1_plus_vbuxx + //SEG432 [187] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 -- vbuaa=vbuz1_plus_vbuxx txa clc adc current_xpos - //SEG387 [167] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuaa=vbuz2 + //SEG433 [188] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuaa=vbuz2 tay lda current_piece_color sta (playfield_line),y jmp b3 - //SEG388 lock_current::@3 + //SEG434 lock_current::@3 b3: - //SEG389 [168] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG435 [189] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG390 [169] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG436 [190] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b2_from_b3 jmp b5 - //SEG391 lock_current::@5 + //SEG437 lock_current::@5 b5: - //SEG392 [170] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#2 -- vbuz1=_inc_vbuz1 + //SEG438 [191] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG393 [171] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG439 [192] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1_from_b5 jmp breturn - //SEG394 lock_current::@return + //SEG440 lock_current::@return breturn: - //SEG395 [172] return + //SEG441 [193] return rts } -//SEG396 keyboard_event_pressed +//SEG442 keyboard_event_pressed keyboard_event_pressed: { .label row_bits = 7 .label keycode = 4 - //SEG397 [174] (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 + //SEG443 [195] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 lda keycode lsr lsr lsr - //SEG398 [175] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG444 [196] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda keyboard_scan_values,y sta row_bits - //SEG399 [176] (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 + //SEG445 [197] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 lda #7 and keycode - //SEG400 [177] (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 + //SEG446 [198] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa tay lda keyboard_matrix_col_bitmask,y and row_bits jmp breturn - //SEG401 keyboard_event_pressed::@return + //SEG447 keyboard_event_pressed::@return breturn: - //SEG402 [178] return + //SEG448 [199] return rts } -//SEG403 keyboard_event_get +//SEG449 keyboard_event_get keyboard_event_get: { - //SEG404 [179] 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 + //SEG450 [200] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq breturn_from_keyboard_event_get jmp b3 - //SEG405 keyboard_event_get::@3 + //SEG451 keyboard_event_get::@3 b3: - //SEG406 [180] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG452 [201] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG407 [181] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG453 [202] (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 - //SEG408 [182] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG454 [203] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG409 [182] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG410 [182] 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 + //SEG455 [203] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG456 [203] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG411 [182] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG457 [203] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG412 [182] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG413 [182] 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 + //SEG458 [203] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG459 [203] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 lda #$ff jmp breturn - //SEG414 keyboard_event_get::@return + //SEG460 keyboard_event_get::@return breturn: - //SEG415 [183] return + //SEG461 [204] return rts } -//SEG416 keyboard_event_scan +//SEG462 keyboard_event_scan keyboard_event_scan: { .label row_scan = 8 .label keycode = 7 .label row = 4 - //SEG417 [185] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG463 [206] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG418 [185] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG419 [185] 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 + //SEG464 [206] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG465 [206] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG420 [185] 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 + //SEG466 [206] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 lda #0 sta row jmp b1 - //SEG421 [185] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG467 [206] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG422 [185] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG423 [185] 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 - //SEG424 [185] 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 + //SEG468 [206] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG469 [206] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG470 [206] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy jmp b1 - //SEG425 keyboard_event_scan::@1 + //SEG471 keyboard_event_scan::@1 b1: - //SEG426 [186] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG472 [207] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG427 [187] call keyboard_matrix_read + //SEG473 [208] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG428 [188] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG474 [209] (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 - //SEG429 keyboard_event_scan::@25 + //SEG475 keyboard_event_scan::@25 b25: - //SEG430 [189] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG476 [210] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG431 [190] 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 + //SEG477 [211] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda row_scan ldy row cmp keyboard_scan_values,y bne b4_from_b25 jmp b13 - //SEG432 keyboard_event_scan::@13 + //SEG478 keyboard_event_scan::@13 b13: - //SEG433 [191] (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 + //SEG479 [212] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG434 [192] 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] + //SEG480 [213] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] b3_from_b13: b3_from_b19: - //SEG435 [192] 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 - //SEG436 [192] 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 + //SEG481 [213] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG482 [213] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy jmp b3 - //SEG437 keyboard_event_scan::@3 + //SEG483 keyboard_event_scan::@3 b3: - //SEG438 [193] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG484 [214] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG439 [194] 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 + //SEG485 [215] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1_from_b3 - //SEG440 [195] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG486 [216] 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 - //SEG441 keyboard_event_scan::@20 + //SEG487 keyboard_event_scan::@20 b20: - //SEG442 [196] call keyboard_event_pressed - //SEG443 [173] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG488 [217] call keyboard_event_pressed + //SEG489 [194] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG444 [173] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG490 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG445 [197] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG491 [218] (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 - //SEG446 keyboard_event_scan::@26 + //SEG492 keyboard_event_scan::@26 b26: - //SEG447 [198] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG493 [219] (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 - //SEG448 [199] 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 + //SEG494 [220] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 cmp #0 beq b9_from_b26 - //SEG449 [200] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG495 [221] 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 - //SEG450 keyboard_event_scan::@21 + //SEG496 keyboard_event_scan::@21 b21: - //SEG451 [201] 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] + //SEG497 [222] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] b9_from_b21: b9_from_b26: jmp b9 - //SEG452 keyboard_event_scan::@9 + //SEG498 keyboard_event_scan::@9 b9: - //SEG453 [202] call keyboard_event_pressed - //SEG454 [173] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG499 [223] call keyboard_event_pressed + //SEG500 [194] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG455 [173] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG501 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG456 [203] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG502 [224] (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 - //SEG457 keyboard_event_scan::@27 + //SEG503 keyboard_event_scan::@27 b27: - //SEG458 [204] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG504 [225] (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 - //SEG459 [205] 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 + //SEG505 [226] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10_from_b27 - //SEG460 [206] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] + //SEG506 [227] 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 - //SEG461 keyboard_event_scan::@22 + //SEG507 keyboard_event_scan::@22 b22: - //SEG462 [207] 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] + //SEG508 [228] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] b10_from_b22: b10_from_b27: jmp b10 - //SEG463 keyboard_event_scan::@10 + //SEG509 keyboard_event_scan::@10 b10: - //SEG464 [208] call keyboard_event_pressed - //SEG465 [173] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG510 [229] call keyboard_event_pressed + //SEG511 [194] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG466 [173] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG512 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG467 [209] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG513 [230] (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 - //SEG468 keyboard_event_scan::@28 + //SEG514 keyboard_event_scan::@28 b28: - //SEG469 [210] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG515 [231] (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 - //SEG470 [211] 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 + //SEG516 [232] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11_from_b28 - //SEG471 [212] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] + //SEG517 [233] 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 - //SEG472 keyboard_event_scan::@23 + //SEG518 keyboard_event_scan::@23 b23: - //SEG473 [213] 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] + //SEG519 [234] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] b11_from_b23: b11_from_b28: jmp b11 - //SEG474 keyboard_event_scan::@11 + //SEG520 keyboard_event_scan::@11 b11: - //SEG475 [214] call keyboard_event_pressed - //SEG476 [173] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG521 [235] call keyboard_event_pressed + //SEG522 [194] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG477 [173] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG523 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG478 [215] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG524 [236] (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 - //SEG479 keyboard_event_scan::@29 + //SEG525 keyboard_event_scan::@29 b29: - //SEG480 [216] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + //SEG526 [237] (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 - //SEG481 [217] 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 + //SEG527 [238] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 cmp #0 beq breturn - //SEG482 [218] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] + //SEG528 [239] 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 - //SEG483 keyboard_event_scan::@24 + //SEG529 keyboard_event_scan::@24 b24: jmp breturn - //SEG484 keyboard_event_scan::@return + //SEG530 keyboard_event_scan::@return breturn: - //SEG485 [219] return + //SEG531 [240] return rts - //SEG486 [220] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG532 [241] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG487 [220] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG488 [220] 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 - //SEG489 [220] 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 + //SEG533 [241] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG534 [241] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG535 [241] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG490 [220] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG536 [241] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG491 [220] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG492 [220] 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 - //SEG493 [220] 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 + //SEG537 [241] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG538 [241] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG539 [241] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy jmp b4 - //SEG494 keyboard_event_scan::@4 + //SEG540 keyboard_event_scan::@4 b4: - //SEG495 [221] (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 + //SEG541 [242] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 lda row_scan ldy row eor keyboard_scan_values,y - //SEG496 [222] (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 + //SEG542 [243] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx and keyboard_matrix_col_bitmask,x - //SEG497 [223] 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 + //SEG543 [244] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5_from_b4 jmp b15 - //SEG498 keyboard_event_scan::@15 + //SEG544 keyboard_event_scan::@15 b15: - //SEG499 [224] 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 + //SEG545 [245] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5_from_b15 jmp b16 - //SEG500 keyboard_event_scan::@16 + //SEG546 keyboard_event_scan::@16 b16: - //SEG501 [225] (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 + //SEG547 [246] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx lda keyboard_matrix_col_bitmask,x and row_scan - //SEG502 [226] 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 + //SEG548 [247] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 jmp b17 - //SEG503 keyboard_event_scan::@17 + //SEG549 keyboard_event_scan::@17 b17: - //SEG504 [227] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG550 [248] *((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 - //SEG505 [228] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG551 [249] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG506 [229] 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] + //SEG552 [250] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] b5_from_b15: b5_from_b17: b5_from_b4: b5_from_b7: - //SEG507 [229] 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 + //SEG553 [250] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy jmp b5 - //SEG508 keyboard_event_scan::@5 + //SEG554 keyboard_event_scan::@5 b5: - //SEG509 [230] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG555 [251] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG510 [231] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG556 [252] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG511 [232] 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 + //SEG557 [253] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b4_from_b5 jmp b19 - //SEG512 keyboard_event_scan::@19 + //SEG558 keyboard_event_scan::@19 b19: - //SEG513 [233] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG559 [254] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3_from_b19 - //SEG514 keyboard_event_scan::@7 + //SEG560 keyboard_event_scan::@7 b7: - //SEG515 [234] (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 + //SEG561 [255] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 lda #$40 ora keycode - //SEG516 [235] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG562 [256] *((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 - //SEG517 [236] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG563 [257] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG518 keyboard_matrix_read +//SEG564 keyboard_matrix_read keyboard_matrix_read: { - //SEG519 [237] *((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 + //SEG565 [258] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A - //SEG520 [238] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG566 [259] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff jmp breturn - //SEG521 keyboard_matrix_read::@return + //SEG567 keyboard_matrix_read::@return breturn: - //SEG522 [239] return + //SEG568 [260] return rts } -//SEG523 init +//SEG569 init init: { - .label _13 = $b + .label _13 = $c .label li = 5 .label pli = 5 .label line = 5 .label l = 2 - //SEG524 [241] call fill - //SEG525 [266] phi from init to fill [phi:init->fill] + //SEG570 [262] call fill + //SEG571 [287] phi from init to fill [phi:init->fill] fill_from_init: - //SEG526 [266] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:init->fill#0] -- vbuxx=vbuc1 + //SEG572 [287] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:init->fill#0] -- vbuxx=vbuc1 ldx #$a0 - //SEG527 [266] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:init->fill#1] -- pbuz1=pbuc1 + //SEG573 [287] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:init->fill#1] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG528 [242] phi from init to init::@9 [phi:init->init::@9] + //SEG574 [263] phi from init to init::@9 [phi:init->init::@9] b9_from_init: jmp b9 - //SEG529 init::@9 + //SEG575 init::@9 b9: - //SEG530 [243] call fill - //SEG531 [266] phi from init::@9 to fill [phi:init::@9->fill] + //SEG576 [264] call fill + //SEG577 [287] phi from init::@9 to fill [phi:init::@9->fill] fill_from_b9: - //SEG532 [266] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@9->fill#0] -- vbuxx=vbuc1 + //SEG578 [287] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@9->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG533 [266] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:init::@9->fill#1] -- pbuz1=pbuc1 + //SEG579 [287] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:init::@9->fill#1] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG534 [244] phi from init::@9 to init::@1 [phi:init::@9->init::@1] + //SEG580 [265] phi from init::@9 to init::@1 [phi:init::@9->init::@1] b1_from_b9: - //SEG535 [244] phi (byte*) init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:init::@9->init::@1#0] -- pbuz1=pbuc1 + //SEG581 [265] phi (byte*) init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:init::@9->init::@1#0] -- pbuz1=pbuc1 lda #COLS+$28+$f sta li+1 - //SEG536 [244] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@9->init::@1#1] -- vbuxx=vbuc1 + //SEG582 [265] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@9->init::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG537 [244] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG583 [265] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG538 [244] phi (byte*) init::li#2 = (byte*) init::li#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG539 [244] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#1] -- register_copy + //SEG584 [265] phi (byte*) init::li#2 = (byte*) init::li#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG585 [265] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#1] -- register_copy jmp b1 - //SEG540 init::@1 + //SEG586 init::@1 b1: - //SEG541 [245] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG587 [266] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG542 [246] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG588 [267] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li sta screen_lines,y lda li+1 sta screen_lines+1,y - //SEG543 [247] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG589 [268] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li clc adc #$28 @@ -9129,38 +9511,38 @@ init: { bcc !+ inc li+1 !: - //SEG544 [248] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx + //SEG590 [269] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG545 [249] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG591 [270] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES+2+1 bne b1_from_b1 - //SEG546 [250] phi from init::@1 to init::@2 [phi:init::@1->init::@2] + //SEG592 [271] phi from init::@1 to init::@2 [phi:init::@1->init::@2] b2_from_b1: - //SEG547 [250] phi (byte*) init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:init::@1->init::@2#0] -- pbuz1=pbuc1 + //SEG593 [271] phi (byte*) init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:init::@1->init::@2#0] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG548 [250] phi (byte) init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#1] -- vbuxx=vbuc1 + //SEG594 [271] phi (byte) init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#1] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG549 [250] phi from init::@2 to init::@2 [phi:init::@2->init::@2] + //SEG595 [271] phi from init::@2 to init::@2 [phi:init::@2->init::@2] b2_from_b2: - //SEG550 [250] phi (byte*) init::pli#2 = (byte*) init::pli#1 [phi:init::@2->init::@2#0] -- register_copy - //SEG551 [250] phi (byte) init::j#2 = (byte) init::j#1 [phi:init::@2->init::@2#1] -- register_copy + //SEG596 [271] phi (byte*) init::pli#2 = (byte*) init::pli#1 [phi:init::@2->init::@2#0] -- register_copy + //SEG597 [271] phi (byte) init::j#2 = (byte) init::j#1 [phi:init::@2->init::@2#1] -- register_copy jmp b2 - //SEG552 init::@2 + //SEG598 init::@2 b2: - //SEG553 [251] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG599 [272] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG554 [252] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG600 [273] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG555 [253] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- pbuz1=pbuz1_plus_vbuc1 + //SEG601 [274] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #$a @@ -9168,41 +9550,41 @@ init: { bcc !+ inc pli+1 !: - //SEG556 [254] (byte) init::j#1 ← ++ (byte) init::j#2 -- vbuxx=_inc_vbuxx + //SEG602 [275] (byte) init::j#1 ← ++ (byte) init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG557 [255] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG603 [276] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b2_from_b2 - //SEG558 [256] phi from init::@2 to init::@3 [phi:init::@2->init::@3] + //SEG604 [277] phi from init::@2 to init::@3 [phi:init::@2->init::@3] b3_from_b2: - //SEG559 [256] phi (byte) init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuz1=vbuc1 + //SEG605 [277] phi (byte) init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG560 [256] phi (byte*) init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:init::@2->init::@3#1] -- pbuz1=pbuc1 + //SEG606 [277] phi (byte*) init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:init::@2->init::@3#1] -- pbuz1=pbuc1 lda #COLS+$e sta line+1 jmp b3 - //SEG561 [256] phi from init::@7 to init::@3 [phi:init::@7->init::@3] + //SEG607 [277] phi from init::@7 to init::@3 [phi:init::@7->init::@3] b3_from_b7: - //SEG562 [256] phi (byte) init::l#4 = (byte) init::l#1 [phi:init::@7->init::@3#0] -- register_copy - //SEG563 [256] phi (byte*) init::line#4 = (byte*) init::line#1 [phi:init::@7->init::@3#1] -- register_copy + //SEG608 [277] phi (byte) init::l#4 = (byte) init::l#1 [phi:init::@7->init::@3#0] -- register_copy + //SEG609 [277] phi (byte*) init::line#4 = (byte*) init::line#1 [phi:init::@7->init::@3#1] -- register_copy jmp b3 - //SEG564 init::@3 + //SEG610 init::@3 b3: - //SEG565 [257] phi from init::@3 to init::@4 [phi:init::@3->init::@4] + //SEG611 [278] phi from init::@3 to init::@4 [phi:init::@3->init::@4] b4_from_b3: - //SEG566 [257] phi (byte) init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@4#0] -- vbuxx=vbuc1 + //SEG612 [278] phi (byte) init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@4#0] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG567 [257] phi from init::@4 to init::@4 [phi:init::@4->init::@4] + //SEG613 [278] phi from init::@4 to init::@4 [phi:init::@4->init::@4] b4_from_b4: - //SEG568 [257] phi (byte) init::c#2 = (byte) init::c#1 [phi:init::@4->init::@4#0] -- register_copy + //SEG614 [278] phi (byte) init::c#2 = (byte) init::c#1 [phi:init::@4->init::@4#0] -- register_copy jmp b4 - //SEG569 init::@4 + //SEG615 init::@4 b4: - //SEG570 [258] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 -- pbuz1=pbuz2_plus_vbuxx + //SEG616 [279] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 -- pbuz1=pbuz2_plus_vbuxx txa clc adc line @@ -9210,19 +9592,19 @@ init: { lda #0 adc line+1 sta _13+1 - //SEG571 [259] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG617 [280] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (_13),y - //SEG572 [260] (byte) init::c#1 ← ++ (byte) init::c#2 -- vbuxx=_inc_vbuxx + //SEG618 [281] (byte) init::c#1 ← ++ (byte) init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG573 [261] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG619 [282] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS+1+1 bne b4_from_b4 jmp b7 - //SEG574 init::@7 + //SEG620 init::@7 b7: - //SEG575 [262] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG621 [283] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -9230,23 +9612,23 @@ init: { bcc !+ inc line+1 !: - //SEG576 [263] (byte) init::l#1 ← ++ (byte) init::l#4 -- vbuz1=_inc_vbuz1 + //SEG622 [284] (byte) init::l#1 ← ++ (byte) init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG577 [264] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG623 [285] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES+1+1 bne b3_from_b7 jmp breturn - //SEG578 init::@return + //SEG624 init::@return breturn: - //SEG579 [265] return + //SEG625 [286] return rts } -//SEG580 fill +//SEG626 fill fill: { - .label end = $b + .label end = $c .label addr = 5 - //SEG581 [267] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG627 [288] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -9254,23 +9636,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG582 [268] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG628 [289] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG583 [268] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG629 [289] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG584 fill::@1 + //SEG630 fill::@1 b1: - //SEG585 [269] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG631 [290] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG586 [270] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG632 [291] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG587 [271] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG633 [292] 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 @@ -9278,9 +9660,9 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG588 fill::@return + //SEG634 fill::@return breturn: - //SEG589 [272] return + //SEG635 [293] return rts } keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f @@ -9294,7 +9676,7 @@ fill: { screen_lines: .fill 2*(PLAYFIELD_LINES+3), 0 ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b20 +Removing instruction jmp b21 Removing instruction jmp bend Removing instruction jmp b21 Removing instruction jmp b22 @@ -9307,9 +9689,10 @@ Removing instruction jmp b25 Removing instruction jmp b26 Removing instruction jmp b27 Removing instruction jmp b28 -Removing instruction jmp b19 Removing instruction jmp b29 +Removing instruction jmp b19 Removing instruction jmp b30 +Removing instruction jmp b31 Removing instruction jmp b10 Removing instruction jmp b1 Removing instruction jmp b6 @@ -9323,22 +9706,23 @@ Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b3 Removing instruction jmp breturn -Removing instruction jmp b11 -Removing instruction jmp b12 -Removing instruction jmp b13 -Removing instruction jmp b14 -Removing instruction jmp b15 -Removing instruction jmp b1 +Removing instruction jmp b6 Removing instruction jmp breturn -Removing instruction jmp b23 -Removing instruction jmp b18 -Removing instruction jmp b22 -Removing instruction jmp b20 +Removing instruction jmp b4 +Removing instruction jmp b14 +Removing instruction jmp b11 Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b8 Removing instruction jmp breturn Removing instruction jmp b17 +Removing instruction jmp b6 +Removing instruction jmp b7 +Removing instruction jmp b15 +Removing instruction jmp b8 +Removing instruction jmp breturn +Removing instruction jmp b14 +Removing instruction jmp b11 Removing instruction jmp b8 Removing instruction jmp b1 Removing instruction jmp b17 @@ -9403,9 +9787,7 @@ Removing instruction lda key_event Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda current_piece_orientation -Removing instruction lda current_piece_orientation Removing instruction lda #0 -Removing instruction lda line Removing instruction lda #0 Removing instruction lda #0 Removing instruction lda row_scan @@ -9416,11 +9798,11 @@ Replacing label b3_from_b4 with b3 Replacing label b1_from_b2 with b1 Replacing label b2_from_b2 with b2 Replacing label b1_from_b3 with b1 -Replacing label b1_from_play_moveother with b1_from_b23 -Replacing label b1_from_b14 with b1_from_b23 -Replacing label b1_from_b18 with b1_from_b4 -Replacing label b1_from_b22 with b1_from_b23 -Replacing label b1_from_b20 with b1_from_b4 +Replacing label breturn_from_b14 with breturn_from_b6 +Replacing label b4_from_b1 with b4 +Replacing label breturn_from_b15 with breturn_from_b6 +Replacing label breturn_from_b14 with breturn_from_b6 +Replacing label breturn_from_b11 with breturn_from_b8 Replacing label b2_from_b17 with b2 Replacing label b2_from_b9 with b2 Replacing label b4_from_b2 with b4 @@ -9443,8 +9825,8 @@ Replacing label b3_from_b7 with b3 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b20_from_bbegin: -Removing instruction bend_from_b20: +Removing instruction b21_from_bbegin: +Removing instruction bend_from_b21: Removing instruction b21_from_main: Removing instruction spawn_current_from_b21: Removing instruction b22_from_b21: @@ -9459,14 +9841,13 @@ Removing instruction b2_from_b1: Removing instruction b2_from_b4: Removing instruction b1_from_b3: Removing instruction b2_from_b2: -Removing instruction b1_from_b15: -Removing instruction b1_from_b18: -Removing instruction b1_from_b20: -Removing instruction b1_from_play_moveother: -Removing instruction b1_from_b14: -Removing instruction b1_from_b22: -Removing instruction breturn: -Removing instruction b8_from_play_movedown: +Removing instruction breturn_from_b14: +Removing instruction b4_from_b1: +Removing instruction b4_from_b2: +Removing instruction breturn_from_b11: +Removing instruction breturn_from_b14: +Removing instruction breturn_from_b15: +Removing instruction b8_from_play_move_down: Removing instruction b1_from_b8: Removing instruction keyboard_event_pressed_from_b1: Removing instruction b2_from_b10: @@ -9518,7 +9899,7 @@ Removing instruction b4_from_b4: Removing instruction b1_from_fill: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b20: +Removing instruction b21: Removing instruction bend: Removing instruction init_from_main: Removing instruction b21: @@ -9531,11 +9912,12 @@ Removing instruction b25: Removing instruction b26: Removing instruction b27: Removing instruction b28: +Removing instruction b29: Removing instruction b19: Removing instruction render_playfield_from_b19: -Removing instruction b29: -Removing instruction render_current_from_b29: Removing instruction b30: +Removing instruction render_current_from_b30: +Removing instruction b31: Removing instruction b1_from_b10: Removing instruction b1_from_render_current: Removing instruction b6: @@ -9547,17 +9929,11 @@ Removing instruction b1_from_render_playfield: Removing instruction b2_from_b1: Removing instruction b3: Removing instruction breturn: -Removing instruction b11: -Removing instruction b12: -Removing instruction b13: +Removing instruction b6: +Removing instruction collision_from_b4: Removing instruction b14: -Removing instruction b15: -Removing instruction collision_from_b3: -Removing instruction b23: -Removing instruction b18: -Removing instruction collision_from_b2: -Removing instruction b22: -Removing instruction b20: +Removing instruction b11: +Removing instruction breturn_from_b11: Removing instruction b1_from_collision: Removing instruction b2_from_b1: Removing instruction b8: @@ -9569,6 +9945,14 @@ Removing instruction b17: Removing instruction breturn_from_b17: Removing instruction b1_from_b20: Removing instruction b2_from_b21: +Removing instruction b6: +Removing instruction b7: +Removing instruction collision_from_b7: +Removing instruction b15: +Removing instruction b8: +Removing instruction collision_from_b1: +Removing instruction b14: +Removing instruction b11: Removing instruction b8: Removing instruction b17: Removing instruction b9: @@ -9612,9 +9996,10 @@ Removing instruction b7: Removing instruction breturn: Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination -Relabelling long label b1_from_b4 to b5 -Relabelling long label b1_from_b23 to b6 -Relabelling long label b1_from_play_movedown to b3 +Relabelling long label breturn_from_b6 to b3 +Relabelling long label breturn_from_b8 to b2 +Relabelling long label breturn_from_b6 to b3 +Relabelling long label b1_from_play_move_down to b3 Relabelling long label breturn_from_b4 to b5 Relabelling long label breturn_from_keyboard_event_get to b1 Relabelling long label b4_from_b25 to b2 @@ -9636,6 +10021,7 @@ Removing instruction jmp b2 Removing instruction jmp b3 Removing instruction jmp b4 Succesful ASM optimization Pass5NextJumpElimination +Replacing instruction ldy ypos2 with TAY Removing instruction b9: Removing instruction b10: Removing instruction b11: @@ -9643,7 +10029,7 @@ Removing instruction b24: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE -(label) @20 +(label) @21 (label) @begin (label) @end (byte) BLACK @@ -9700,8 +10086,7 @@ FINAL SYMBOL TABLE (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 -(byte()) collision((byte) collision::ypos , (byte) collision::xpos) -(byte~) collision::$1 reg byte a 202.0 +(byte()) collision((byte) collision::xpos , (byte) collision::ypos , (byte) collision::orientation) (byte~) collision::$7 reg byte a 2002.0 (label) collision::@1 (label) collision::@17 @@ -9716,91 +10101,105 @@ FINAL SYMBOL TABLE (label) collision::@return (byte) collision::c (byte) collision::c#1 reg byte x 1001.0 -(byte) collision::c#2 reg byte x 333.6666666666667 +(byte) collision::c#2 reg byte x 222.44444444444446 (byte) collision::col -(byte) collision::col#0 reg byte y 1001.0 +(byte) collision::col#1 col zp ZP_BYTE:11 500.5 +(byte) collision::col#2 col zp ZP_BYTE:11 638.25 +(byte~) collision::col#9 col zp ZP_BYTE:11 202.0 (byte) collision::i -(byte) collision::i#1 i zp ZP_BYTE:23 175.25 -(byte~) collision::i#11 i#11 zp ZP_BYTE:9 202.0 -(byte~) collision::i#13 i#13 zp ZP_BYTE:9 2002.0 -(byte) collision::i#2 i#2 zp ZP_BYTE:9 1552.0 -(byte) collision::i#3 i#3 zp ZP_BYTE:9 50.5 +(byte) collision::i#1 i zp ZP_BYTE:24 161.76923076923077 +(byte~) collision::i#11 i#11 zp ZP_BYTE:10 202.0 +(byte~) collision::i#13 i#13 zp ZP_BYTE:10 2002.0 +(byte) collision::i#2 i#2 zp ZP_BYTE:10 1552.0 +(byte) collision::i#3 i#3 zp ZP_BYTE:10 67.33333333333333 (byte) collision::l -(byte) collision::l#1 l zp ZP_BYTE:8 101.0 -(byte) collision::l#2 l zp ZP_BYTE:8 18.9375 -(byte) collision::line -(byte) collision::line#0 line zp ZP_BYTE:22 80.2 +(byte) collision::l#1 l zp ZP_BYTE:9 101.0 +(byte) collision::l#6 l zp ZP_BYTE:9 12.625 +(byte) collision::orientation +(byte) collision::orientation#0 reg byte x 2.0 +(byte) collision::orientation#1 reg byte x 2.0 +(byte) collision::orientation#2 reg byte x 2.0 +(byte) collision::orientation#3 reg byte x 2.0 +(byte) collision::orientation#4 reg byte x 10.0 +(byte*) collision::piece_gfx +(byte*) collision::piece_gfx#0 piece_gfx zp ZP_WORD:5 47.76190476190476 (byte*) collision::playfield_line -(byte*) collision::playfield_line#0 playfield_line zp ZP_WORD:20 84.76923076923077 +(byte*) collision::playfield_line#0 playfield_line zp ZP_WORD:22 78.71428571428571 (byte) collision::return (byte) collision::return#0 reg byte a 4.0 -(byte) collision::return#10 reg byte a 1.2000000000000002 -(byte) collision::return#11 reg byte a 4.0 +(byte) collision::return#1 reg byte a 4.0 (byte) collision::return#12 reg byte a 4.0 +(byte) collision::return#13 reg byte a 4.0 +(byte) collision::return#14 reg byte a 1.3333333333333333 (byte) collision::xpos -(byte) collision::xpos#0 xpos zp ZP_BYTE:7 2.0 -(byte) collision::xpos#1 xpos zp ZP_BYTE:7 1.3333333333333333 -(byte) collision::xpos#2 xpos zp ZP_BYTE:7 1.3333333333333333 -(byte) collision::xpos#8 xpos zp ZP_BYTE:7 50.349999999999994 +(byte) collision::xpos#0 xpos zp ZP_BYTE:7 1.3333333333333333 +(byte) collision::xpos#1 xpos zp ZP_BYTE:7 1.0 +(byte) collision::xpos#2 xpos zp ZP_BYTE:7 1.0 +(byte) collision::xpos#3 xpos zp ZP_BYTE:7 1.0 +(byte) collision::xpos#5 xpos zp ZP_BYTE:7 4.954545454545454 (byte) collision::ypos -(byte) collision::ypos#0 ypos zp ZP_BYTE:4 1.3333333333333333 -(byte) collision::ypos#1 ypos zp ZP_BYTE:4 2.0 -(byte) collision::ypos#2 ypos zp ZP_BYTE:4 2.0 -(byte) collision::ypos#4 ypos zp ZP_BYTE:4 5.35 +(byte) collision::ypos#0 reg byte y 1.0 +(byte) collision::ypos#1 reg byte y 1.3333333333333333 +(byte) collision::ypos#2 reg byte y 1.3333333333333333 +(byte) collision::ypos#3 reg byte y 1.3333333333333333 +(byte) collision::ypos#4 reg byte y 5.0 +(byte) collision::ypos2 +(byte) collision::ypos2#0 ypos2 zp ZP_BYTE:8 4.0 +(byte) collision::ypos2#1 ypos2 zp ZP_BYTE:8 50.5 +(byte) collision::ypos2#2 ypos2 zp ZP_BYTE:8 87.06666666666668 (byte) current_movedown_counter (byte) current_movedown_counter#10 current_movedown_counter zp ZP_BYTE:3 0.5333333333333333 -(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:3 0.6190476190476191 +(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:3 0.5 (byte) current_movedown_counter#15 current_movedown_counter zp ZP_BYTE:3 1.3 (byte) current_movedown_rate (const byte) current_movedown_rate#0 current_movedown_rate = (byte/signed byte/word/signed word/dword/signed dword) 50 (byte) current_movedown_rate_fast (const byte) current_movedown_rate_fast#0 current_movedown_rate_fast = (byte/signed byte/word/signed word/dword/signed dword) 5 (byte*) current_piece -(byte*) current_piece#11 current_piece zp ZP_WORD:11 0.45454545454545453 -(byte*) current_piece#13 current_piece zp ZP_WORD:11 0.37254901960784303 -(byte*) current_piece#23 current_piece zp ZP_WORD:11 4.0 +(byte*) current_piece#11 current_piece zp ZP_WORD:12 0.5 +(byte*) current_piece#13 current_piece zp ZP_WORD:12 0.3382352941176471 +(byte*) current_piece#15 current_piece#15 zp ZP_WORD:5 10.0 +(byte*) current_piece#23 current_piece zp ZP_WORD:12 4.0 +(byte*~) current_piece#67 current_piece#67 zp ZP_WORD:5 4.0 +(byte*~) current_piece#68 current_piece#68 zp ZP_WORD:5 4.0 +(byte*~) current_piece#69 current_piece#69 zp ZP_WORD:5 4.0 +(byte*~) current_piece#70 current_piece#70 zp ZP_WORD:5 4.0 (byte) current_piece_color -(byte) current_piece_color#11 current_piece_color zp ZP_BYTE:16 20.73469387755102 -(byte) current_piece_color#13 current_piece_color zp ZP_BYTE:16 1.2380952380952381 -(byte) current_piece_color#23 current_piece_color zp ZP_BYTE:16 4.0 -(byte) current_piece_color#62 current_piece_color#62 zp ZP_BYTE:8 56.22222222222223 -(byte~) current_piece_color#69 current_piece_color#69 zp ZP_BYTE:8 22.0 +(byte) current_piece_color#11 current_piece_color zp ZP_BYTE:17 20.32 +(byte) current_piece_color#13 current_piece_color zp ZP_BYTE:17 1.0 +(byte) current_piece_color#23 current_piece_color zp ZP_BYTE:17 4.0 +(byte) current_piece_color#63 current_piece_color#63 zp ZP_BYTE:7 53.26315789473684 +(byte~) current_piece_color#70 current_piece_color#70 zp ZP_BYTE:7 22.0 (byte*) current_piece_gfx -(byte*) current_piece_gfx#10 current_piece_gfx zp ZP_WORD:14 4.0 -(byte*~) current_piece_gfx#108 current_piece_gfx#108 zp ZP_WORD:5 4.0 -(byte*~) current_piece_gfx#109 current_piece_gfx#109 zp ZP_WORD:5 4.0 -(byte*) current_piece_gfx#11 current_piece_gfx zp ZP_WORD:14 2.375 -(byte*~) current_piece_gfx#110 current_piece_gfx#110 zp ZP_WORD:5 4.0 -(byte*) current_piece_gfx#16 current_piece_gfx zp ZP_WORD:14 20.77551020408163 -(byte*) current_piece_gfx#18 current_piece_gfx zp ZP_WORD:14 0.6896551724137933 -(byte*) current_piece_gfx#30 current_piece_gfx zp ZP_WORD:14 4.0 -(byte*) current_piece_gfx#46 current_piece_gfx#46 zp ZP_WORD:5 50.349999999999994 -(byte*) current_piece_gfx#75 current_piece_gfx#75 zp ZP_WORD:5 56.22222222222223 -(byte*) current_piece_gfx#9 current_piece_gfx zp ZP_WORD:14 4.0 -(byte*~) current_piece_gfx#99 current_piece_gfx#99 zp ZP_WORD:5 7.333333333333333 +(byte*) current_piece_gfx#15 current_piece_gfx zp ZP_WORD:15 20.32 +(byte*) current_piece_gfx#17 current_piece_gfx zp ZP_WORD:15 0.2857142857142857 +(byte*) current_piece_gfx#18 current_piece_gfx zp ZP_WORD:15 1.75 +(byte*) current_piece_gfx#29 current_piece_gfx zp ZP_WORD:15 4.0 +(byte*) current_piece_gfx#61 current_piece_gfx#61 zp ZP_WORD:5 53.26315789473684 +(byte*) current_piece_gfx#8 current_piece_gfx zp ZP_WORD:15 4.0 +(byte*~) current_piece_gfx#82 current_piece_gfx#82 zp ZP_WORD:5 11.0 (byte) current_piece_orientation -(byte) current_piece_orientation#10 current_piece_orientation zp ZP_BYTE:13 3.0 -(byte) current_piece_orientation#11 current_piece_orientation zp ZP_BYTE:13 1.6875 -(byte) current_piece_orientation#16 current_piece_orientation zp ZP_BYTE:13 0.45454545454545453 -(byte) current_piece_orientation#18 current_piece_orientation zp ZP_BYTE:13 0.6896551724137933 -(byte) current_piece_orientation#29 current_piece_orientation zp ZP_BYTE:13 4.0 -(byte) current_piece_orientation#9 current_piece_orientation zp ZP_BYTE:13 3.0 +(byte) current_piece_orientation#15 current_piece_orientation zp ZP_BYTE:14 0.5 +(byte) current_piece_orientation#18 current_piece_orientation zp ZP_BYTE:14 0.32 +(byte) current_piece_orientation#23 current_piece_orientation zp ZP_BYTE:14 1.0625 +(byte) current_piece_orientation#33 current_piece_orientation zp ZP_BYTE:14 4.0 +(byte) current_piece_orientation#8 current_piece_orientation zp ZP_BYTE:14 3.0 (byte) current_xpos -(byte) current_xpos#10 current_xpos zp ZP_BYTE:17 4.0 -(byte) current_xpos#11 current_xpos zp ZP_BYTE:17 2.375 -(byte) current_xpos#16 current_xpos zp ZP_BYTE:17 20.77551020408163 -(byte) current_xpos#19 current_xpos zp ZP_BYTE:17 0.7272727272727271 -(byte) current_xpos#35 current_xpos zp ZP_BYTE:17 4.0 -(byte) current_xpos#81 current_xpos#81 zp ZP_BYTE:7 56.22222222222223 -(byte) current_xpos#9 current_xpos zp ZP_BYTE:17 4.0 -(byte~) current_xpos#91 current_xpos#91 zp ZP_BYTE:7 11.0 +(byte) current_xpos#16 current_xpos zp ZP_BYTE:18 20.36 +(byte) current_xpos#19 current_xpos zp ZP_BYTE:18 0.72 +(byte) current_xpos#23 current_xpos zp ZP_BYTE:18 0.8292682926829271 +(byte) current_xpos#36 current_xpos zp ZP_BYTE:18 4.0 +(byte) current_xpos#62 current_xpos#62 zp ZP_BYTE:4 5.894736842105264 +(byte) current_xpos#7 current_xpos zp ZP_BYTE:18 4.0 +(byte) current_xpos#9 current_xpos zp ZP_BYTE:18 4.0 +(byte~) current_xpos#92 current_xpos#92 zp ZP_BYTE:4 7.333333333333333 (byte) current_ypos -(byte) current_ypos#12 current_ypos zp ZP_BYTE:2 2.458333333333333 -(byte) current_ypos#16 current_ypos zp ZP_BYTE:2 0.588235294117647 -(byte) current_ypos#30 current_ypos zp ZP_BYTE:2 4.0 -(byte) current_ypos#35 current_ypos#35 zp ZP_BYTE:4 6.222222222222221 +(byte) current_ypos#12 current_ypos zp ZP_BYTE:2 2.4081632653061225 +(byte) current_ypos#16 current_ypos zp ZP_BYTE:2 0.4705882352941177 +(byte) current_ypos#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#75 current_ypos#75 zp ZP_BYTE:4 5.5 +(byte~) current_ypos#72 reg byte x 5.5 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (label) fill::@1 (label) fill::@return @@ -9809,13 +10208,13 @@ FINAL SYMBOL TABLE (byte*) fill::addr#1 addr zp ZP_WORD:5 16.5 (byte*) fill::addr#2 addr zp ZP_WORD:5 17.5 (byte*) fill::end -(byte*) fill::end#0 end zp ZP_WORD:11 2.6 +(byte*) fill::end#0 end zp ZP_WORD:12 2.6 (word) fill::size (byte*) fill::start (byte) fill::val (byte) fill::val#3 reg byte x 1.8333333333333333 (void()) init() -(byte*~) init::$13 $13 zp ZP_WORD:11 202.0 +(byte*~) init::$13 $13 zp ZP_WORD:12 202.0 (byte~) init::$5 reg byte a 22.0 (byte~) init::$8 reg byte a 22.0 (label) init::@1 @@ -9919,15 +10318,15 @@ FINAL SYMBOL TABLE (byte[8]) keyboard_events (const byte[8]) keyboard_events#0 keyboard_events = { fill( 8, 0) } (byte) keyboard_events_size -(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:18 2002.0 -(byte) keyboard_events_size#10 keyboard_events_size zp ZP_BYTE:18 810.9000000000001 -(byte) keyboard_events_size#13 keyboard_events_size zp ZP_BYTE:18 9.967741935483872 -(byte) keyboard_events_size#16 keyboard_events_size zp ZP_BYTE:18 0.6 -(byte) keyboard_events_size#19 keyboard_events_size zp ZP_BYTE:18 2.6 -(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:18 2002.0 -(byte) keyboard_events_size#29 keyboard_events_size zp ZP_BYTE:18 43.57142857142858 -(byte) keyboard_events_size#30 keyboard_events_size zp ZP_BYTE:18 1021.2 -(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:18 3.0 +(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:19 2002.0 +(byte) keyboard_events_size#10 keyboard_events_size zp ZP_BYTE:19 810.9000000000001 +(byte) keyboard_events_size#13 keyboard_events_size zp ZP_BYTE:19 9.967741935483872 +(byte) keyboard_events_size#16 keyboard_events_size zp ZP_BYTE:19 0.49999999999999994 +(byte) keyboard_events_size#19 keyboard_events_size zp ZP_BYTE:19 2.6 +(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:19 2002.0 +(byte) keyboard_events_size#29 keyboard_events_size zp ZP_BYTE:19 43.57142857142858 +(byte) keyboard_events_size#30 keyboard_events_size zp ZP_BYTE:19 1021.2 +(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:19 3.0 (byte[8]) keyboard_matrix_col_bitmask (const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) @@ -9970,6 +10369,7 @@ FINAL SYMBOL TABLE (byte*) lock_current::playfield_line (byte*) lock_current::playfield_line#0 playfield_line zp ZP_WORD:5 122.44444444444446 (void()) main() +(byte~) main::$10 reg byte a 22.0 (byte~) main::$8 reg byte a 22.0 (byte~) main::$9 reg byte a 22.0 (label) main::@1 @@ -9984,77 +10384,89 @@ FINAL SYMBOL TABLE (label) main::@28 (label) main::@29 (label) main::@30 +(label) main::@31 (label) main::@4 (label) main::@7 (label) main::@9 (byte) main::key_event -(byte) main::key_event#0 key_event zp ZP_BYTE:10 5.5 +(byte) main::key_event#0 key_event zp ZP_BYTE:20 4.0 (byte) main::render -(byte) main::render#1 render zp ZP_BYTE:19 4.4 -(byte) main::render#2 reg byte a 22.0 +(byte) main::render#1 render zp ZP_BYTE:21 4.4 +(byte) main::render#2 render zp ZP_BYTE:21 4.4 +(byte) main::render#3 reg byte a 22.0 (byte[4*4*4]) piece_t (const byte[4*4*4]) piece_t#0 piece_t = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } -(byte()) play_movedown((byte) play_movedown::key_event) -(byte~) play_movedown::$12 reg byte a 4.0 -(byte~) play_movedown::$2 reg byte a 4.0 -(label) play_movedown::@1 -(label) play_movedown::@10 -(label) play_movedown::@11 -(label) play_movedown::@12 -(label) play_movedown::@13 -(label) play_movedown::@17 -(label) play_movedown::@18 -(label) play_movedown::@19 -(label) play_movedown::@2 -(label) play_movedown::@4 -(label) play_movedown::@6 -(label) play_movedown::@7 -(label) play_movedown::@8 -(label) play_movedown::@9 -(label) play_movedown::@return -(byte) play_movedown::key_event -(byte) play_movedown::key_event#0 reg byte a 6.5 -(byte) play_movedown::movedown -(byte) play_movedown::movedown#10 reg byte x 1.0 -(byte) play_movedown::movedown#2 reg byte x 4.0 -(byte) play_movedown::movedown#3 reg byte x 4.0 -(byte) play_movedown::movedown#6 reg byte x 6.0 -(byte) play_movedown::movedown#7 reg byte x 5.0 -(byte) play_movedown::return -(byte) play_movedown::return#0 reg byte a 22.0 -(byte) play_movedown::return#3 reg byte x 3.6666666666666665 -(byte()) play_moveother((byte) play_moveother::key_event) -(byte~) play_moveother::$0 reg byte a 4.0 -(byte/signed word/word/dword/signed dword~) play_moveother::$11 reg byte a 4.0 -(byte~) play_moveother::$15 reg byte a 4.0 -(byte~) play_moveother::$19 reg byte a 4.0 -(byte/signed word/word/dword/signed dword~) play_moveother::$8 reg byte a 4.0 -(label) play_moveother::@1 -(label) play_moveother::@11 -(label) play_moveother::@12 -(label) play_moveother::@13 -(label) play_moveother::@14 -(label) play_moveother::@15 -(label) play_moveother::@18 -(label) play_moveother::@2 -(label) play_moveother::@20 -(label) play_moveother::@22 -(label) play_moveother::@23 -(label) play_moveother::@3 -(label) play_moveother::@4 -(label) play_moveother::@return -(byte) play_moveother::key_event -(byte) play_moveother::key_event#0 reg byte x 3.5000000000000004 -(byte) play_moveother::render -(byte) play_moveother::return -(byte) play_moveother::return#0 reg byte a 22.0 -(byte) play_moveother::return#1 reg byte a 3.6666666666666665 +(byte()) play_move_down((byte) play_move_down::key_event) +(byte~) play_move_down::$12 reg byte a 4.0 +(byte~) play_move_down::$2 reg byte a 4.0 +(label) play_move_down::@1 +(label) play_move_down::@10 +(label) play_move_down::@11 +(label) play_move_down::@12 +(label) play_move_down::@13 +(label) play_move_down::@17 +(label) play_move_down::@18 +(label) play_move_down::@19 +(label) play_move_down::@2 +(label) play_move_down::@4 +(label) play_move_down::@6 +(label) play_move_down::@7 +(label) play_move_down::@8 +(label) play_move_down::@9 +(label) play_move_down::@return +(byte) play_move_down::key_event +(byte) play_move_down::key_event#0 reg byte a 6.5 +(byte) play_move_down::movedown +(byte) play_move_down::movedown#10 reg byte x 1.0 +(byte) play_move_down::movedown#2 reg byte x 4.0 +(byte) play_move_down::movedown#3 reg byte x 4.0 +(byte) play_move_down::movedown#6 reg byte x 6.0 +(byte) play_move_down::movedown#7 reg byte x 5.0 +(byte) play_move_down::return +(byte) play_move_down::return#0 reg byte a 22.0 +(byte) play_move_down::return#3 reg byte x 3.6666666666666665 +(byte()) play_move_leftright((byte) play_move_leftright::key_event) +(byte~) play_move_leftright::$4 reg byte a 4.0 +(byte~) play_move_leftright::$8 reg byte a 4.0 +(label) play_move_leftright::@1 +(label) play_move_leftright::@11 +(label) play_move_leftright::@14 +(label) play_move_leftright::@15 +(label) play_move_leftright::@6 +(label) play_move_leftright::@7 +(label) play_move_leftright::@8 +(label) play_move_leftright::@return +(byte) play_move_leftright::key_event +(byte) play_move_leftright::key_event#0 reg byte a 7.5 +(byte) play_move_leftright::return +(byte) play_move_leftright::return#0 reg byte a 22.0 +(byte) play_move_leftright::return#2 reg byte a 3.6666666666666665 +(byte()) play_move_rotate((byte) play_move_rotate::key_event) +(byte/signed word/word/dword/signed dword~) play_move_rotate::$2 reg byte a 4.0 +(byte/signed word/word/dword/signed dword~) play_move_rotate::$4 reg byte a 4.0 +(byte~) play_move_rotate::$6 reg byte a 4.0 +(byte~) play_move_rotate::$8 reg byte a 4.0 +(label) play_move_rotate::@1 +(label) play_move_rotate::@11 +(label) play_move_rotate::@14 +(label) play_move_rotate::@2 +(label) play_move_rotate::@4 +(label) play_move_rotate::@6 +(label) play_move_rotate::@return +(byte) play_move_rotate::key_event +(byte) play_move_rotate::key_event#0 reg byte a 7.5 +(byte) play_move_rotate::orientation +(byte) play_move_rotate::orientation#1 orientation zp ZP_BYTE:4 4.0 +(byte) play_move_rotate::orientation#2 orientation zp ZP_BYTE:4 4.0 +(byte) play_move_rotate::orientation#3 orientation zp ZP_BYTE:4 0.8 +(byte) play_move_rotate::return +(byte) play_move_rotate::return#0 reg byte a 22.0 +(byte) play_move_rotate::return#2 reg byte a 3.6666666666666665 (byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 playfield = { fill( PLAYFIELD_LINES#0*PLAYFIELD_COLS#0, 0) } (byte*[PLAYFIELD_LINES#0]) playfield_lines (const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 playfield_lines = { fill( PLAYFIELD_LINES#0, 0) } (void()) render_current() -(byte~) render_current::$3 reg byte a 202.0 (label) render_current::@1 (label) render_current::@2 (label) render_current::@3 @@ -10065,33 +10477,36 @@ FINAL SYMBOL TABLE (label) render_current::@return (byte) render_current::c (byte) render_current::c#1 reg byte x 1501.5 -(byte) render_current::c#2 reg byte x 429.0 +(byte) render_current::c#2 reg byte x 286.0 (byte) render_current::current_cell (byte) render_current::current_cell#0 reg byte a 1001.0 (byte) render_current::i (byte) render_current::i#1 i zp ZP_BYTE:10 429.0 (byte) render_current::i#2 i zp ZP_BYTE:10 1552.0 -(byte) render_current::i#4 i zp ZP_BYTE:10 60.599999999999994 -(byte) render_current::i#8 i zp ZP_BYTE:10 401.0 +(byte) render_current::i#4 i zp ZP_BYTE:10 75.75 +(byte) render_current::i#8 i zp ZP_BYTE:10 300.75 (byte) render_current::l (byte) render_current::l#1 l zp ZP_BYTE:9 151.5 -(byte) render_current::l#2 l zp ZP_BYTE:9 20.2 -(byte) render_current::line -(byte) render_current::line#0 reg byte a 151.5 +(byte) render_current::l#3 l zp ZP_BYTE:9 13.466666666666667 (byte*) render_current::screen_line -(byte*) render_current::screen_line#0 screen_line zp ZP_WORD:20 110.19999999999999 +(byte*) render_current::screen_line#0 screen_line zp ZP_WORD:22 100.18181818181819 (byte) render_current::xpos -(byte) render_current::xpos#0 reg byte a 1501.5 +(byte) render_current::xpos#0 xpos zp ZP_BYTE:11 202.0 +(byte) render_current::xpos#1 xpos zp ZP_BYTE:11 667.3333333333334 +(byte) render_current::xpos#2 xpos zp ZP_BYTE:11 684.1666666666667 +(byte) render_current::ypos2 +(byte) render_current::ypos2#0 ypos2 zp ZP_BYTE:8 4.0 +(byte) render_current::ypos2#1 ypos2 zp ZP_BYTE:8 67.33333333333333 +(byte) render_current::ypos2#2 ypos2 zp ZP_BYTE:8 29.000000000000004 (void()) render_playfield() (byte~) render_playfield::$1 reg byte a 202.0 -(byte*~) render_playfield::$3 $3 zp ZP_WORD:20 2002.0 (label) render_playfield::@1 (label) render_playfield::@2 (label) render_playfield::@3 (label) render_playfield::@return (byte) render_playfield::c (byte) render_playfield::c#1 reg byte x 1501.5 -(byte) render_playfield::c#2 reg byte x 750.75 +(byte) render_playfield::c#2 reg byte x 500.5 (byte) render_playfield::i (byte) render_playfield::i#1 i zp ZP_BYTE:7 420.59999999999997 (byte) render_playfield::i#2 i zp ZP_BYTE:7 1034.6666666666667 @@ -10100,71 +10515,78 @@ FINAL SYMBOL TABLE (byte) render_playfield::l#1 l zp ZP_BYTE:4 151.5 (byte) render_playfield::l#2 l zp ZP_BYTE:4 33.666666666666664 (byte*) render_playfield::line -(byte*) render_playfield::line#0 line zp ZP_WORD:5 157.42857142857142 +(byte*) render_playfield::line#0 line zp ZP_WORD:5 202.0 +(byte*) render_playfield::line#1 line zp ZP_WORD:5 500.5 +(byte*) render_playfield::line#2 line zp ZP_WORD:5 1552.0 (byte*[PLAYFIELD_LINES#0+3]) screen_lines (const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 screen_lines = { fill( PLAYFIELD_LINES#0+3, 0) } (void()) spawn_current() (label) spawn_current::@return -zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#30 current_ypos#4 init::l#4 init::l#1 ] +zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 init::l#4 init::l#1 ] zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 lock_current::l#2 lock_current::l#1 ] -zp ZP_BYTE:4 [ current_ypos#35 current_ypos#75 render_playfield::l#2 render_playfield::l#1 collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 lock_current::i#2 lock_current::i#3 lock_current::i#1 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -zp ZP_WORD:5 [ current_piece_gfx#75 current_piece_gfx#99 current_piece_gfx#46 current_piece_gfx#108 current_piece_gfx#109 current_piece_gfx#110 init::li#2 init::li#1 init::pli#2 init::pli#1 init::line#4 init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 render_playfield::line#0 lock_current::playfield_line#0 ] -zp ZP_BYTE:7 [ current_xpos#81 current_xpos#91 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#8 collision::xpos#0 collision::xpos#1 collision::xpos#2 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 [ current_piece_color#62 current_piece_color#69 collision::l#2 collision::l#1 keyboard_event_scan::row_scan#0 ] -zp ZP_BYTE:9 [ render_current::l#2 render_current::l#1 collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] -zp ZP_BYTE:10 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 main::key_event#0 ] +reg byte x [ current_ypos#22 current_ypos#72 ] +zp ZP_BYTE:4 [ current_xpos#62 current_xpos#92 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 lock_current::i#2 lock_current::i#3 lock_current::i#1 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +zp ZP_WORD:5 [ current_piece_gfx#61 current_piece_gfx#82 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 collision::piece_gfx#0 init::li#2 init::li#1 init::pli#2 init::pli#1 init::line#4 init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 lock_current::playfield_line#0 ] +zp ZP_BYTE:7 [ current_piece_color#63 current_piece_color#70 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 keyboard_event_pressed::row_bits#0 ] +zp ZP_BYTE:8 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 keyboard_event_scan::row_scan#0 ] +zp ZP_BYTE: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 ] reg byte x [ render_current::c#2 render_current::c#1 ] reg byte x [ render_playfield::c#2 render_playfield::c#1 ] -reg byte a [ play_moveother::return#1 ] +reg byte a [ play_move_rotate::return#2 ] +reg byte x [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] +reg byte y [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] reg byte x [ collision::c#2 collision::c#1 ] -reg byte a [ collision::return#10 ] -reg byte x [ play_movedown::movedown#6 play_movedown::movedown#3 play_movedown::movedown#7 play_movedown::movedown#2 play_movedown::movedown#10 ] -zp ZP_WORD:11 [ current_piece#23 current_piece#11 current_piece#13 init::$13 fill::end#0 ] -zp ZP_BYTE:13 [ current_piece_orientation#29 current_piece_orientation#16 current_piece_orientation#11 current_piece_orientation#18 current_piece_orientation#10 current_piece_orientation#9 ] -zp ZP_WORD:14 [ current_piece_gfx#30 current_piece_gfx#16 current_piece_gfx#11 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#9 ] -zp ZP_BYTE:16 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] -zp ZP_BYTE:17 [ current_xpos#35 current_xpos#16 current_xpos#11 current_xpos#19 current_xpos#9 current_xpos#10 ] -reg byte x [ play_movedown::return#3 ] +reg byte a [ collision::return#14 ] +reg byte a [ play_move_leftright::return#2 ] +reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] +zp ZP_WORD:12 [ current_piece#23 current_piece#11 current_piece#13 init::$13 fill::end#0 ] +zp ZP_BYTE:14 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] +zp ZP_WORD:15 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#8 current_piece_gfx#17 ] +zp ZP_BYTE:17 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] +zp ZP_BYTE:18 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +reg byte x [ play_move_down::return#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 ] -zp ZP_BYTE:18 [ 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:19 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] reg byte x [ init::i#2 init::i#1 ] reg byte x [ init::j#2 init::j#1 ] reg byte x [ init::c#2 init::c#1 ] reg byte x [ fill::val#3 ] reg byte a [ keyboard_event_get::return#3 ] -reg byte a [ play_movedown::key_event#0 ] -reg byte a [ play_movedown::return#0 ] +zp ZP_BYTE:20 [ main::key_event#0 ] +reg byte a [ play_move_down::key_event#0 ] +reg byte a [ play_move_down::return#0 ] reg byte a [ main::$8 ] -zp ZP_BYTE:19 [ main::render#1 ] -reg byte x [ play_moveother::key_event#0 ] -reg byte a [ play_moveother::return#0 ] +zp ZP_BYTE:21 [ main::render#1 main::render#2 ] +reg byte a [ play_move_leftright::key_event#0 ] +reg byte a [ play_move_leftright::return#0 ] reg byte a [ main::$9 ] -reg byte a [ main::render#2 ] -reg byte a [ render_current::line#0 ] -reg byte a [ render_current::$3 ] -zp ZP_WORD:20 [ render_current::screen_line#0 render_playfield::$3 collision::playfield_line#0 ] +reg byte a [ play_move_rotate::key_event#0 ] +reg byte a [ play_move_rotate::return#0 ] +reg byte a [ main::$10 ] +reg byte a [ main::render#3 ] +zp ZP_WORD:22 [ render_current::screen_line#0 collision::playfield_line#0 ] reg byte a [ render_current::current_cell#0 ] -reg byte a [ render_current::xpos#0 ] reg byte a [ render_playfield::$1 ] -reg byte a [ play_moveother::$0 ] -reg byte a [ play_moveother::$8 ] -reg byte a [ play_moveother::$11 ] -reg byte a [ collision::return#12 ] -reg byte a [ play_moveother::$15 ] -reg byte a [ collision::return#11 ] -reg byte a [ play_moveother::$19 ] -zp ZP_BYTE:22 [ collision::line#0 ] -reg byte a [ collision::$1 ] -zp ZP_BYTE:23 [ collision::i#1 ] -reg byte y [ collision::col#0 ] +reg byte a [ play_move_rotate::$2 ] +reg byte a [ collision::return#13 ] +reg byte a [ play_move_rotate::$6 ] +reg byte a [ play_move_rotate::$8 ] +reg byte a [ play_move_rotate::$4 ] +zp ZP_BYTE:24 [ collision::i#1 ] reg byte a [ collision::$7 ] +reg byte a [ collision::return#12 ] +reg byte a [ play_move_leftright::$4 ] +reg byte a [ collision::return#1 ] +reg byte a [ play_move_leftright::$8 ] reg byte a [ keyboard_event_pressed::return#12 ] -reg byte a [ play_movedown::$2 ] +reg byte a [ play_move_down::$2 ] reg byte a [ collision::return#0 ] -reg byte a [ play_movedown::$12 ] +reg byte a [ play_move_down::$12 ] reg byte a [ lock_current::line#0 ] reg byte a [ lock_current::$1 ] reg byte a [ lock_current::cell#0 ] @@ -10192,7 +10614,7 @@ reg byte a [ init::$8 ] FINAL ASSEMBLER -Score: 344300 +Score: 345297 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -10226,70 +10648,68 @@ Score: 344300 .const COLLISION_BOTTOM = 2 .const COLLISION_LEFT = 4 .const COLLISION_RIGHT = 8 - .label keyboard_events_size = $12 + .label keyboard_events_size = $13 .label current_ypos = 2 - .label current_piece_orientation = $d - .label current_piece_gfx = $e - .label current_xpos = $11 - .label current_piece = $b - .label current_piece_color = $10 + .label current_xpos = $12 + .label current_piece_orientation = $e + .label current_piece_gfx = $f + .label current_piece = $c + .label current_piece_color = $11 .label current_movedown_counter = 3 - .label current_ypos_35 = 4 - .label current_piece_gfx_46 = 5 - .label current_piece_gfx_75 = 5 - .label current_xpos_81 = 7 - .label current_piece_color_62 = 8 - .label current_ypos_75 = 4 - .label current_piece_gfx_99 = 5 - .label current_xpos_91 = 7 - .label current_piece_color_69 = 8 - .label current_piece_gfx_108 = 5 - .label current_piece_gfx_109 = 5 - .label current_piece_gfx_110 = 5 + .label current_piece_15 = 5 + .label current_xpos_62 = 4 + .label current_piece_gfx_61 = 5 + .label current_piece_color_63 = 7 + .label current_xpos_92 = 4 + .label current_piece_gfx_82 = 5 + .label current_piece_color_70 = 7 + .label current_piece_67 = 5 + .label current_piece_68 = 5 + .label current_piece_69 = 5 + .label current_piece_70 = 5 //SEG2 @begin -//SEG3 [1] phi from @begin to @20 [phi:@begin->@20] -//SEG4 @20 +//SEG3 [1] phi from @begin to @21 [phi:@begin->@21] +//SEG4 @21 //SEG5 [2] call main jsr main -//SEG6 [3] phi from @20 to @end [phi:@20->@end] +//SEG6 [3] phi from @21 to @end [phi:@21->@end] //SEG7 @end //SEG8 main main: { - .label key_event = $a - .label render = $13 + .label key_event = $14 + .label render = $15 //SEG9 asm { sei } sei //SEG10 [5] call init - //SEG11 [240] phi from main to init [phi:main->init] + //SEG11 [261] phi from main to init [phi:main->init] jsr init //SEG12 [6] phi from main to main::@21 [phi:main->main::@21] //SEG13 main::@21 //SEG14 [7] call spawn_current - //SEG15 [155] phi from main::@21 to spawn_current [phi:main::@21->spawn_current] + //SEG15 [176] phi from main::@21 to spawn_current [phi:main::@21->spawn_current] jsr spawn_current //SEG16 [8] phi from main::@21 to main::@22 [phi:main::@21->main::@22] //SEG17 main::@22 //SEG18 [9] call render_playfield - //SEG19 [60] phi from main::@22 to render_playfield [phi:main::@22->render_playfield] + //SEG19 [66] phi from main::@22 to render_playfield [phi:main::@22->render_playfield] jsr render_playfield //SEG20 [10] phi from main::@22 to main::@23 [phi:main::@22->main::@23] //SEG21 main::@23 //SEG22 [11] call render_current - //SEG23 [41] phi from main::@23 to render_current [phi:main::@23->render_current] - //SEG24 [41] phi (byte) current_piece_color#62 = (const byte) GREEN#0 [phi:main::@23->render_current#0] -- vbuz1=vbuc1 + //SEG23 [46] phi from main::@23 to render_current [phi:main::@23->render_current] + //SEG24 [46] phi (byte) current_piece_color#63 = (const byte) GREEN#0 [phi:main::@23->render_current#0] -- vbuz1=vbuc1 lda #GREEN - sta current_piece_color_62 - //SEG25 [41] phi (byte) current_xpos#81 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@23->render_current#1] -- vbuz1=vbuc1 - lda #3 - sta current_xpos_81 - //SEG26 [41] phi (byte*) current_piece_gfx#75 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->render_current#2] -- pbuz1=pbuc1 + sta current_piece_color_63 + //SEG25 [46] phi (byte*) current_piece_gfx#61 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->render_current#1] -- pbuz1=pbuc1 lda #piece_t - sta current_piece_gfx_75+1 - //SEG27 [41] phi (byte) current_ypos#35 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->render_current#3] -- vbuz1=vbuc1 - lda #0 - sta current_ypos_35 + sta current_piece_gfx_61+1 + //SEG26 [46] phi (byte) current_xpos#62 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@23->render_current#2] -- vbuz1=vbuc1 + lda #3 + sta current_xpos_62 + //SEG27 [46] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->render_current#3] -- vbuxx=vbuc1 + ldx #0 jsr render_current //SEG28 [12] phi from main::@23 to main::@1 [phi:main::@23->main::@1] //SEG29 [12] phi (byte) current_movedown_counter#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#0] -- vbuz1=vbuc1 @@ -10305,12 +10725,12 @@ main: { //SEG33 [12] phi (byte) current_piece_color#11 = (const byte) GREEN#0 [phi:main::@23->main::@1#4] -- vbuz1=vbuc1 lda #GREEN sta current_piece_color - //SEG34 [12] phi (byte*) current_piece_gfx#16 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->main::@1#5] -- pbuz1=pbuc1 + //SEG34 [12] phi (byte*) current_piece_gfx#15 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->main::@1#5] -- pbuz1=pbuc1 lda #piece_t sta current_piece_gfx+1 - //SEG35 [12] phi (byte) current_piece_orientation#16 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#6] -- vbuz1=vbuc1 + //SEG35 [12] phi (byte) current_piece_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@23->main::@1#6] -- vbuz1=vbuc1 lda #0 sta current_piece_orientation //SEG36 [12] phi (byte*) current_piece#11 = (const byte[4*4*4]) piece_t#0 [phi:main::@23->main::@1#7] -- pbuz1=pbuc1 @@ -10335,7 +10755,7 @@ main: { //SEG43 [15] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL //SEG44 [16] call keyboard_event_scan - //SEG45 [184] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] + //SEG45 [205] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] jsr keyboard_event_scan //SEG46 [17] phi from main::@9 to main::@25 [phi:main::@9->main::@25] //SEG47 main::@25 @@ -10346,1044 +10766,1125 @@ main: { //SEG50 main::@26 //SEG51 [20] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa sta key_event - //SEG52 [21] (byte) play_movedown::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 - //SEG53 [22] call play_movedown - jsr play_movedown - //SEG54 [23] (byte) play_movedown::return#0 ← (byte) play_movedown::return#3 -- vbuaa=vbuxx + //SEG52 [21] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG53 [22] call play_move_down + jsr play_move_down + //SEG54 [23] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx txa //SEG55 main::@27 - //SEG56 [24] (byte~) main::$8 ← (byte) play_movedown::return#0 - // (byte~) main::$8 = (byte) play_movedown::return#0 // register copy reg byte a + //SEG56 [24] (byte~) main::$8 ← (byte) play_move_down::return#0 + // (byte~) main::$8 = (byte) play_move_down::return#0 // register copy reg byte a //SEG57 [25] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$8 -- vbuz1=vbuc1_plus_vbuaa clc adc #0 sta render - //SEG58 [26] (byte) play_moveother::key_event#0 ← (byte) main::key_event#0 -- vbuxx=vbuz1 - ldx key_event - //SEG59 [27] call play_moveother - jsr play_moveother - //SEG60 [28] (byte) play_moveother::return#0 ← (byte) play_moveother::return#1 - // (byte) play_moveother::return#0 = (byte) play_moveother::return#1 // register copy reg byte a + //SEG58 [26] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + lda key_event + //SEG59 [27] call play_move_leftright + jsr play_move_leftright + //SEG60 [28] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + // (byte) play_move_leftright::return#0 = (byte) play_move_leftright::return#2 // register copy reg byte a //SEG61 main::@28 - //SEG62 [29] (byte~) main::$9 ← (byte) play_moveother::return#0 - // (byte~) main::$9 = (byte) play_moveother::return#0 // register copy reg byte a - //SEG63 [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 -- vbuaa=vbuz1_plus_vbuaa + //SEG62 [29] (byte~) main::$9 ← (byte) play_move_leftright::return#0 + // (byte~) main::$9 = (byte) play_move_leftright::return#0 // register copy reg byte a + //SEG63 [30] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$9 -- vbuz1=vbuz1_plus_vbuaa clc adc render - //SEG64 [31] if((byte) main::render#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuaa_eq_0_then_la1 + sta render + //SEG64 [31] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + lda key_event + //SEG65 [32] call play_move_rotate + jsr play_move_rotate + //SEG66 [33] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + // (byte) play_move_rotate::return#0 = (byte) play_move_rotate::return#2 // register copy reg byte a + //SEG67 main::@29 + //SEG68 [34] (byte~) main::$10 ← (byte) play_move_rotate::return#0 + // (byte~) main::$10 = (byte) play_move_rotate::return#0 // register copy reg byte a + //SEG69 [35] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$10 -- vbuaa=vbuz1_plus_vbuaa + clc + adc render + //SEG70 [36] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 - //SEG65 main::@19 - //SEG66 [32] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG71 main::@19 + //SEG72 [37] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG67 [33] call render_playfield - //SEG68 [60] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] + //SEG73 [38] call render_playfield + //SEG74 [66] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] jsr render_playfield - //SEG69 main::@29 - //SEG70 [34] (byte~) current_ypos#75 ← (byte) current_ypos#16 -- vbuz1=vbuz2 - lda current_ypos - sta current_ypos_75 - //SEG71 [35] (byte*~) current_piece_gfx#99 ← (byte*) current_piece_gfx#11 -- pbuz1=pbuz2 - lda current_piece_gfx - sta current_piece_gfx_99 - lda current_piece_gfx+1 - sta current_piece_gfx_99+1 - //SEG72 [36] (byte~) current_xpos#91 ← (byte) current_xpos#11 -- vbuz1=vbuz2 + //SEG75 main::@30 + //SEG76 [39] (byte~) current_ypos#72 ← (byte) current_ypos#16 -- vbuxx=vbuz1 + ldx current_ypos + //SEG77 [40] (byte~) current_xpos#92 ← (byte) current_xpos#23 -- vbuz1=vbuz2 lda current_xpos - sta current_xpos_91 - //SEG73 [37] (byte~) current_piece_color#69 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 + sta current_xpos_92 + //SEG78 [41] (byte*~) current_piece_gfx#82 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + lda current_piece_gfx + sta current_piece_gfx_82 + lda current_piece_gfx+1 + sta current_piece_gfx_82+1 + //SEG79 [42] (byte~) current_piece_color#70 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 lda current_piece_color - sta current_piece_color_69 - //SEG74 [38] call render_current - //SEG75 [41] phi from main::@29 to render_current [phi:main::@29->render_current] - //SEG76 [41] phi (byte) current_piece_color#62 = (byte~) current_piece_color#69 [phi:main::@29->render_current#0] -- register_copy - //SEG77 [41] phi (byte) current_xpos#81 = (byte~) current_xpos#91 [phi:main::@29->render_current#1] -- register_copy - //SEG78 [41] phi (byte*) current_piece_gfx#75 = (byte*~) current_piece_gfx#99 [phi:main::@29->render_current#2] -- register_copy - //SEG79 [41] phi (byte) current_ypos#35 = (byte~) current_ypos#75 [phi:main::@29->render_current#3] -- register_copy + sta current_piece_color_70 + //SEG80 [43] call render_current + //SEG81 [46] phi from main::@30 to render_current [phi:main::@30->render_current] + //SEG82 [46] phi (byte) current_piece_color#63 = (byte~) current_piece_color#70 [phi:main::@30->render_current#0] -- register_copy + //SEG83 [46] phi (byte*) current_piece_gfx#61 = (byte*~) current_piece_gfx#82 [phi:main::@30->render_current#1] -- register_copy + //SEG84 [46] phi (byte) current_xpos#62 = (byte~) current_xpos#92 [phi:main::@30->render_current#2] -- register_copy + //SEG85 [46] phi (byte) current_ypos#22 = (byte~) current_ypos#72 [phi:main::@30->render_current#3] -- register_copy jsr render_current - //SEG80 main::@30 - //SEG81 [39] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG86 main::@31 + //SEG87 [44] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG82 main::@10 + //SEG88 main::@10 b10: - //SEG83 [40] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG89 [45] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG84 [12] phi from main::@10 to main::@1 [phi:main::@10->main::@1] - //SEG85 [12] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy - //SEG86 [12] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy - //SEG87 [12] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#2] -- register_copy - //SEG88 [12] phi (byte) current_xpos#16 = (byte) current_xpos#11 [phi:main::@10->main::@1#3] -- register_copy - //SEG89 [12] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#4] -- register_copy - //SEG90 [12] phi (byte*) current_piece_gfx#16 = (byte*) current_piece_gfx#11 [phi:main::@10->main::@1#5] -- register_copy - //SEG91 [12] phi (byte) current_piece_orientation#16 = (byte) current_piece_orientation#11 [phi:main::@10->main::@1#6] -- register_copy - //SEG92 [12] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy + //SEG90 [12] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + //SEG91 [12] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy + //SEG92 [12] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy + //SEG93 [12] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#2] -- register_copy + //SEG94 [12] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#3] -- register_copy + //SEG95 [12] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#4] -- register_copy + //SEG96 [12] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy + //SEG97 [12] phi (byte) current_piece_orientation#15 = (byte) current_piece_orientation#23 [phi:main::@10->main::@1#6] -- register_copy + //SEG98 [12] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy jmp b4 } -//SEG93 render_current +//SEG99 render_current render_current: { + .label ypos2 = 8 .label l = 9 - .label screen_line = $14 + .label screen_line = $16 + .label xpos = $b .label i = $a - //SEG94 [42] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] - //SEG95 [42] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 + //SEG100 [47] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + txa + asl + sta ypos2 + //SEG101 [48] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] + //SEG102 [48] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG96 [42] phi (byte) render_current::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 + //SEG103 [48] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 sta l - //SEG97 [42] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] - //SEG98 [42] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy - //SEG99 [42] phi (byte) render_current::l#2 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy - //SEG100 render_current::@1 + //SEG104 [48] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy + //SEG105 [48] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] + //SEG106 [48] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy + //SEG107 [48] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy + //SEG108 [48] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy + //SEG109 render_current::@1 b1: - //SEG101 [43] (byte) render_current::line#0 ← (byte) current_ypos#35 + (byte) render_current::l#2 -- vbuaa=vbuz1_plus_vbuz2 - lda current_ypos_35 - clc - adc l - //SEG102 [44] if((byte) render_current::line#0>=(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuaa_ge_vbuc1_then_la1 - cmp #PLAYFIELD_LINES + //SEG110 [49] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 + lda ypos2 + cmp #2*PLAYFIELD_LINES bcs b2 - //SEG103 render_current::@6 - //SEG104 [45] (byte~) render_current::$3 ← (byte) render_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_rol_1 - asl - //SEG105 [46] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_current::$3) -- pbuz1=pptc1_derefidx_vbuaa + //SEG111 render_current::@6 + //SEG112 [50] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 tay lda screen_lines,y sta screen_line lda screen_lines+1,y sta screen_line+1 - //SEG106 [47] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] - //SEG107 [47] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuxx=vbuc1 + //SEG113 [51] (byte) render_current::xpos#0 ← (byte) current_xpos#62 -- vbuz1=vbuz2 + lda current_xpos_62 + sta xpos + //SEG114 [52] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] + //SEG115 [52] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG108 [47] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#1] -- register_copy - //SEG109 [47] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] - //SEG110 [47] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy - //SEG111 [47] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#1] -- register_copy - //SEG112 render_current::@3 + //SEG116 [52] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy + //SEG117 [52] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy + //SEG118 [52] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] + //SEG119 [52] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy + //SEG120 [52] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy + //SEG121 [52] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy + //SEG122 render_current::@3 b3: - //SEG113 [48] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#75 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG123 [53] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#61 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i - lda (current_piece_gfx_75),y - //SEG114 [49] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 + lda (current_piece_gfx_61),y + //SEG124 [54] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG115 [50] 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 + //SEG125 [55] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG116 render_current::@7 - //SEG117 [51] (byte) render_current::xpos#0 ← (byte) current_xpos#81 + (byte) render_current::c#2 -- vbuaa=vbuz1_plus_vbuxx - txa - clc - adc current_xpos_81 - //SEG118 [52] if((byte) render_current::xpos#0>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuaa_ge_vbuc1_then_la1 + //SEG126 render_current::@7 + //SEG127 [56] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 + lda xpos cmp #PLAYFIELD_COLS bcs b4 - //SEG119 render_current::@8 - //SEG120 [53] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#0) ← (byte) current_piece_color#62 -- pbuz1_derefidx_vbuaa=vbuz2 - tay - lda current_piece_color_62 + //SEG128 render_current::@8 + //SEG129 [57] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#63 -- pbuz1_derefidx_vbuz2=vbuz3 + lda current_piece_color_63 + ldy xpos sta (screen_line),y - //SEG121 render_current::@4 + //SEG130 render_current::@4 b4: - //SEG122 [54] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx + //SEG131 [58] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 + inc xpos + //SEG132 [59] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG123 [55] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG133 [60] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b3 - //SEG124 [56] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] - //SEG125 [56] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy - //SEG126 render_current::@2 + //SEG134 [61] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] + //SEG135 [61] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy + //SEG136 render_current::@2 b2: - //SEG127 [57] (byte) render_current::l#1 ← ++ (byte) render_current::l#2 -- vbuz1=_inc_vbuz1 + //SEG137 [62] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + lda ypos2 + clc + adc #2 + sta ypos2 + //SEG138 [63] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 inc l - //SEG128 [58] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG139 [64] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1 - //SEG129 render_current::@return - //SEG130 [59] return + //SEG140 render_current::@return + //SEG141 [65] return rts } -//SEG131 render_playfield +//SEG142 render_playfield render_playfield: { - .label _3 = $14 .label line = 5 .label i = 7 .label l = 4 - //SEG132 [61] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] - //SEG133 [61] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG143 [67] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG144 [67] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG134 [61] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG145 [67] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 sta l - //SEG135 [61] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] - //SEG136 [61] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG137 [61] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy - //SEG138 render_playfield::@1 + //SEG146 [67] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG147 [67] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG148 [67] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG149 render_playfield::@1 b1: - //SEG139 [62] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + //SEG150 [68] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 lda l asl - //SEG140 [63] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuaa + //SEG151 [69] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines,y sta line lda screen_lines+1,y sta line+1 - //SEG141 [64] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] - //SEG142 [64] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#0] -- register_copy - //SEG143 [64] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#1] -- vbuxx=vbuc1 + //SEG152 [70] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG153 [70] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG144 [64] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] - //SEG145 [64] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG146 [64] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG147 render_playfield::@2 + //SEG154 [70] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG155 [70] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG156 [70] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG157 [70] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG158 [70] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG159 [70] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG160 render_playfield::@2 b2: - //SEG148 [65] (byte*~) render_playfield::$3 ← (byte*) render_playfield::line#0 + (byte) render_playfield::c#2 -- pbuz1=pbuz2_plus_vbuxx - txa - clc - adc line - sta _3 - lda #0 - adc line+1 - sta _3+1 - //SEG149 [66] *((byte*~) render_playfield::$3) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG161 [71] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 - sta (_3),y - //SEG150 [67] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + sta (line),y + //SEG162 [72] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 + inc line + bne !+ + inc line+1 + !: + //SEG163 [73] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG151 [68] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuxx=_inc_vbuxx + //SEG164 [74] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuxx=_inc_vbuxx inx - //SEG152 [69] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG165 [75] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS-1+1 bne b2 - //SEG153 render_playfield::@3 - //SEG154 [70] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG166 render_playfield::@3 + //SEG167 [76] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG155 [71] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG168 [77] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1 - //SEG156 render_playfield::@return - //SEG157 [72] return + //SEG169 render_playfield::@return + //SEG170 [78] return rts } -//SEG158 play_moveother -play_moveother: { - //SEG159 [73] (byte~) play_moveother::$0 ← (byte) play_moveother::key_event#0 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuxx_band_vbuc1 - txa - and #$80 - //SEG160 [74] if((byte~) play_moveother::$0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_moveother::@1 -- vbuaa_neq_0_then_la1 - cmp #0 - bne b6 - //SEG161 play_moveother::@11 - //SEG162 [75] if((byte) play_moveother::key_event#0==(const byte) KEY_COMMA#0) goto play_moveother::@2 -- vbuxx_eq_vbuc1_then_la1 - cpx #KEY_COMMA +//SEG171 play_move_rotate +play_move_rotate: { + .label orientation = 4 + //SEG172 [79] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + cmp #KEY_Z + beq b1 + //SEG173 play_move_rotate::@6 + //SEG174 [80] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + cmp #KEY_X beq b2 - //SEG163 play_moveother::@12 - //SEG164 [76] if((byte) play_moveother::key_event#0==(const byte) KEY_DOT#0) goto play_moveother::@3 -- vbuxx_eq_vbuc1_then_la1 - cpx #KEY_DOT - beq b3 - //SEG165 play_moveother::@13 - //SEG166 [77] if((byte) play_moveother::key_event#0==(const byte) KEY_Z#0) goto play_moveother::@4 -- vbuxx_eq_vbuc1_then_la1 - cpx #KEY_Z - beq b4 - //SEG167 play_moveother::@14 - //SEG168 [78] if((byte) play_moveother::key_event#0!=(const byte) KEY_X#0) goto play_moveother::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #KEY_X - bne b6 - //SEG169 play_moveother::@15 - //SEG170 [79] (byte/signed word/word/dword/signed dword~) play_moveother::$8 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 + //SEG175 [81] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] + b3: + //SEG176 [81] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#17 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG177 [81] phi (byte) current_piece_orientation#23 = (byte) current_piece_orientation#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG178 [81] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 + lda #0 + //SEG179 play_move_rotate::@return + breturn: + //SEG180 [82] return + rts + //SEG181 play_move_rotate::@2 + b2: + //SEG182 [83] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_piece_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 lda #$10 clc adc current_piece_orientation - //SEG171 [80] (byte) current_piece_orientation#10 ← (byte/signed word/word/dword/signed dword~) play_moveother::$8 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG183 [84] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f + sta orientation + //SEG184 [85] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] + //SEG185 [85] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy + //SEG186 play_move_rotate::@4 + b4: + //SEG187 [86] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + lda current_xpos + sta collision.xpos + //SEG188 [87] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + ldy current_ypos + //SEG189 [88] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + ldx orientation + //SEG190 [89] (byte*~) current_piece#70 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_70 + lda current_piece+1 + sta current_piece_70+1 + //SEG191 [90] call collision + //SEG192 [99] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] + //SEG193 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy + //SEG194 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy + //SEG195 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy + //SEG196 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#70 [phi:play_move_rotate::@4->collision#3] -- register_copy + jsr collision + //SEG197 [91] (byte) collision::return#13 ← (byte) collision::return#14 + // (byte) collision::return#13 = (byte) collision::return#14 // register copy reg byte a + //SEG198 play_move_rotate::@14 + //SEG199 [92] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 + // (byte~) play_move_rotate::$6 = (byte) collision::return#13 // register copy reg byte a + //SEG200 [93] (byte~) play_move_rotate::$8 ← (byte~) play_move_rotate::$6 & (const byte) COLLISION_LEFT#0|(const byte) COLLISION_RIGHT#0 -- vbuaa=vbuaa_band_vbuc1 + and #COLLISION_LEFT|COLLISION_RIGHT + //SEG201 [94] if((byte~) play_move_rotate::$8!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_rotate::@return -- vbuaa_neq_0_then_la1 + cmp #0 + bne b3 + //SEG202 play_move_rotate::@11 + //SEG203 [95] (byte) current_piece_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + lda orientation sta current_piece_orientation - //SEG172 [81] (byte*) current_piece_gfx#10 ← (byte*) current_piece#13 + (byte) current_piece_orientation#10 -- pbuz1=pbuz2_plus_vbuz3 + //SEG204 [96] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_piece_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 clc adc current_piece sta current_piece_gfx lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG173 [82] phi from play_moveother::@15 play_moveother::@18 play_moveother::@20 play_moveother::@4 to play_moveother::@1 [phi:play_moveother::@15/play_moveother::@18/play_moveother::@20/play_moveother::@4->play_moveother::@1] - b5: - //SEG174 [82] phi (byte) current_xpos#11 = (byte) current_xpos#19 [phi:play_moveother::@15/play_moveother::@18/play_moveother::@20/play_moveother::@4->play_moveother::@1#0] -- register_copy - //SEG175 [82] phi (byte*) current_piece_gfx#11 = (byte*) current_piece_gfx#10 [phi:play_moveother::@15/play_moveother::@18/play_moveother::@20/play_moveother::@4->play_moveother::@1#1] -- register_copy - //SEG176 [82] phi (byte) current_piece_orientation#11 = (byte) current_piece_orientation#10 [phi:play_moveother::@15/play_moveother::@18/play_moveother::@20/play_moveother::@4->play_moveother::@1#2] -- register_copy - //SEG177 [82] phi (byte) play_moveother::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_moveother::@15/play_moveother::@18/play_moveother::@20/play_moveother::@4->play_moveother::@1#3] -- vbuaa=vbuc1 + //SEG205 [81] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG206 [81] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG207 [81] phi (byte) current_piece_orientation#23 = (byte) current_piece_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG208 [81] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #1 - jmp b1 - //SEG178 [82] phi from play_moveother play_moveother::@14 play_moveother::@22 play_moveother::@23 to play_moveother::@1 [phi:play_moveother/play_moveother::@14/play_moveother::@22/play_moveother::@23->play_moveother::@1] - b6: - //SEG179 [82] phi (byte) current_xpos#11 = (byte) current_xpos#19 [phi:play_moveother/play_moveother::@14/play_moveother::@22/play_moveother::@23->play_moveother::@1#0] -- register_copy - //SEG180 [82] phi (byte*) current_piece_gfx#11 = (byte*) current_piece_gfx#18 [phi:play_moveother/play_moveother::@14/play_moveother::@22/play_moveother::@23->play_moveother::@1#1] -- register_copy - //SEG181 [82] phi (byte) current_piece_orientation#11 = (byte) current_piece_orientation#18 [phi:play_moveother/play_moveother::@14/play_moveother::@22/play_moveother::@23->play_moveother::@1#2] -- register_copy - //SEG182 [82] phi (byte) play_moveother::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_moveother/play_moveother::@14/play_moveother::@22/play_moveother::@23->play_moveother::@1#3] -- vbuaa=vbuc1 - lda #0 - //SEG183 play_moveother::@1 + jmp breturn + //SEG209 play_move_rotate::@1 b1: - //SEG184 play_moveother::@return - //SEG185 [83] return - rts - //SEG186 play_moveother::@4 - b4: - //SEG187 [84] (byte/signed word/word/dword/signed dword~) play_moveother::$11 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 + //SEG210 [97] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_piece_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 lda current_piece_orientation sec sbc #$10 - //SEG188 [85] (byte) current_piece_orientation#9 ← (byte/signed word/word/dword/signed dword~) play_moveother::$11 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG211 [98] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f - sta current_piece_orientation - //SEG189 [86] (byte*) current_piece_gfx#9 ← (byte*) current_piece#13 + (byte) current_piece_orientation#9 -- pbuz1=pbuz2_plus_vbuz3 - clc - adc current_piece - sta current_piece_gfx - lda #0 - adc current_piece+1 - sta current_piece_gfx+1 - jmp b5 - //SEG190 play_moveother::@3 - b3: - //SEG191 [87] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 - ldy current_xpos - iny - sty collision.xpos - //SEG192 [88] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuz1=vbuz2 - lda current_ypos - sta collision.ypos - //SEG193 [89] (byte*~) current_piece_gfx#110 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 - lda current_piece_gfx - sta current_piece_gfx_110 - lda current_piece_gfx+1 - sta current_piece_gfx_110+1 - //SEG194 [90] call collision - //SEG195 [103] phi from play_moveother::@3 to collision [phi:play_moveother::@3->collision] - //SEG196 [103] phi (byte) collision::xpos#8 = (byte) collision::xpos#2 [phi:play_moveother::@3->collision#0] -- register_copy - //SEG197 [103] phi (byte*) current_piece_gfx#46 = (byte*~) current_piece_gfx#110 [phi:play_moveother::@3->collision#1] -- register_copy - //SEG198 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_moveother::@3->collision#2] -- register_copy - jsr collision - //SEG199 [91] (byte) collision::return#12 ← (byte) collision::return#10 - // (byte) collision::return#12 = (byte) collision::return#10 // register copy reg byte a - //SEG200 play_moveother::@23 - //SEG201 [92] (byte~) play_moveother::$15 ← (byte) collision::return#12 - // (byte~) play_moveother::$15 = (byte) collision::return#12 // register copy reg byte a - //SEG202 [93] if((byte~) play_moveother::$15!=(const byte) COLLISION_NONE#0) goto play_moveother::@1 -- vbuaa_neq_vbuc1_then_la1 - cmp #COLLISION_NONE - bne b6 - //SEG203 play_moveother::@18 - //SEG204 [94] (byte) current_xpos#9 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 - inc current_xpos - jmp b5 - //SEG205 play_moveother::@2 - b2: - //SEG206 [95] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 - ldx current_xpos - dex - stx collision.xpos - //SEG207 [96] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuz1=vbuz2 - lda current_ypos - sta collision.ypos - //SEG208 [97] (byte*~) current_piece_gfx#109 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 - lda current_piece_gfx - sta current_piece_gfx_109 - lda current_piece_gfx+1 - sta current_piece_gfx_109+1 - //SEG209 [98] call collision - //SEG210 [103] phi from play_moveother::@2 to collision [phi:play_moveother::@2->collision] - //SEG211 [103] phi (byte) collision::xpos#8 = (byte) collision::xpos#1 [phi:play_moveother::@2->collision#0] -- register_copy - //SEG212 [103] phi (byte*) current_piece_gfx#46 = (byte*~) current_piece_gfx#109 [phi:play_moveother::@2->collision#1] -- register_copy - //SEG213 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_moveother::@2->collision#2] -- register_copy - jsr collision - //SEG214 [99] (byte) collision::return#11 ← (byte) collision::return#10 - // (byte) collision::return#11 = (byte) collision::return#10 // register copy reg byte a - //SEG215 play_moveother::@22 - //SEG216 [100] (byte~) play_moveother::$19 ← (byte) collision::return#11 - // (byte~) play_moveother::$19 = (byte) collision::return#11 // register copy reg byte a - //SEG217 [101] if((byte~) play_moveother::$19!=(const byte) COLLISION_NONE#0) goto play_moveother::@1 -- vbuaa_neq_vbuc1_then_la1 - cmp #COLLISION_NONE - bne b6 - //SEG218 play_moveother::@20 - //SEG219 [102] (byte) current_xpos#10 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 - dec current_xpos - jmp b5 + sta orientation + jmp b4 } -//SEG220 collision +//SEG212 collision collision: { - .label ypos = 4 .label xpos = 7 - .label line = $16 - .label playfield_line = $14 - .label i = $17 - .label l = 8 - .label i_2 = 9 - .label i_3 = 9 - .label i_11 = 9 - .label i_13 = 9 - //SEG221 [104] phi from collision to collision::@1 [phi:collision->collision::@1] - //SEG222 [104] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 - lda #0 - sta i_3 - //SEG223 [104] phi (byte) collision::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 - sta l - //SEG224 collision::@1 - b1: - //SEG225 [105] (byte) collision::line#0 ← (byte) collision::ypos#4 + (byte) collision::l#2 -- vbuz1=vbuz2_plus_vbuz3 - lda ypos + .label piece_gfx = 5 + .label ypos2 = 8 + .label playfield_line = $16 + .label i = $18 + .label col = $b + .label l = 9 + .label i_2 = $a + .label i_3 = $a + .label i_11 = $a + .label i_13 = $a + //SEG213 [100] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx + txa clc - adc l - sta line - //SEG226 [106] (byte~) collision::$1 ← (byte) collision::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + adc piece_gfx + sta piece_gfx + lda #0 + adc piece_gfx+1 + sta piece_gfx+1 + //SEG214 [101] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 + tya asl - //SEG227 [107] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) collision::$1) -- pbuz1=pptc1_derefidx_vbuaa - tay + sta ypos2 + //SEG215 [102] phi from collision to collision::@1 [phi:collision->collision::@1] + //SEG216 [102] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 + lda #0 + sta l + //SEG217 [102] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 + sta i_3 + //SEG218 [102] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy + //SEG219 collision::@1 + b1: + //SEG220 [103] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG228 [108] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] - //SEG229 [108] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuxx=vbuc1 + //SEG221 [104] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 + lda xpos + sta col + //SEG222 [105] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] + //SEG223 [105] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG230 [108] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#1] -- register_copy - //SEG231 collision::@2 + //SEG224 [105] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy + //SEG225 [105] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy + //SEG226 collision::@2 b2: - //SEG232 [109] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG227 [106] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG233 [110] if(*((byte*) current_piece_gfx#46 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG228 [107] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 - lda (current_piece_gfx_46),y + lda (piece_gfx),y cmp #0 beq b3 - //SEG234 collision::@8 - //SEG235 [111] if((byte) collision::line#0<(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 - lda line - cmp #PLAYFIELD_LINES + //SEG229 collision::@8 + //SEG230 [108] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 + lda ypos2 + cmp #2*PLAYFIELD_LINES bcc b4 - //SEG236 [112] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] - //SEG237 [112] phi (byte) collision::return#10 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuaa=vbuc1 + //SEG231 [109] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] + //SEG232 [109] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM - //SEG238 collision::@return + //SEG233 collision::@return breturn: - //SEG239 [113] return + //SEG234 [110] return rts - //SEG240 collision::@4 + //SEG235 collision::@4 b4: - //SEG241 [114] (byte) collision::col#0 ← (byte) collision::xpos#8 + (byte) collision::c#2 -- vbuyy=vbuz1_plus_vbuxx - txa - clc - adc xpos - tay - //SEG242 [115] (byte~) collision::$7 ← (byte) collision::col#0 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuyy_band_vbuc1 - tya - and #$80 - //SEG243 [116] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuaa_eq_0_then_la1 + //SEG236 [111] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + lda #$80 + and col + //SEG237 [112] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG244 [112] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] - //SEG245 [112] phi (byte) collision::return#10 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuaa=vbuc1 + //SEG238 [109] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] + //SEG239 [109] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT jmp breturn - //SEG246 collision::@5 + //SEG240 collision::@5 b5: - //SEG247 [117] if((byte) collision::col#0<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuyy_lt_vbuc1_then_la1 - cpy #PLAYFIELD_COLS + //SEG241 [113] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 + lda col + cmp #PLAYFIELD_COLS bcc b6 - //SEG248 [112] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] - //SEG249 [112] phi (byte) collision::return#10 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuaa=vbuc1 + //SEG242 [109] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] + //SEG243 [109] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT jmp breturn - //SEG250 collision::@6 + //SEG244 collision::@6 b6: - //SEG251 [118] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuyy_eq_0_then_la1 + //SEG245 [114] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG252 [112] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] - //SEG253 [112] phi (byte) collision::return#10 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuaa=vbuc1 + //SEG246 [109] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] + //SEG247 [109] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD jmp breturn - //SEG254 collision::@3 + //SEG248 collision::@3 b3: - //SEG255 [119] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuxx=_inc_vbuxx + //SEG249 [115] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 + inc col + //SEG250 [116] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG256 [120] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuxx_neq_vbuc1_then_la1 + //SEG251 [117] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b21 - //SEG257 collision::@17 - //SEG258 [121] (byte) collision::l#1 ← ++ (byte) collision::l#2 -- vbuz1=_inc_vbuz1 + //SEG252 collision::@17 + //SEG253 [118] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + lda ypos2 + clc + adc #2 + sta ypos2 + //SEG254 [119] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG259 [122] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG255 [120] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG260 [112] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] - //SEG261 [112] phi (byte) collision::return#10 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuaa=vbuc1 + //SEG256 [109] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] + //SEG257 [109] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE jmp breturn - //SEG262 collision::@20 + //SEG258 collision::@20 b20: - //SEG263 [123] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG259 [121] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG264 [104] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] - //SEG265 [104] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#0] -- register_copy - //SEG266 [104] phi (byte) collision::l#2 = (byte) collision::l#1 [phi:collision::@20->collision::@1#1] -- register_copy + //SEG260 [102] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] + //SEG261 [102] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy + //SEG262 [102] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy + //SEG263 [102] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy jmp b1 - //SEG267 collision::@21 + //SEG264 collision::@21 b21: - //SEG268 [124] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG265 [122] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG269 [108] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] - //SEG270 [108] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy - //SEG271 [108] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#1] -- register_copy + //SEG266 [105] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] + //SEG267 [105] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy + //SEG268 [105] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy + //SEG269 [105] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy jmp b2 } -//SEG272 play_movedown -play_movedown: { - //SEG273 [125] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 +//SEG270 play_move_leftright +play_move_leftright: { + //SEG271 [123] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + cmp #KEY_COMMA + beq b1 + //SEG272 play_move_leftright::@6 + //SEG273 [124] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + cmp #KEY_DOT + bne b3 + //SEG274 play_move_leftright::@7 + //SEG275 [125] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + ldy current_xpos + iny + sty collision.xpos + //SEG276 [126] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + ldy current_ypos + //SEG277 [127] (byte) collision::orientation#2 ← (byte) current_piece_orientation#18 -- vbuxx=vbuz1 + ldx current_piece_orientation + //SEG278 [128] (byte*~) current_piece#69 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_69 + lda current_piece+1 + sta current_piece_69+1 + //SEG279 [129] call collision + //SEG280 [99] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] + //SEG281 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy + //SEG282 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy + //SEG283 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy + //SEG284 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#69 [phi:play_move_leftright::@7->collision#3] -- register_copy + jsr collision + //SEG285 [130] (byte) collision::return#12 ← (byte) collision::return#14 + // (byte) collision::return#12 = (byte) collision::return#14 // register copy reg byte a + //SEG286 play_move_leftright::@15 + //SEG287 [131] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 + // (byte~) play_move_leftright::$4 = (byte) collision::return#12 // register copy reg byte a + //SEG288 [132] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + cmp #COLLISION_NONE + bne b3 + //SEG289 play_move_leftright::@8 + //SEG290 [133] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 + inc current_xpos + //SEG291 [134] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] + b2: + //SEG292 [134] phi (byte) current_xpos#23 = (byte) current_xpos#9 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG293 [134] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 + lda #1 + jmp breturn + //SEG294 [134] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] + b3: + //SEG295 [134] phi (byte) current_xpos#23 = (byte) current_xpos#19 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG296 [134] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 + lda #0 + //SEG297 play_move_leftright::@return + breturn: + //SEG298 [135] return + rts + //SEG299 play_move_leftright::@1 + b1: + //SEG300 [136] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + ldx current_xpos + dex + stx collision.xpos + //SEG301 [137] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + ldy current_ypos + //SEG302 [138] (byte) collision::orientation#1 ← (byte) current_piece_orientation#18 -- vbuxx=vbuz1 + ldx current_piece_orientation + //SEG303 [139] (byte*~) current_piece#68 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_68 + lda current_piece+1 + sta current_piece_68+1 + //SEG304 [140] call collision + //SEG305 [99] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] + //SEG306 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy + //SEG307 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy + //SEG308 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy + //SEG309 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#68 [phi:play_move_leftright::@1->collision#3] -- register_copy + jsr collision + //SEG310 [141] (byte) collision::return#1 ← (byte) collision::return#14 + // (byte) collision::return#1 = (byte) collision::return#14 // register copy reg byte a + //SEG311 play_move_leftright::@14 + //SEG312 [142] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 + // (byte~) play_move_leftright::$8 = (byte) collision::return#1 // register copy reg byte a + //SEG313 [143] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + cmp #COLLISION_NONE + bne b3 + //SEG314 play_move_leftright::@11 + //SEG315 [144] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 + dec current_xpos + jmp b2 +} +//SEG316 play_move_down +play_move_down: { + //SEG317 [145] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG274 [126] if((byte) play_movedown::key_event#0!=(const byte) KEY_SPACE#0) goto play_movedown::@1 -- vbuaa_neq_vbuc1_then_la1 + //SEG318 [146] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_SPACE bne b3 - //SEG275 [127] phi from play_movedown to play_movedown::@8 [phi:play_movedown->play_movedown::@8] - //SEG276 play_movedown::@8 - //SEG277 [128] phi from play_movedown::@8 to play_movedown::@1 [phi:play_movedown::@8->play_movedown::@1] - //SEG278 [128] phi (byte) play_movedown::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_movedown::@8->play_movedown::@1#0] -- vbuxx=vbuc1 + //SEG319 [147] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG320 play_move_down::@8 + //SEG321 [148] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG322 [148] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #1 jmp b1 - //SEG279 [128] phi from play_movedown to play_movedown::@1 [phi:play_movedown->play_movedown::@1] + //SEG323 [148] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b3: - //SEG280 [128] phi (byte) play_movedown::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_movedown->play_movedown::@1#0] -- vbuxx=vbuc1 + //SEG324 [148] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG281 play_movedown::@1 + //SEG325 play_move_down::@1 b1: - //SEG282 [129] call keyboard_event_pressed - //SEG283 [173] phi from play_movedown::@1 to keyboard_event_pressed [phi:play_movedown::@1->keyboard_event_pressed] - //SEG284 [173] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_movedown::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG326 [149] call keyboard_event_pressed + //SEG327 [194] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG328 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG285 [130] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + //SEG329 [150] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#12 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG286 play_movedown::@17 - //SEG287 [131] (byte~) play_movedown::$2 ← (byte) keyboard_event_pressed::return#12 - // (byte~) play_movedown::$2 = (byte) keyboard_event_pressed::return#12 // register copy reg byte a - //SEG288 [132] if((byte~) play_movedown::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movedown::@2 -- vbuaa_eq_0_then_la1 + //SEG330 play_move_down::@17 + //SEG331 [151] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + // (byte~) play_move_down::$2 = (byte) keyboard_event_pressed::return#12 // register copy reg byte a + //SEG332 [152] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG289 play_movedown::@9 - //SEG290 [133] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate_fast#0) goto play_movedown::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG333 play_move_down::@9 + //SEG334 [153] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_rate_fast bcc b2 - //SEG291 play_movedown::@10 - //SEG292 [134] (byte) play_movedown::movedown#2 ← ++ (byte) play_movedown::movedown#10 -- vbuxx=_inc_vbuxx + //SEG335 play_move_down::@10 + //SEG336 [154] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx inx - //SEG293 [135] phi from play_movedown::@10 play_movedown::@17 play_movedown::@9 to play_movedown::@2 [phi:play_movedown::@10/play_movedown::@17/play_movedown::@9->play_movedown::@2] - //SEG294 [135] phi (byte) play_movedown::movedown#7 = (byte) play_movedown::movedown#2 [phi:play_movedown::@10/play_movedown::@17/play_movedown::@9->play_movedown::@2#0] -- register_copy - //SEG295 play_movedown::@2 + //SEG337 [155] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] + //SEG338 [155] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy + //SEG339 play_move_down::@2 b2: - //SEG296 [136] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate#0) goto play_movedown::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG340 [156] if((byte) current_movedown_counter#10<(const byte) current_movedown_rate#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_rate bcc b4 - //SEG297 play_movedown::@11 - //SEG298 [137] (byte) play_movedown::movedown#3 ← ++ (byte) play_movedown::movedown#7 -- vbuxx=_inc_vbuxx + //SEG341 play_move_down::@11 + //SEG342 [157] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx inx - //SEG299 [138] phi from play_movedown::@11 play_movedown::@2 to play_movedown::@4 [phi:play_movedown::@11/play_movedown::@2->play_movedown::@4] - //SEG300 [138] phi (byte) play_movedown::movedown#6 = (byte) play_movedown::movedown#3 [phi:play_movedown::@11/play_movedown::@2->play_movedown::@4#0] -- register_copy - //SEG301 play_movedown::@4 + //SEG343 [158] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] + //SEG344 [158] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy + //SEG345 play_move_down::@4 b4: - //SEG302 [139] if((byte) play_movedown::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_movedown::@return -- vbuxx_eq_0_then_la1 + //SEG346 [159] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 cpx #0 beq b5 - //SEG303 play_movedown::@12 - //SEG304 [140] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG347 play_move_down::@12 + //SEG348 [160] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 ldy current_ypos iny - sty collision.ypos - //SEG305 [141] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG349 [161] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 lda current_xpos sta collision.xpos - //SEG306 [142] (byte*~) current_piece_gfx#108 ← (byte*) current_piece_gfx#16 -- pbuz1=pbuz2 - lda current_piece_gfx - sta current_piece_gfx_108 - lda current_piece_gfx+1 - sta current_piece_gfx_108+1 - //SEG307 [143] call collision - //SEG308 [103] phi from play_movedown::@12 to collision [phi:play_movedown::@12->collision] - //SEG309 [103] phi (byte) collision::xpos#8 = (byte) collision::xpos#0 [phi:play_movedown::@12->collision#0] -- register_copy - //SEG310 [103] phi (byte*) current_piece_gfx#46 = (byte*~) current_piece_gfx#108 [phi:play_movedown::@12->collision#1] -- register_copy - //SEG311 [103] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_movedown::@12->collision#2] -- register_copy + //SEG350 [162] (byte) collision::orientation#0 ← (byte) current_piece_orientation#15 -- vbuxx=vbuz1 + ldx current_piece_orientation + //SEG351 [163] (byte*~) current_piece#67 ← (byte*) current_piece#11 -- pbuz1=pbuz2 + lda current_piece + sta current_piece_67 + lda current_piece+1 + sta current_piece_67+1 + //SEG352 [164] call collision + //SEG353 [99] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] + //SEG354 [99] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy + //SEG355 [99] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy + //SEG356 [99] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy + //SEG357 [99] phi (byte*) current_piece#15 = (byte*~) current_piece#67 [phi:play_move_down::@12->collision#3] -- register_copy jsr collision - //SEG312 [144] (byte) collision::return#0 ← (byte) collision::return#10 - // (byte) collision::return#0 = (byte) collision::return#10 // register copy reg byte a - //SEG313 play_movedown::@18 - //SEG314 [145] (byte~) play_movedown::$12 ← (byte) collision::return#0 - // (byte~) play_movedown::$12 = (byte) collision::return#0 // register copy reg byte a - //SEG315 [146] if((byte~) play_movedown::$12==(const byte) COLLISION_NONE#0) goto play_movedown::@6 -- vbuaa_eq_vbuc1_then_la1 + //SEG358 [165] (byte) collision::return#0 ← (byte) collision::return#14 + // (byte) collision::return#0 = (byte) collision::return#14 // register copy reg byte a + //SEG359 play_move_down::@18 + //SEG360 [166] (byte~) play_move_down::$12 ← (byte) collision::return#0 + // (byte~) play_move_down::$12 = (byte) collision::return#0 // register copy reg byte a + //SEG361 [167] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 cmp #COLLISION_NONE beq b6 - //SEG316 [147] phi from play_movedown::@18 to play_movedown::@13 [phi:play_movedown::@18->play_movedown::@13] - //SEG317 play_movedown::@13 - //SEG318 [148] call lock_current - //SEG319 [157] phi from play_movedown::@13 to lock_current [phi:play_movedown::@13->lock_current] + //SEG362 [168] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG363 play_move_down::@13 + //SEG364 [169] call lock_current + //SEG365 [178] phi from play_move_down::@13 to lock_current [phi:play_move_down::@13->lock_current] jsr lock_current - //SEG320 [149] phi from play_movedown::@13 to play_movedown::@19 [phi:play_movedown::@13->play_movedown::@19] - //SEG321 play_movedown::@19 - //SEG322 [150] call spawn_current - //SEG323 [155] phi from play_movedown::@19 to spawn_current [phi:play_movedown::@19->spawn_current] + //SEG366 [170] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG367 play_move_down::@19 + //SEG368 [171] call spawn_current + //SEG369 [176] phi from play_move_down::@19 to spawn_current [phi:play_move_down::@19->spawn_current] jsr spawn_current - //SEG324 [151] phi from play_movedown::@19 to play_movedown::@7 [phi:play_movedown::@19->play_movedown::@7] - //SEG325 [151] phi (byte) current_xpos#35 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_movedown::@19->play_movedown::@7#0] -- vbuz1=vbuc1 + //SEG370 [172] phi from play_move_down::@19 to play_move_down::@7 [phi:play_move_down::@19->play_move_down::@7] + //SEG371 [172] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@19->play_move_down::@7#0] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG326 [151] phi (byte) current_piece_color#23 = (const byte) GREEN#0 [phi:play_movedown::@19->play_movedown::@7#1] -- vbuz1=vbuc1 + //SEG372 [172] phi (byte) current_piece_color#23 = (const byte) GREEN#0 [phi:play_move_down::@19->play_move_down::@7#1] -- vbuz1=vbuc1 lda #GREEN sta current_piece_color - //SEG327 [151] phi (byte*) current_piece_gfx#30 = (const byte[4*4*4]) piece_t#0 [phi:play_movedown::@19->play_movedown::@7#2] -- pbuz1=pbuc1 + //SEG373 [172] phi (byte*) current_piece_gfx#29 = (const byte[4*4*4]) piece_t#0 [phi:play_move_down::@19->play_move_down::@7#2] -- pbuz1=pbuc1 lda #piece_t sta current_piece_gfx+1 - //SEG328 [151] phi (byte) current_piece_orientation#29 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_movedown::@19->play_movedown::@7#3] -- vbuz1=vbuc1 + //SEG374 [172] phi (byte) current_piece_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 sta current_piece_orientation - //SEG329 [151] phi (byte*) current_piece#23 = (const byte[4*4*4]) piece_t#0 [phi:play_movedown::@19->play_movedown::@7#4] -- pbuz1=pbuc1 + //SEG375 [172] phi (byte*) current_piece#23 = (const byte[4*4*4]) piece_t#0 [phi:play_move_down::@19->play_move_down::@7#4] -- pbuz1=pbuc1 lda #piece_t sta current_piece+1 - //SEG330 [151] phi (byte) current_ypos#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_movedown::@19->play_movedown::@7#5] -- vbuz1=vbuc1 + //SEG376 [172] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@19->play_move_down::@7#5] -- vbuz1=vbuc1 lda #0 sta current_ypos - //SEG331 play_movedown::@7 + //SEG377 play_move_down::@7 b7: - //SEG332 [152] phi from play_movedown::@7 to play_movedown::@return [phi:play_movedown::@7->play_movedown::@return] - //SEG333 [152] phi (byte) current_xpos#19 = (byte) current_xpos#35 [phi:play_movedown::@7->play_movedown::@return#0] -- register_copy - //SEG334 [152] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_movedown::@7->play_movedown::@return#1] -- register_copy - //SEG335 [152] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#30 [phi:play_movedown::@7->play_movedown::@return#2] -- register_copy - //SEG336 [152] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#29 [phi:play_movedown::@7->play_movedown::@return#3] -- register_copy - //SEG337 [152] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_movedown::@7->play_movedown::@return#4] -- register_copy - //SEG338 [152] phi (byte) current_ypos#16 = (byte) current_ypos#30 [phi:play_movedown::@7->play_movedown::@return#5] -- register_copy - //SEG339 [152] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_movedown::@7->play_movedown::@return#6] -- vbuz1=vbuc1 + //SEG378 [173] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG379 [173] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG380 [173] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG381 [173] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG382 [173] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG383 [173] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG384 [173] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG385 [173] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG340 [152] phi (byte) play_movedown::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_movedown::@7->play_movedown::@return#7] -- vbuxx=vbuc1 + //SEG386 [173] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuxx=vbuc1 ldx #1 jmp breturn - //SEG341 [152] phi from play_movedown::@4 to play_movedown::@return [phi:play_movedown::@4->play_movedown::@return] + //SEG387 [173] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] b5: - //SEG342 [152] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_movedown::@4->play_movedown::@return#0] -- register_copy - //SEG343 [152] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_movedown::@4->play_movedown::@return#1] -- register_copy - //SEG344 [152] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#16 [phi:play_movedown::@4->play_movedown::@return#2] -- register_copy - //SEG345 [152] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#16 [phi:play_movedown::@4->play_movedown::@return#3] -- register_copy - //SEG346 [152] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_movedown::@4->play_movedown::@return#4] -- register_copy - //SEG347 [152] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_movedown::@4->play_movedown::@return#5] -- register_copy - //SEG348 [152] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_movedown::@4->play_movedown::@return#6] -- register_copy - //SEG349 [152] phi (byte) play_movedown::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_movedown::@4->play_movedown::@return#7] -- vbuxx=vbuc1 + //SEG388 [173] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG389 [173] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG390 [173] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG391 [173] phi (byte) current_piece_orientation#18 = (byte) current_piece_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG392 [173] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG393 [173] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG394 [173] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG395 [173] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuxx=vbuc1 ldx #0 - //SEG350 play_movedown::@return + //SEG396 play_move_down::@return breturn: - //SEG351 [153] return + //SEG397 [174] return rts - //SEG352 play_movedown::@6 + //SEG398 play_move_down::@6 b6: - //SEG353 [154] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 + //SEG399 [175] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG354 [151] phi from play_movedown::@6 to play_movedown::@7 [phi:play_movedown::@6->play_movedown::@7] - //SEG355 [151] phi (byte) current_xpos#35 = (byte) current_xpos#16 [phi:play_movedown::@6->play_movedown::@7#0] -- register_copy - //SEG356 [151] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_movedown::@6->play_movedown::@7#1] -- register_copy - //SEG357 [151] phi (byte*) current_piece_gfx#30 = (byte*) current_piece_gfx#16 [phi:play_movedown::@6->play_movedown::@7#2] -- register_copy - //SEG358 [151] phi (byte) current_piece_orientation#29 = (byte) current_piece_orientation#16 [phi:play_movedown::@6->play_movedown::@7#3] -- register_copy - //SEG359 [151] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_movedown::@6->play_movedown::@7#4] -- register_copy - //SEG360 [151] phi (byte) current_ypos#30 = (byte) current_ypos#4 [phi:play_movedown::@6->play_movedown::@7#5] -- register_copy + //SEG400 [172] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG401 [172] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG402 [172] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG403 [172] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG404 [172] phi (byte) current_piece_orientation#33 = (byte) current_piece_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG405 [172] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG406 [172] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG361 spawn_current +//SEG407 spawn_current spawn_current: { - //SEG362 spawn_current::@return - //SEG363 [156] return + //SEG408 spawn_current::@return + //SEG409 [177] return rts } -//SEG364 lock_current +//SEG410 lock_current lock_current: { .label playfield_line = 5 .label i = 4 .label l = 3 - //SEG365 [158] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] - //SEG366 [158] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 + //SEG411 [179] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] + //SEG412 [179] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG367 [158] phi (byte) lock_current::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 + //SEG413 [179] phi (byte) lock_current::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 sta l - //SEG368 [158] phi from lock_current::@5 to lock_current::@1 [phi:lock_current::@5->lock_current::@1] - //SEG369 [158] phi (byte) lock_current::i#3 = (byte) lock_current::i#1 [phi:lock_current::@5->lock_current::@1#0] -- register_copy - //SEG370 [158] phi (byte) lock_current::l#2 = (byte) lock_current::l#1 [phi:lock_current::@5->lock_current::@1#1] -- register_copy - //SEG371 lock_current::@1 + //SEG414 [179] phi from lock_current::@5 to lock_current::@1 [phi:lock_current::@5->lock_current::@1] + //SEG415 [179] phi (byte) lock_current::i#3 = (byte) lock_current::i#1 [phi:lock_current::@5->lock_current::@1#0] -- register_copy + //SEG416 [179] phi (byte) lock_current::l#2 = (byte) lock_current::l#1 [phi:lock_current::@5->lock_current::@1#1] -- register_copy + //SEG417 lock_current::@1 b1: - //SEG372 [159] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 -- vbuaa=vbuz1_plus_vbuz2 + //SEG418 [180] (byte) lock_current::line#0 ← (byte) current_ypos#12 + (byte) lock_current::l#2 -- vbuaa=vbuz1_plus_vbuz2 lda current_ypos clc adc l - //SEG373 [160] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_rol_1 + //SEG419 [181] (byte~) lock_current::$1 ← (byte) lock_current::line#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_rol_1 asl - //SEG374 [161] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) -- pbuz1=pptc1_derefidx_vbuaa + //SEG420 [182] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) lock_current::$1) -- pbuz1=pptc1_derefidx_vbuaa tay lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG375 [162] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] - //SEG376 [162] 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 + //SEG421 [183] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] + //SEG422 [183] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG377 [162] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#1] -- register_copy - //SEG378 [162] phi from lock_current::@3 to lock_current::@2 [phi:lock_current::@3->lock_current::@2] - //SEG379 [162] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@3->lock_current::@2#0] -- register_copy - //SEG380 [162] phi (byte) lock_current::i#2 = (byte) lock_current::i#1 [phi:lock_current::@3->lock_current::@2#1] -- register_copy - //SEG381 lock_current::@2 + //SEG423 [183] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#1] -- register_copy + //SEG424 [183] phi from lock_current::@3 to lock_current::@2 [phi:lock_current::@3->lock_current::@2] + //SEG425 [183] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@3->lock_current::@2#0] -- register_copy + //SEG426 [183] phi (byte) lock_current::i#2 = (byte) lock_current::i#1 [phi:lock_current::@3->lock_current::@2#1] -- register_copy + //SEG427 lock_current::@2 b2: - //SEG382 [163] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#16 + (byte) lock_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG428 [184] (byte) lock_current::cell#0 ← *((byte*) current_piece_gfx#15 + (byte) lock_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i lda (current_piece_gfx),y - //SEG383 [164] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz1 + //SEG429 [185] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG384 [165] if((byte) lock_current::cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- vbuaa_eq_0_then_la1 + //SEG430 [186] if((byte) lock_current::cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 - //SEG385 lock_current::@4 - //SEG386 [166] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 -- vbuaa=vbuz1_plus_vbuxx + //SEG431 lock_current::@4 + //SEG432 [187] (byte) lock_current::col#0 ← (byte) current_xpos#16 + (byte) lock_current::c#2 -- vbuaa=vbuz1_plus_vbuxx txa clc adc current_xpos - //SEG387 [167] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuaa=vbuz2 + //SEG433 [188] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#0) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuaa=vbuz2 tay lda current_piece_color sta (playfield_line),y - //SEG388 lock_current::@3 + //SEG434 lock_current::@3 b3: - //SEG389 [168] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG435 [189] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG390 [169] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG436 [190] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b2 - //SEG391 lock_current::@5 - //SEG392 [170] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#2 -- vbuz1=_inc_vbuz1 + //SEG437 lock_current::@5 + //SEG438 [191] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG393 [171] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG439 [192] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1 - //SEG394 lock_current::@return - //SEG395 [172] return + //SEG440 lock_current::@return + //SEG441 [193] return rts } -//SEG396 keyboard_event_pressed +//SEG442 keyboard_event_pressed keyboard_event_pressed: { .label row_bits = 7 .label keycode = 4 - //SEG397 [174] (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 + //SEG443 [195] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 lda keycode lsr lsr lsr - //SEG398 [175] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG444 [196] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda keyboard_scan_values,y sta row_bits - //SEG399 [176] (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 + //SEG445 [197] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 lda #7 and keycode - //SEG400 [177] (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 + //SEG446 [198] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa tay lda keyboard_matrix_col_bitmask,y and row_bits - //SEG401 keyboard_event_pressed::@return - //SEG402 [178] return + //SEG447 keyboard_event_pressed::@return + //SEG448 [199] return rts } -//SEG403 keyboard_event_get +//SEG449 keyboard_event_get keyboard_event_get: { - //SEG404 [179] 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 + //SEG450 [200] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq b1 - //SEG405 keyboard_event_get::@3 - //SEG406 [180] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG451 keyboard_event_get::@3 + //SEG452 [201] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG407 [181] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG453 [202] (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 - //SEG408 [182] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] - //SEG409 [182] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG410 [182] 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 + //SEG454 [203] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG455 [203] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG456 [203] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG411 [182] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG457 [203] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] b1: - //SEG412 [182] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG413 [182] 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 + //SEG458 [203] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG459 [203] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 lda #$ff - //SEG414 keyboard_event_get::@return + //SEG460 keyboard_event_get::@return breturn: - //SEG415 [183] return + //SEG461 [204] return rts } -//SEG416 keyboard_event_scan +//SEG462 keyboard_event_scan keyboard_event_scan: { .label row_scan = 8 .label keycode = 7 .label row = 4 - //SEG417 [185] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] - //SEG418 [185] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG419 [185] 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 + //SEG463 [206] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG464 [206] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG465 [206] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG420 [185] 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 + //SEG466 [206] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 sta row - //SEG421 [185] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] - //SEG422 [185] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG423 [185] 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 - //SEG424 [185] 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 - //SEG425 keyboard_event_scan::@1 + //SEG467 [206] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG468 [206] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG469 [206] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG470 [206] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy + //SEG471 keyboard_event_scan::@1 b1: - //SEG426 [186] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG472 [207] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG427 [187] call keyboard_matrix_read + //SEG473 [208] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG428 [188] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG474 [209] (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 - //SEG429 keyboard_event_scan::@25 - //SEG430 [189] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG475 keyboard_event_scan::@25 + //SEG476 [210] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG431 [190] 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 + //SEG477 [211] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 ldy row cmp keyboard_scan_values,y bne b2 - //SEG432 keyboard_event_scan::@13 - //SEG433 [191] (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 + //SEG478 keyboard_event_scan::@13 + //SEG479 [212] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG434 [192] 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] - //SEG435 [192] 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 - //SEG436 [192] 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 - //SEG437 keyboard_event_scan::@3 + //SEG480 [213] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] + //SEG481 [213] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG482 [213] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy + //SEG483 keyboard_event_scan::@3 b3: - //SEG438 [193] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG484 [214] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG439 [194] 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 + //SEG485 [215] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1 - //SEG440 [195] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] - //SEG441 keyboard_event_scan::@20 - //SEG442 [196] call keyboard_event_pressed - //SEG443 [173] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] - //SEG444 [173] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG486 [216] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG487 keyboard_event_scan::@20 + //SEG488 [217] call keyboard_event_pressed + //SEG489 [194] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG490 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG445 [197] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG491 [218] (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 - //SEG446 keyboard_event_scan::@26 - //SEG447 [198] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG492 keyboard_event_scan::@26 + //SEG493 [219] (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 - //SEG448 [199] 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 + //SEG494 [220] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG449 [200] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] - //SEG450 keyboard_event_scan::@21 - //SEG451 [201] 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] - //SEG452 keyboard_event_scan::@9 - //SEG453 [202] call keyboard_event_pressed - //SEG454 [173] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] - //SEG455 [173] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG495 [221] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG496 keyboard_event_scan::@21 + //SEG497 [222] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG498 keyboard_event_scan::@9 + //SEG499 [223] call keyboard_event_pressed + //SEG500 [194] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG501 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG456 [203] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG502 [224] (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 - //SEG457 keyboard_event_scan::@27 - //SEG458 [204] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG503 keyboard_event_scan::@27 + //SEG504 [225] (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 - //SEG459 [205] 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 + //SEG505 [226] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG460 [206] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] - //SEG461 keyboard_event_scan::@22 - //SEG462 [207] 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] - //SEG463 keyboard_event_scan::@10 - //SEG464 [208] call keyboard_event_pressed - //SEG465 [173] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] - //SEG466 [173] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG506 [227] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] + //SEG507 keyboard_event_scan::@22 + //SEG508 [228] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] + //SEG509 keyboard_event_scan::@10 + //SEG510 [229] call keyboard_event_pressed + //SEG511 [194] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG512 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG467 [209] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG513 [230] (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 - //SEG468 keyboard_event_scan::@28 - //SEG469 [210] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG514 keyboard_event_scan::@28 + //SEG515 [231] (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 - //SEG470 [211] 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 + //SEG516 [232] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG471 [212] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] - //SEG472 keyboard_event_scan::@23 - //SEG473 [213] 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] - //SEG474 keyboard_event_scan::@11 - //SEG475 [214] call keyboard_event_pressed - //SEG476 [173] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] - //SEG477 [173] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG517 [233] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] + //SEG518 keyboard_event_scan::@23 + //SEG519 [234] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] + //SEG520 keyboard_event_scan::@11 + //SEG521 [235] call keyboard_event_pressed + //SEG522 [194] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG523 [194] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG478 [215] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG524 [236] (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 - //SEG479 keyboard_event_scan::@29 - //SEG480 [216] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + //SEG525 keyboard_event_scan::@29 + //SEG526 [237] (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 - //SEG481 [217] 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 + //SEG527 [238] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 cmp #0 - //SEG482 [218] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] - //SEG483 keyboard_event_scan::@24 - //SEG484 keyboard_event_scan::@return - //SEG485 [219] return + //SEG528 [239] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] + //SEG529 keyboard_event_scan::@24 + //SEG530 keyboard_event_scan::@return + //SEG531 [240] return rts - //SEG486 [220] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG532 [241] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b2: - //SEG487 [220] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG488 [220] 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 - //SEG489 [220] 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 + //SEG533 [241] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG534 [241] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG535 [241] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 ldx #0 - //SEG490 [220] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] - //SEG491 [220] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG492 [220] 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 - //SEG493 [220] 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 - //SEG494 keyboard_event_scan::@4 + //SEG536 [241] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG537 [241] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG538 [241] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG539 [241] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy + //SEG540 keyboard_event_scan::@4 b4: - //SEG495 [221] (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 + //SEG541 [242] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 lda row_scan ldy row eor keyboard_scan_values,y - //SEG496 [222] (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 + //SEG542 [243] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx and keyboard_matrix_col_bitmask,x - //SEG497 [223] 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 + //SEG543 [244] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG498 keyboard_event_scan::@15 - //SEG499 [224] 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 + //SEG544 keyboard_event_scan::@15 + //SEG545 [245] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5 - //SEG500 keyboard_event_scan::@16 - //SEG501 [225] (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 + //SEG546 keyboard_event_scan::@16 + //SEG547 [246] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx lda keyboard_matrix_col_bitmask,x and row_scan - //SEG502 [226] 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 + //SEG548 [247] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 - //SEG503 keyboard_event_scan::@17 - //SEG504 [227] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG549 keyboard_event_scan::@17 + //SEG550 [248] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG505 [228] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG551 [249] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG506 [229] 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] - //SEG507 [229] 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 - //SEG508 keyboard_event_scan::@5 + //SEG552 [250] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] + //SEG553 [250] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG554 keyboard_event_scan::@5 b5: - //SEG509 [230] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG555 [251] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG510 [231] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG556 [252] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG511 [232] 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 + //SEG557 [253] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b4 - //SEG512 keyboard_event_scan::@19 - //SEG513 [233] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG558 keyboard_event_scan::@19 + //SEG559 [254] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3 - //SEG514 keyboard_event_scan::@7 + //SEG560 keyboard_event_scan::@7 b7: - //SEG515 [234] (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 + //SEG561 [255] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 lda #$40 ora keycode - //SEG516 [235] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG562 [256] *((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 - //SEG517 [236] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG563 [257] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5 } -//SEG518 keyboard_matrix_read +//SEG564 keyboard_matrix_read keyboard_matrix_read: { - //SEG519 [237] *((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 + //SEG565 [258] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A - //SEG520 [238] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG566 [259] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff - //SEG521 keyboard_matrix_read::@return - //SEG522 [239] return + //SEG567 keyboard_matrix_read::@return + //SEG568 [260] return rts } -//SEG523 init +//SEG569 init init: { - .label _13 = $b + .label _13 = $c .label li = 5 .label pli = 5 .label line = 5 .label l = 2 - //SEG524 [241] call fill - //SEG525 [266] phi from init to fill [phi:init->fill] - //SEG526 [266] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:init->fill#0] -- vbuxx=vbuc1 + //SEG570 [262] call fill + //SEG571 [287] phi from init to fill [phi:init->fill] + //SEG572 [287] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:init->fill#0] -- vbuxx=vbuc1 ldx #$a0 - //SEG527 [266] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:init->fill#1] -- pbuz1=pbuc1 + //SEG573 [287] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:init->fill#1] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG528 [242] phi from init to init::@9 [phi:init->init::@9] - //SEG529 init::@9 - //SEG530 [243] call fill - //SEG531 [266] phi from init::@9 to fill [phi:init::@9->fill] - //SEG532 [266] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@9->fill#0] -- vbuxx=vbuc1 + //SEG574 [263] phi from init to init::@9 [phi:init->init::@9] + //SEG575 init::@9 + //SEG576 [264] call fill + //SEG577 [287] phi from init::@9 to fill [phi:init::@9->fill] + //SEG578 [287] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:init::@9->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG533 [266] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:init::@9->fill#1] -- pbuz1=pbuc1 + //SEG579 [287] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:init::@9->fill#1] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG534 [244] phi from init::@9 to init::@1 [phi:init::@9->init::@1] - //SEG535 [244] phi (byte*) init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:init::@9->init::@1#0] -- pbuz1=pbuc1 + //SEG580 [265] phi from init::@9 to init::@1 [phi:init::@9->init::@1] + //SEG581 [265] phi (byte*) init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:init::@9->init::@1#0] -- pbuz1=pbuc1 lda #COLS+$28+$f sta li+1 - //SEG536 [244] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@9->init::@1#1] -- vbuxx=vbuc1 + //SEG582 [265] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@9->init::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG537 [244] phi from init::@1 to init::@1 [phi:init::@1->init::@1] - //SEG538 [244] phi (byte*) init::li#2 = (byte*) init::li#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG539 [244] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#1] -- register_copy - //SEG540 init::@1 + //SEG583 [265] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG584 [265] phi (byte*) init::li#2 = (byte*) init::li#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG585 [265] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#1] -- register_copy + //SEG586 init::@1 b1: - //SEG541 [245] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG587 [266] (byte~) init::$5 ← (byte) init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG542 [246] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG588 [267] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) init::$5) ← (byte*) init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li sta screen_lines,y lda li+1 sta screen_lines+1,y - //SEG543 [247] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG589 [268] (byte*) init::li#1 ← (byte*) init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li clc adc #$28 @@ -11391,34 +11892,34 @@ init: { bcc !+ inc li+1 !: - //SEG544 [248] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx + //SEG590 [269] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG545 [249] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG591 [270] if((byte) init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES+2+1 bne b1 - //SEG546 [250] phi from init::@1 to init::@2 [phi:init::@1->init::@2] - //SEG547 [250] phi (byte*) init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:init::@1->init::@2#0] -- pbuz1=pbuc1 + //SEG592 [271] phi from init::@1 to init::@2 [phi:init::@1->init::@2] + //SEG593 [271] phi (byte*) init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:init::@1->init::@2#0] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG548 [250] phi (byte) init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#1] -- vbuxx=vbuc1 + //SEG594 [271] phi (byte) init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@1->init::@2#1] -- vbuxx=vbuc1 ldx #0 - //SEG549 [250] phi from init::@2 to init::@2 [phi:init::@2->init::@2] - //SEG550 [250] phi (byte*) init::pli#2 = (byte*) init::pli#1 [phi:init::@2->init::@2#0] -- register_copy - //SEG551 [250] phi (byte) init::j#2 = (byte) init::j#1 [phi:init::@2->init::@2#1] -- register_copy - //SEG552 init::@2 + //SEG595 [271] phi from init::@2 to init::@2 [phi:init::@2->init::@2] + //SEG596 [271] phi (byte*) init::pli#2 = (byte*) init::pli#1 [phi:init::@2->init::@2#0] -- register_copy + //SEG597 [271] phi (byte) init::j#2 = (byte) init::j#1 [phi:init::@2->init::@2#1] -- register_copy + //SEG598 init::@2 b2: - //SEG553 [251] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG599 [272] (byte~) init::$8 ← (byte) init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG554 [252] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG600 [273] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) init::$8) ← (byte*) init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG555 [253] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- pbuz1=pbuz1_plus_vbuc1 + //SEG601 [274] (byte*) init::pli#1 ← (byte*) init::pli#2 + (byte/signed byte/word/signed word/dword/signed dword) 10 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #$a @@ -11426,33 +11927,33 @@ init: { bcc !+ inc pli+1 !: - //SEG556 [254] (byte) init::j#1 ← ++ (byte) init::j#2 -- vbuxx=_inc_vbuxx + //SEG602 [275] (byte) init::j#1 ← ++ (byte) init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG557 [255] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG603 [276] if((byte) init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b2 - //SEG558 [256] phi from init::@2 to init::@3 [phi:init::@2->init::@3] - //SEG559 [256] phi (byte) init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuz1=vbuc1 + //SEG604 [277] phi from init::@2 to init::@3 [phi:init::@2->init::@3] + //SEG605 [277] phi (byte) init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@2->init::@3#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG560 [256] phi (byte*) init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:init::@2->init::@3#1] -- pbuz1=pbuc1 + //SEG606 [277] phi (byte*) init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:init::@2->init::@3#1] -- pbuz1=pbuc1 lda #COLS+$e sta line+1 - //SEG561 [256] phi from init::@7 to init::@3 [phi:init::@7->init::@3] - //SEG562 [256] phi (byte) init::l#4 = (byte) init::l#1 [phi:init::@7->init::@3#0] -- register_copy - //SEG563 [256] phi (byte*) init::line#4 = (byte*) init::line#1 [phi:init::@7->init::@3#1] -- register_copy - //SEG564 init::@3 + //SEG607 [277] phi from init::@7 to init::@3 [phi:init::@7->init::@3] + //SEG608 [277] phi (byte) init::l#4 = (byte) init::l#1 [phi:init::@7->init::@3#0] -- register_copy + //SEG609 [277] phi (byte*) init::line#4 = (byte*) init::line#1 [phi:init::@7->init::@3#1] -- register_copy + //SEG610 init::@3 b3: - //SEG565 [257] phi from init::@3 to init::@4 [phi:init::@3->init::@4] - //SEG566 [257] phi (byte) init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@4#0] -- vbuxx=vbuc1 + //SEG611 [278] phi from init::@3 to init::@4 [phi:init::@3->init::@4] + //SEG612 [278] phi (byte) init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG567 [257] phi from init::@4 to init::@4 [phi:init::@4->init::@4] - //SEG568 [257] phi (byte) init::c#2 = (byte) init::c#1 [phi:init::@4->init::@4#0] -- register_copy - //SEG569 init::@4 + //SEG613 [278] phi from init::@4 to init::@4 [phi:init::@4->init::@4] + //SEG614 [278] phi (byte) init::c#2 = (byte) init::c#1 [phi:init::@4->init::@4#0] -- register_copy + //SEG615 init::@4 b4: - //SEG570 [258] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 -- pbuz1=pbuz2_plus_vbuxx + //SEG616 [279] (byte*~) init::$13 ← (byte*) init::line#4 + (byte) init::c#2 -- pbuz1=pbuz2_plus_vbuxx txa clc adc line @@ -11460,17 +11961,17 @@ init: { lda #0 adc line+1 sta _13+1 - //SEG571 [259] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG617 [280] *((byte*~) init::$13) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (_13),y - //SEG572 [260] (byte) init::c#1 ← ++ (byte) init::c#2 -- vbuxx=_inc_vbuxx + //SEG618 [281] (byte) init::c#1 ← ++ (byte) init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG573 [261] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG619 [282] if((byte) init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS+1+1 bne b4 - //SEG574 init::@7 - //SEG575 [262] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG620 init::@7 + //SEG621 [283] (byte*) init::line#1 ← (byte*) init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -11478,21 +11979,21 @@ init: { bcc !+ inc line+1 !: - //SEG576 [263] (byte) init::l#1 ← ++ (byte) init::l#4 -- vbuz1=_inc_vbuz1 + //SEG622 [284] (byte) init::l#1 ← ++ (byte) init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG577 [264] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG623 [285] if((byte) init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto init::@3 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES+1+1 bne b3 - //SEG578 init::@return - //SEG579 [265] return + //SEG624 init::@return + //SEG625 [286] return rts } -//SEG580 fill +//SEG626 fill fill: { - .label end = $b + .label end = $c .label addr = 5 - //SEG581 [267] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG627 [288] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -11500,28 +12001,28 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG582 [268] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] - //SEG583 [268] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy - //SEG584 fill::@1 + //SEG628 [289] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG629 [289] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG630 fill::@1 b1: - //SEG585 [269] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG631 [290] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG586 [270] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG632 [291] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG587 [271] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG633 [292] 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 - //SEG588 fill::@return - //SEG589 [272] return + //SEG634 fill::@return + //SEG635 [293] 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 2b04a6d00..1bd4352ee 100644 --- a/src/test/ref/examples/tetris/tetris.sym +++ b/src/test/ref/examples/tetris/tetris.sym @@ -1,4 +1,4 @@ -(label) @20 +(label) @21 (label) @begin (label) @end (byte) BLACK @@ -55,8 +55,7 @@ (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 -(byte()) collision((byte) collision::ypos , (byte) collision::xpos) -(byte~) collision::$1 reg byte a 202.0 +(byte()) collision((byte) collision::xpos , (byte) collision::ypos , (byte) collision::orientation) (byte~) collision::$7 reg byte a 2002.0 (label) collision::@1 (label) collision::@17 @@ -71,91 +70,105 @@ (label) collision::@return (byte) collision::c (byte) collision::c#1 reg byte x 1001.0 -(byte) collision::c#2 reg byte x 333.6666666666667 +(byte) collision::c#2 reg byte x 222.44444444444446 (byte) collision::col -(byte) collision::col#0 reg byte y 1001.0 +(byte) collision::col#1 col zp ZP_BYTE:11 500.5 +(byte) collision::col#2 col zp ZP_BYTE:11 638.25 +(byte~) collision::col#9 col zp ZP_BYTE:11 202.0 (byte) collision::i -(byte) collision::i#1 i zp ZP_BYTE:23 175.25 -(byte~) collision::i#11 i#11 zp ZP_BYTE:9 202.0 -(byte~) collision::i#13 i#13 zp ZP_BYTE:9 2002.0 -(byte) collision::i#2 i#2 zp ZP_BYTE:9 1552.0 -(byte) collision::i#3 i#3 zp ZP_BYTE:9 50.5 +(byte) collision::i#1 i zp ZP_BYTE:24 161.76923076923077 +(byte~) collision::i#11 i#11 zp ZP_BYTE:10 202.0 +(byte~) collision::i#13 i#13 zp ZP_BYTE:10 2002.0 +(byte) collision::i#2 i#2 zp ZP_BYTE:10 1552.0 +(byte) collision::i#3 i#3 zp ZP_BYTE:10 67.33333333333333 (byte) collision::l -(byte) collision::l#1 l zp ZP_BYTE:8 101.0 -(byte) collision::l#2 l zp ZP_BYTE:8 18.9375 -(byte) collision::line -(byte) collision::line#0 line zp ZP_BYTE:22 80.2 +(byte) collision::l#1 l zp ZP_BYTE:9 101.0 +(byte) collision::l#6 l zp ZP_BYTE:9 12.625 +(byte) collision::orientation +(byte) collision::orientation#0 reg byte x 2.0 +(byte) collision::orientation#1 reg byte x 2.0 +(byte) collision::orientation#2 reg byte x 2.0 +(byte) collision::orientation#3 reg byte x 2.0 +(byte) collision::orientation#4 reg byte x 10.0 +(byte*) collision::piece_gfx +(byte*) collision::piece_gfx#0 piece_gfx zp ZP_WORD:5 47.76190476190476 (byte*) collision::playfield_line -(byte*) collision::playfield_line#0 playfield_line zp ZP_WORD:20 84.76923076923077 +(byte*) collision::playfield_line#0 playfield_line zp ZP_WORD:22 78.71428571428571 (byte) collision::return (byte) collision::return#0 reg byte a 4.0 -(byte) collision::return#10 reg byte a 1.2000000000000002 -(byte) collision::return#11 reg byte a 4.0 +(byte) collision::return#1 reg byte a 4.0 (byte) collision::return#12 reg byte a 4.0 +(byte) collision::return#13 reg byte a 4.0 +(byte) collision::return#14 reg byte a 1.3333333333333333 (byte) collision::xpos -(byte) collision::xpos#0 xpos zp ZP_BYTE:7 2.0 -(byte) collision::xpos#1 xpos zp ZP_BYTE:7 1.3333333333333333 -(byte) collision::xpos#2 xpos zp ZP_BYTE:7 1.3333333333333333 -(byte) collision::xpos#8 xpos zp ZP_BYTE:7 50.349999999999994 +(byte) collision::xpos#0 xpos zp ZP_BYTE:7 1.3333333333333333 +(byte) collision::xpos#1 xpos zp ZP_BYTE:7 1.0 +(byte) collision::xpos#2 xpos zp ZP_BYTE:7 1.0 +(byte) collision::xpos#3 xpos zp ZP_BYTE:7 1.0 +(byte) collision::xpos#5 xpos zp ZP_BYTE:7 4.954545454545454 (byte) collision::ypos -(byte) collision::ypos#0 ypos zp ZP_BYTE:4 1.3333333333333333 -(byte) collision::ypos#1 ypos zp ZP_BYTE:4 2.0 -(byte) collision::ypos#2 ypos zp ZP_BYTE:4 2.0 -(byte) collision::ypos#4 ypos zp ZP_BYTE:4 5.35 +(byte) collision::ypos#0 reg byte y 1.0 +(byte) collision::ypos#1 reg byte y 1.3333333333333333 +(byte) collision::ypos#2 reg byte y 1.3333333333333333 +(byte) collision::ypos#3 reg byte y 1.3333333333333333 +(byte) collision::ypos#4 reg byte y 5.0 +(byte) collision::ypos2 +(byte) collision::ypos2#0 ypos2 zp ZP_BYTE:8 4.0 +(byte) collision::ypos2#1 ypos2 zp ZP_BYTE:8 50.5 +(byte) collision::ypos2#2 ypos2 zp ZP_BYTE:8 87.06666666666668 (byte) current_movedown_counter (byte) current_movedown_counter#10 current_movedown_counter zp ZP_BYTE:3 0.5333333333333333 -(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:3 0.6190476190476191 +(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:3 0.5 (byte) current_movedown_counter#15 current_movedown_counter zp ZP_BYTE:3 1.3 (byte) current_movedown_rate (const byte) current_movedown_rate#0 current_movedown_rate = (byte/signed byte/word/signed word/dword/signed dword) 50 (byte) current_movedown_rate_fast (const byte) current_movedown_rate_fast#0 current_movedown_rate_fast = (byte/signed byte/word/signed word/dword/signed dword) 5 (byte*) current_piece -(byte*) current_piece#11 current_piece zp ZP_WORD:11 0.45454545454545453 -(byte*) current_piece#13 current_piece zp ZP_WORD:11 0.37254901960784303 -(byte*) current_piece#23 current_piece zp ZP_WORD:11 4.0 +(byte*) current_piece#11 current_piece zp ZP_WORD:12 0.5 +(byte*) current_piece#13 current_piece zp ZP_WORD:12 0.3382352941176471 +(byte*) current_piece#15 current_piece#15 zp ZP_WORD:5 10.0 +(byte*) current_piece#23 current_piece zp ZP_WORD:12 4.0 +(byte*~) current_piece#67 current_piece#67 zp ZP_WORD:5 4.0 +(byte*~) current_piece#68 current_piece#68 zp ZP_WORD:5 4.0 +(byte*~) current_piece#69 current_piece#69 zp ZP_WORD:5 4.0 +(byte*~) current_piece#70 current_piece#70 zp ZP_WORD:5 4.0 (byte) current_piece_color -(byte) current_piece_color#11 current_piece_color zp ZP_BYTE:16 20.73469387755102 -(byte) current_piece_color#13 current_piece_color zp ZP_BYTE:16 1.2380952380952381 -(byte) current_piece_color#23 current_piece_color zp ZP_BYTE:16 4.0 -(byte) current_piece_color#62 current_piece_color#62 zp ZP_BYTE:8 56.22222222222223 -(byte~) current_piece_color#69 current_piece_color#69 zp ZP_BYTE:8 22.0 +(byte) current_piece_color#11 current_piece_color zp ZP_BYTE:17 20.32 +(byte) current_piece_color#13 current_piece_color zp ZP_BYTE:17 1.0 +(byte) current_piece_color#23 current_piece_color zp ZP_BYTE:17 4.0 +(byte) current_piece_color#63 current_piece_color#63 zp ZP_BYTE:7 53.26315789473684 +(byte~) current_piece_color#70 current_piece_color#70 zp ZP_BYTE:7 22.0 (byte*) current_piece_gfx -(byte*) current_piece_gfx#10 current_piece_gfx zp ZP_WORD:14 4.0 -(byte*~) current_piece_gfx#108 current_piece_gfx#108 zp ZP_WORD:5 4.0 -(byte*~) current_piece_gfx#109 current_piece_gfx#109 zp ZP_WORD:5 4.0 -(byte*) current_piece_gfx#11 current_piece_gfx zp ZP_WORD:14 2.375 -(byte*~) current_piece_gfx#110 current_piece_gfx#110 zp ZP_WORD:5 4.0 -(byte*) current_piece_gfx#16 current_piece_gfx zp ZP_WORD:14 20.77551020408163 -(byte*) current_piece_gfx#18 current_piece_gfx zp ZP_WORD:14 0.6896551724137933 -(byte*) current_piece_gfx#30 current_piece_gfx zp ZP_WORD:14 4.0 -(byte*) current_piece_gfx#46 current_piece_gfx#46 zp ZP_WORD:5 50.349999999999994 -(byte*) current_piece_gfx#75 current_piece_gfx#75 zp ZP_WORD:5 56.22222222222223 -(byte*) current_piece_gfx#9 current_piece_gfx zp ZP_WORD:14 4.0 -(byte*~) current_piece_gfx#99 current_piece_gfx#99 zp ZP_WORD:5 7.333333333333333 +(byte*) current_piece_gfx#15 current_piece_gfx zp ZP_WORD:15 20.32 +(byte*) current_piece_gfx#17 current_piece_gfx zp ZP_WORD:15 0.2857142857142857 +(byte*) current_piece_gfx#18 current_piece_gfx zp ZP_WORD:15 1.75 +(byte*) current_piece_gfx#29 current_piece_gfx zp ZP_WORD:15 4.0 +(byte*) current_piece_gfx#61 current_piece_gfx#61 zp ZP_WORD:5 53.26315789473684 +(byte*) current_piece_gfx#8 current_piece_gfx zp ZP_WORD:15 4.0 +(byte*~) current_piece_gfx#82 current_piece_gfx#82 zp ZP_WORD:5 11.0 (byte) current_piece_orientation -(byte) current_piece_orientation#10 current_piece_orientation zp ZP_BYTE:13 3.0 -(byte) current_piece_orientation#11 current_piece_orientation zp ZP_BYTE:13 1.6875 -(byte) current_piece_orientation#16 current_piece_orientation zp ZP_BYTE:13 0.45454545454545453 -(byte) current_piece_orientation#18 current_piece_orientation zp ZP_BYTE:13 0.6896551724137933 -(byte) current_piece_orientation#29 current_piece_orientation zp ZP_BYTE:13 4.0 -(byte) current_piece_orientation#9 current_piece_orientation zp ZP_BYTE:13 3.0 +(byte) current_piece_orientation#15 current_piece_orientation zp ZP_BYTE:14 0.5 +(byte) current_piece_orientation#18 current_piece_orientation zp ZP_BYTE:14 0.32 +(byte) current_piece_orientation#23 current_piece_orientation zp ZP_BYTE:14 1.0625 +(byte) current_piece_orientation#33 current_piece_orientation zp ZP_BYTE:14 4.0 +(byte) current_piece_orientation#8 current_piece_orientation zp ZP_BYTE:14 3.0 (byte) current_xpos -(byte) current_xpos#10 current_xpos zp ZP_BYTE:17 4.0 -(byte) current_xpos#11 current_xpos zp ZP_BYTE:17 2.375 -(byte) current_xpos#16 current_xpos zp ZP_BYTE:17 20.77551020408163 -(byte) current_xpos#19 current_xpos zp ZP_BYTE:17 0.7272727272727271 -(byte) current_xpos#35 current_xpos zp ZP_BYTE:17 4.0 -(byte) current_xpos#81 current_xpos#81 zp ZP_BYTE:7 56.22222222222223 -(byte) current_xpos#9 current_xpos zp ZP_BYTE:17 4.0 -(byte~) current_xpos#91 current_xpos#91 zp ZP_BYTE:7 11.0 +(byte) current_xpos#16 current_xpos zp ZP_BYTE:18 20.36 +(byte) current_xpos#19 current_xpos zp ZP_BYTE:18 0.72 +(byte) current_xpos#23 current_xpos zp ZP_BYTE:18 0.8292682926829271 +(byte) current_xpos#36 current_xpos zp ZP_BYTE:18 4.0 +(byte) current_xpos#62 current_xpos#62 zp ZP_BYTE:4 5.894736842105264 +(byte) current_xpos#7 current_xpos zp ZP_BYTE:18 4.0 +(byte) current_xpos#9 current_xpos zp ZP_BYTE:18 4.0 +(byte~) current_xpos#92 current_xpos#92 zp ZP_BYTE:4 7.333333333333333 (byte) current_ypos -(byte) current_ypos#12 current_ypos zp ZP_BYTE:2 2.458333333333333 -(byte) current_ypos#16 current_ypos zp ZP_BYTE:2 0.588235294117647 -(byte) current_ypos#30 current_ypos zp ZP_BYTE:2 4.0 -(byte) current_ypos#35 current_ypos#35 zp ZP_BYTE:4 6.222222222222221 +(byte) current_ypos#12 current_ypos zp ZP_BYTE:2 2.4081632653061225 +(byte) current_ypos#16 current_ypos zp ZP_BYTE:2 0.4705882352941177 +(byte) current_ypos#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#75 current_ypos#75 zp ZP_BYTE:4 5.5 +(byte~) current_ypos#72 reg byte x 5.5 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (label) fill::@1 (label) fill::@return @@ -164,13 +177,13 @@ (byte*) fill::addr#1 addr zp ZP_WORD:5 16.5 (byte*) fill::addr#2 addr zp ZP_WORD:5 17.5 (byte*) fill::end -(byte*) fill::end#0 end zp ZP_WORD:11 2.6 +(byte*) fill::end#0 end zp ZP_WORD:12 2.6 (word) fill::size (byte*) fill::start (byte) fill::val (byte) fill::val#3 reg byte x 1.8333333333333333 (void()) init() -(byte*~) init::$13 $13 zp ZP_WORD:11 202.0 +(byte*~) init::$13 $13 zp ZP_WORD:12 202.0 (byte~) init::$5 reg byte a 22.0 (byte~) init::$8 reg byte a 22.0 (label) init::@1 @@ -274,15 +287,15 @@ (byte[8]) keyboard_events (const byte[8]) keyboard_events#0 keyboard_events = { fill( 8, 0) } (byte) keyboard_events_size -(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:18 2002.0 -(byte) keyboard_events_size#10 keyboard_events_size zp ZP_BYTE:18 810.9000000000001 -(byte) keyboard_events_size#13 keyboard_events_size zp ZP_BYTE:18 9.967741935483872 -(byte) keyboard_events_size#16 keyboard_events_size zp ZP_BYTE:18 0.6 -(byte) keyboard_events_size#19 keyboard_events_size zp ZP_BYTE:18 2.6 -(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:18 2002.0 -(byte) keyboard_events_size#29 keyboard_events_size zp ZP_BYTE:18 43.57142857142858 -(byte) keyboard_events_size#30 keyboard_events_size zp ZP_BYTE:18 1021.2 -(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:18 3.0 +(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:19 2002.0 +(byte) keyboard_events_size#10 keyboard_events_size zp ZP_BYTE:19 810.9000000000001 +(byte) keyboard_events_size#13 keyboard_events_size zp ZP_BYTE:19 9.967741935483872 +(byte) keyboard_events_size#16 keyboard_events_size zp ZP_BYTE:19 0.49999999999999994 +(byte) keyboard_events_size#19 keyboard_events_size zp ZP_BYTE:19 2.6 +(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:19 2002.0 +(byte) keyboard_events_size#29 keyboard_events_size zp ZP_BYTE:19 43.57142857142858 +(byte) keyboard_events_size#30 keyboard_events_size zp ZP_BYTE:19 1021.2 +(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:19 3.0 (byte[8]) keyboard_matrix_col_bitmask (const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } (byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid) @@ -325,6 +338,7 @@ (byte*) lock_current::playfield_line (byte*) lock_current::playfield_line#0 playfield_line zp ZP_WORD:5 122.44444444444446 (void()) main() +(byte~) main::$10 reg byte a 22.0 (byte~) main::$8 reg byte a 22.0 (byte~) main::$9 reg byte a 22.0 (label) main::@1 @@ -339,77 +353,89 @@ (label) main::@28 (label) main::@29 (label) main::@30 +(label) main::@31 (label) main::@4 (label) main::@7 (label) main::@9 (byte) main::key_event -(byte) main::key_event#0 key_event zp ZP_BYTE:10 5.5 +(byte) main::key_event#0 key_event zp ZP_BYTE:20 4.0 (byte) main::render -(byte) main::render#1 render zp ZP_BYTE:19 4.4 -(byte) main::render#2 reg byte a 22.0 +(byte) main::render#1 render zp ZP_BYTE:21 4.4 +(byte) main::render#2 render zp ZP_BYTE:21 4.4 +(byte) main::render#3 reg byte a 22.0 (byte[4*4*4]) piece_t (const byte[4*4*4]) piece_t#0 piece_t = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } -(byte()) play_movedown((byte) play_movedown::key_event) -(byte~) play_movedown::$12 reg byte a 4.0 -(byte~) play_movedown::$2 reg byte a 4.0 -(label) play_movedown::@1 -(label) play_movedown::@10 -(label) play_movedown::@11 -(label) play_movedown::@12 -(label) play_movedown::@13 -(label) play_movedown::@17 -(label) play_movedown::@18 -(label) play_movedown::@19 -(label) play_movedown::@2 -(label) play_movedown::@4 -(label) play_movedown::@6 -(label) play_movedown::@7 -(label) play_movedown::@8 -(label) play_movedown::@9 -(label) play_movedown::@return -(byte) play_movedown::key_event -(byte) play_movedown::key_event#0 reg byte a 6.5 -(byte) play_movedown::movedown -(byte) play_movedown::movedown#10 reg byte x 1.0 -(byte) play_movedown::movedown#2 reg byte x 4.0 -(byte) play_movedown::movedown#3 reg byte x 4.0 -(byte) play_movedown::movedown#6 reg byte x 6.0 -(byte) play_movedown::movedown#7 reg byte x 5.0 -(byte) play_movedown::return -(byte) play_movedown::return#0 reg byte a 22.0 -(byte) play_movedown::return#3 reg byte x 3.6666666666666665 -(byte()) play_moveother((byte) play_moveother::key_event) -(byte~) play_moveother::$0 reg byte a 4.0 -(byte/signed word/word/dword/signed dword~) play_moveother::$11 reg byte a 4.0 -(byte~) play_moveother::$15 reg byte a 4.0 -(byte~) play_moveother::$19 reg byte a 4.0 -(byte/signed word/word/dword/signed dword~) play_moveother::$8 reg byte a 4.0 -(label) play_moveother::@1 -(label) play_moveother::@11 -(label) play_moveother::@12 -(label) play_moveother::@13 -(label) play_moveother::@14 -(label) play_moveother::@15 -(label) play_moveother::@18 -(label) play_moveother::@2 -(label) play_moveother::@20 -(label) play_moveother::@22 -(label) play_moveother::@23 -(label) play_moveother::@3 -(label) play_moveother::@4 -(label) play_moveother::@return -(byte) play_moveother::key_event -(byte) play_moveother::key_event#0 reg byte x 3.5000000000000004 -(byte) play_moveother::render -(byte) play_moveother::return -(byte) play_moveother::return#0 reg byte a 22.0 -(byte) play_moveother::return#1 reg byte a 3.6666666666666665 +(byte()) play_move_down((byte) play_move_down::key_event) +(byte~) play_move_down::$12 reg byte a 4.0 +(byte~) play_move_down::$2 reg byte a 4.0 +(label) play_move_down::@1 +(label) play_move_down::@10 +(label) play_move_down::@11 +(label) play_move_down::@12 +(label) play_move_down::@13 +(label) play_move_down::@17 +(label) play_move_down::@18 +(label) play_move_down::@19 +(label) play_move_down::@2 +(label) play_move_down::@4 +(label) play_move_down::@6 +(label) play_move_down::@7 +(label) play_move_down::@8 +(label) play_move_down::@9 +(label) play_move_down::@return +(byte) play_move_down::key_event +(byte) play_move_down::key_event#0 reg byte a 6.5 +(byte) play_move_down::movedown +(byte) play_move_down::movedown#10 reg byte x 1.0 +(byte) play_move_down::movedown#2 reg byte x 4.0 +(byte) play_move_down::movedown#3 reg byte x 4.0 +(byte) play_move_down::movedown#6 reg byte x 6.0 +(byte) play_move_down::movedown#7 reg byte x 5.0 +(byte) play_move_down::return +(byte) play_move_down::return#0 reg byte a 22.0 +(byte) play_move_down::return#3 reg byte x 3.6666666666666665 +(byte()) play_move_leftright((byte) play_move_leftright::key_event) +(byte~) play_move_leftright::$4 reg byte a 4.0 +(byte~) play_move_leftright::$8 reg byte a 4.0 +(label) play_move_leftright::@1 +(label) play_move_leftright::@11 +(label) play_move_leftright::@14 +(label) play_move_leftright::@15 +(label) play_move_leftright::@6 +(label) play_move_leftright::@7 +(label) play_move_leftright::@8 +(label) play_move_leftright::@return +(byte) play_move_leftright::key_event +(byte) play_move_leftright::key_event#0 reg byte a 7.5 +(byte) play_move_leftright::return +(byte) play_move_leftright::return#0 reg byte a 22.0 +(byte) play_move_leftright::return#2 reg byte a 3.6666666666666665 +(byte()) play_move_rotate((byte) play_move_rotate::key_event) +(byte/signed word/word/dword/signed dword~) play_move_rotate::$2 reg byte a 4.0 +(byte/signed word/word/dword/signed dword~) play_move_rotate::$4 reg byte a 4.0 +(byte~) play_move_rotate::$6 reg byte a 4.0 +(byte~) play_move_rotate::$8 reg byte a 4.0 +(label) play_move_rotate::@1 +(label) play_move_rotate::@11 +(label) play_move_rotate::@14 +(label) play_move_rotate::@2 +(label) play_move_rotate::@4 +(label) play_move_rotate::@6 +(label) play_move_rotate::@return +(byte) play_move_rotate::key_event +(byte) play_move_rotate::key_event#0 reg byte a 7.5 +(byte) play_move_rotate::orientation +(byte) play_move_rotate::orientation#1 orientation zp ZP_BYTE:4 4.0 +(byte) play_move_rotate::orientation#2 orientation zp ZP_BYTE:4 4.0 +(byte) play_move_rotate::orientation#3 orientation zp ZP_BYTE:4 0.8 +(byte) play_move_rotate::return +(byte) play_move_rotate::return#0 reg byte a 22.0 +(byte) play_move_rotate::return#2 reg byte a 3.6666666666666665 (byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 playfield = { fill( PLAYFIELD_LINES#0*PLAYFIELD_COLS#0, 0) } (byte*[PLAYFIELD_LINES#0]) playfield_lines (const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 playfield_lines = { fill( PLAYFIELD_LINES#0, 0) } (void()) render_current() -(byte~) render_current::$3 reg byte a 202.0 (label) render_current::@1 (label) render_current::@2 (label) render_current::@3 @@ -420,33 +446,36 @@ (label) render_current::@return (byte) render_current::c (byte) render_current::c#1 reg byte x 1501.5 -(byte) render_current::c#2 reg byte x 429.0 +(byte) render_current::c#2 reg byte x 286.0 (byte) render_current::current_cell (byte) render_current::current_cell#0 reg byte a 1001.0 (byte) render_current::i (byte) render_current::i#1 i zp ZP_BYTE:10 429.0 (byte) render_current::i#2 i zp ZP_BYTE:10 1552.0 -(byte) render_current::i#4 i zp ZP_BYTE:10 60.599999999999994 -(byte) render_current::i#8 i zp ZP_BYTE:10 401.0 +(byte) render_current::i#4 i zp ZP_BYTE:10 75.75 +(byte) render_current::i#8 i zp ZP_BYTE:10 300.75 (byte) render_current::l (byte) render_current::l#1 l zp ZP_BYTE:9 151.5 -(byte) render_current::l#2 l zp ZP_BYTE:9 20.2 -(byte) render_current::line -(byte) render_current::line#0 reg byte a 151.5 +(byte) render_current::l#3 l zp ZP_BYTE:9 13.466666666666667 (byte*) render_current::screen_line -(byte*) render_current::screen_line#0 screen_line zp ZP_WORD:20 110.19999999999999 +(byte*) render_current::screen_line#0 screen_line zp ZP_WORD:22 100.18181818181819 (byte) render_current::xpos -(byte) render_current::xpos#0 reg byte a 1501.5 +(byte) render_current::xpos#0 xpos zp ZP_BYTE:11 202.0 +(byte) render_current::xpos#1 xpos zp ZP_BYTE:11 667.3333333333334 +(byte) render_current::xpos#2 xpos zp ZP_BYTE:11 684.1666666666667 +(byte) render_current::ypos2 +(byte) render_current::ypos2#0 ypos2 zp ZP_BYTE:8 4.0 +(byte) render_current::ypos2#1 ypos2 zp ZP_BYTE:8 67.33333333333333 +(byte) render_current::ypos2#2 ypos2 zp ZP_BYTE:8 29.000000000000004 (void()) render_playfield() (byte~) render_playfield::$1 reg byte a 202.0 -(byte*~) render_playfield::$3 $3 zp ZP_WORD:20 2002.0 (label) render_playfield::@1 (label) render_playfield::@2 (label) render_playfield::@3 (label) render_playfield::@return (byte) render_playfield::c (byte) render_playfield::c#1 reg byte x 1501.5 -(byte) render_playfield::c#2 reg byte x 750.75 +(byte) render_playfield::c#2 reg byte x 500.5 (byte) render_playfield::i (byte) render_playfield::i#1 i zp ZP_BYTE:7 420.59999999999997 (byte) render_playfield::i#2 i zp ZP_BYTE:7 1034.6666666666667 @@ -455,71 +484,78 @@ (byte) render_playfield::l#1 l zp ZP_BYTE:4 151.5 (byte) render_playfield::l#2 l zp ZP_BYTE:4 33.666666666666664 (byte*) render_playfield::line -(byte*) render_playfield::line#0 line zp ZP_WORD:5 157.42857142857142 +(byte*) render_playfield::line#0 line zp ZP_WORD:5 202.0 +(byte*) render_playfield::line#1 line zp ZP_WORD:5 500.5 +(byte*) render_playfield::line#2 line zp ZP_WORD:5 1552.0 (byte*[PLAYFIELD_LINES#0+3]) screen_lines (const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 screen_lines = { fill( PLAYFIELD_LINES#0+3, 0) } (void()) spawn_current() (label) spawn_current::@return -zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#30 current_ypos#4 init::l#4 init::l#1 ] +zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 init::l#4 init::l#1 ] zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 lock_current::l#2 lock_current::l#1 ] -zp ZP_BYTE:4 [ current_ypos#35 current_ypos#75 render_playfield::l#2 render_playfield::l#1 collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 lock_current::i#2 lock_current::i#3 lock_current::i#1 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -zp ZP_WORD:5 [ current_piece_gfx#75 current_piece_gfx#99 current_piece_gfx#46 current_piece_gfx#108 current_piece_gfx#109 current_piece_gfx#110 init::li#2 init::li#1 init::pli#2 init::pli#1 init::line#4 init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 render_playfield::line#0 lock_current::playfield_line#0 ] -zp ZP_BYTE:7 [ current_xpos#81 current_xpos#91 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#8 collision::xpos#0 collision::xpos#1 collision::xpos#2 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 [ current_piece_color#62 current_piece_color#69 collision::l#2 collision::l#1 keyboard_event_scan::row_scan#0 ] -zp ZP_BYTE:9 [ render_current::l#2 render_current::l#1 collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] -zp ZP_BYTE:10 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 main::key_event#0 ] +reg byte x [ current_ypos#22 current_ypos#72 ] +zp ZP_BYTE:4 [ current_xpos#62 current_xpos#92 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 lock_current::i#2 lock_current::i#3 lock_current::i#1 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +zp ZP_WORD:5 [ current_piece_gfx#61 current_piece_gfx#82 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#67 current_piece#68 current_piece#69 current_piece#70 collision::piece_gfx#0 init::li#2 init::li#1 init::pli#2 init::pli#1 init::line#4 init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 lock_current::playfield_line#0 ] +zp ZP_BYTE:7 [ current_piece_color#63 current_piece_color#70 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 keyboard_event_pressed::row_bits#0 ] +zp ZP_BYTE:8 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 keyboard_event_scan::row_scan#0 ] +zp ZP_BYTE: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 ] reg byte x [ render_current::c#2 render_current::c#1 ] reg byte x [ render_playfield::c#2 render_playfield::c#1 ] -reg byte a [ play_moveother::return#1 ] +reg byte a [ play_move_rotate::return#2 ] +reg byte x [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] +reg byte y [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] reg byte x [ collision::c#2 collision::c#1 ] -reg byte a [ collision::return#10 ] -reg byte x [ play_movedown::movedown#6 play_movedown::movedown#3 play_movedown::movedown#7 play_movedown::movedown#2 play_movedown::movedown#10 ] -zp ZP_WORD:11 [ current_piece#23 current_piece#11 current_piece#13 init::$13 fill::end#0 ] -zp ZP_BYTE:13 [ current_piece_orientation#29 current_piece_orientation#16 current_piece_orientation#11 current_piece_orientation#18 current_piece_orientation#10 current_piece_orientation#9 ] -zp ZP_WORD:14 [ current_piece_gfx#30 current_piece_gfx#16 current_piece_gfx#11 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#9 ] -zp ZP_BYTE:16 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] -zp ZP_BYTE:17 [ current_xpos#35 current_xpos#16 current_xpos#11 current_xpos#19 current_xpos#9 current_xpos#10 ] -reg byte x [ play_movedown::return#3 ] +reg byte a [ collision::return#14 ] +reg byte a [ play_move_leftright::return#2 ] +reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] +zp ZP_WORD:12 [ current_piece#23 current_piece#11 current_piece#13 init::$13 fill::end#0 ] +zp ZP_BYTE:14 [ current_piece_orientation#33 current_piece_orientation#15 current_piece_orientation#23 current_piece_orientation#8 current_piece_orientation#18 ] +zp ZP_WORD:15 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#8 current_piece_gfx#17 ] +zp ZP_BYTE:17 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 ] +zp ZP_BYTE:18 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +reg byte x [ play_move_down::return#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 ] -zp ZP_BYTE:18 [ 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:19 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] reg byte x [ init::i#2 init::i#1 ] reg byte x [ init::j#2 init::j#1 ] reg byte x [ init::c#2 init::c#1 ] reg byte x [ fill::val#3 ] reg byte a [ keyboard_event_get::return#3 ] -reg byte a [ play_movedown::key_event#0 ] -reg byte a [ play_movedown::return#0 ] +zp ZP_BYTE:20 [ main::key_event#0 ] +reg byte a [ play_move_down::key_event#0 ] +reg byte a [ play_move_down::return#0 ] reg byte a [ main::$8 ] -zp ZP_BYTE:19 [ main::render#1 ] -reg byte x [ play_moveother::key_event#0 ] -reg byte a [ play_moveother::return#0 ] +zp ZP_BYTE:21 [ main::render#1 main::render#2 ] +reg byte a [ play_move_leftright::key_event#0 ] +reg byte a [ play_move_leftright::return#0 ] reg byte a [ main::$9 ] -reg byte a [ main::render#2 ] -reg byte a [ render_current::line#0 ] -reg byte a [ render_current::$3 ] -zp ZP_WORD:20 [ render_current::screen_line#0 render_playfield::$3 collision::playfield_line#0 ] +reg byte a [ play_move_rotate::key_event#0 ] +reg byte a [ play_move_rotate::return#0 ] +reg byte a [ main::$10 ] +reg byte a [ main::render#3 ] +zp ZP_WORD:22 [ render_current::screen_line#0 collision::playfield_line#0 ] reg byte a [ render_current::current_cell#0 ] -reg byte a [ render_current::xpos#0 ] reg byte a [ render_playfield::$1 ] -reg byte a [ play_moveother::$0 ] -reg byte a [ play_moveother::$8 ] -reg byte a [ play_moveother::$11 ] -reg byte a [ collision::return#12 ] -reg byte a [ play_moveother::$15 ] -reg byte a [ collision::return#11 ] -reg byte a [ play_moveother::$19 ] -zp ZP_BYTE:22 [ collision::line#0 ] -reg byte a [ collision::$1 ] -zp ZP_BYTE:23 [ collision::i#1 ] -reg byte y [ collision::col#0 ] +reg byte a [ play_move_rotate::$2 ] +reg byte a [ collision::return#13 ] +reg byte a [ play_move_rotate::$6 ] +reg byte a [ play_move_rotate::$8 ] +reg byte a [ play_move_rotate::$4 ] +zp ZP_BYTE:24 [ collision::i#1 ] reg byte a [ collision::$7 ] +reg byte a [ collision::return#12 ] +reg byte a [ play_move_leftright::$4 ] +reg byte a [ collision::return#1 ] +reg byte a [ play_move_leftright::$8 ] reg byte a [ keyboard_event_pressed::return#12 ] -reg byte a [ play_movedown::$2 ] +reg byte a [ play_move_down::$2 ] reg byte a [ collision::return#0 ] -reg byte a [ play_movedown::$12 ] +reg byte a [ play_move_down::$12 ] reg byte a [ lock_current::line#0 ] reg byte a [ lock_current::$1 ] reg byte a [ lock_current::cell#0 ]